1 /* Copyright (C) 2013, 2014 Czech Technical University in Prague
4 * - Carlos Jenkins <carlos@jenkins.co.cr>
6 * This document contains proprietary information belonging to Czech
7 * Technical University in Prague. Passing on and copying of this
8 * document, and communication of its contents is not permitted
9 * without prior written authorization.
11 * File : sfunction_lout.c
13 * C-MEX S-function block for RPP digital output.
20 * <matlabroot>/bin/mex sfunction_lout.c
32 - { name: "Digital Output", type: "bool" }
35 - { name: "ErrFlag", type: "bool" }
38 - { name: "Pin number", type: "uint8", range: "[1-8]" }
40 # Description and Help is in Markdown mark-up
43 Sends the digital value to the specified logic output pin on the RPP
46 An input of 1 sets the pin high and 0 sets the pin low.
48 If an error is detected while setting the pin, the ErrFlag is set
53 This block allows to write to the digital outputs on the RPP board. The ErrFlag should raise if
54 `rpp_lout_set()` or `rpp_lout_update()` returns error. Because the ErrFlag should never set,
55 once set the following steps will never clear it back. `rpp_lout_update()` is called on each
56 block, which is not the most efficient but guaranties consistent behavior.
60 RPP API functions used:
71 #define S_FUNCTION_NAME sfunction_lout
75 static void mdlInitializeSizes(SimStruct *S)
78 * Configure parameters: 1
81 if (!rppSetNumParams(S, 1)) {
86 * Configure input ports: 1
89 if (!ssSetNumInputPorts(S, 1)) {
92 rppAddInputPort(S, 0, SS_BOOLEAN);
95 * Configure output ports: 1
98 if (!ssSetNumOutputPorts(S, 1)) {
101 rppAddOutputPort(S, 0, SS_BOOLEAN);
103 /* Set standard options for this block */
104 rppSetStandardOptions(S);
108 #ifdef MATLAB_MEX_FILE
109 #define MDL_CHECK_PARAMETERS
110 static void mdlCheckParameters(SimStruct *S)
112 /* Check the parameter 1 */
113 if (!rppValidParamRange(S, 0, 1, 8)) {
120 #ifdef MATLAB_MEX_FILE
121 #define MDL_SET_WORK_WIDTHS
122 static void mdlSetWorkWidths(SimStruct *S)
124 /* Set number of run-time parameters */
125 if (!ssSetNumRunTimeParams(S, 1)) {
129 /* Register the run-time parameter 1 */
130 ssRegDlgParamAsRunTimeParam(S, 0, 0, "p1", SS_UINT8);
135 #define COMMON_MDLINITIALIZESAMPLETIMES_INHERIT
136 #define UNUSED_MDLOUTPUTS
137 #define UNUSED_MDLTERMINATE