1 %% Copyright (C) 2013, 2015 Czech Technical University in Prague
4 %% - Carlos Jenkins <carlos@jenkins.co.cr>
5 %% - Michal Horn <hornmich@fel.cvut.cz>
7 %% This document contains proprietary information belonging to Czech
8 %% Technical University in Prague. Passing on and copying of this
9 %% document, and communication of its contents is not permitted
10 %% without prior written authorization.
12 %% File : sfunction_gio_in.tlc
14 %% TLC file for inlining RPP digital input block.
17 %% BlockTypeSetup() : rtw_tlc.pdf p. 277
18 %% Start() : rtw_tlc.pdf p. 279
19 %% Outputs() : rtw_tlc.pdf p. 281
22 %implements sfunction_gio_in "C"
27 %% Function: BlockTypeSetup ====================================================
28 %function BlockTypeSetup(block, system) void
30 %% Ensure required header files are included
31 %<RppCommonBlockTypeSetup(block, system)>
32 %<LibAddToCommonIncludes("rpp/rpp.h")>
33 %assign ::rpp_gio_in_present = 1
37 %function BlockInstanceSetup(block, system) void
38 %assign pin_name = SFcnParamSettings.PinName
40 %% Ensure that every pin is configured only once
41 %if EXISTS("::rpp_gio_%<pin_name>_present") == 0
42 %assign ::rpp_gio_%<pin_name>_present = 1
44 %<LibBlockReportError(block, "GIO pin %<pin_name> has already been configured.")>
48 %% Function: Start =============================================================
49 %function Start(block, system) Output
50 %assign pin_name = SFcnParamSettings.PinName
51 %assign pull_type = SFcnParamSettings.PullType
53 %if !SLibCodeGenForSim()
54 %if pull_type == 1 %% Tri-state
55 rpp_gio_setup(PIN_%<pin_name>, RPP_GIO_IN, RPP_GIO_MODE_PULLDIS, FALSE);
56 %elseif pull_type == 2 %% Pull up
57 rpp_gio_setup(PIN_%<pin_name>, RPP_GIO_IN, RPP_GIO_MODE_PULLUP, FALSE);
58 %elseif pull_type == 3 %% Pull down
59 rpp_gio_setup(PIN_%<pin_name>, RPP_GIO_IN, RPP_GIO_MODE_PULLDOWN, FALSE);
61 %<LibBlockReportError(block, "Bad pull_type value: %<pull_type>")>
68 %% Function: Outputs ===========================================================
69 %function Outputs(block, system) Output
71 %if !SLibCodeGenForSim()
72 %assign digital_in = LibBlockOutputSignal(0, "", "", 0)
73 %assign pin_name = SFcnParamSettings.PinName
74 /% TODO: Handle FAILURE (add error output?) %/
75 %<digital_in> = rpp_gio_get(PIN_%<pin_name>) ? TRUE : FALSE;