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_ain.c
13 * C-MEX S-function block for RPP analog input.
20 * <matlabroot>/bin/mex sfunction_ain.c
34 - { name: "Analog Input Pin Number", type: "uint16" }
35 - { name: "ErrFlag", type: "bool" }
38 - { name: "Pin number", type: "uint8", range: "[1–12]" }
40 # Description and Help is in Markdown mark-up
43 This block allows to read the analog inputs on the RPP board. The
44 ErrFlag should if raise `rpp_adc_update()` or `rpp_adc_get()`
45 returns error. `rpp_adc_update()` is called just by the first DIN
46 block in the model and thus only the first block could raise the
47 flag because of this. In case an error occurs the return value will
48 always be 0. Because the ErrFlag should never set, once set the
49 following steps will never clear it back.
56 - Compilation and general use.
58 - Faulty situation for the ErrFlag to set.
61 RPP API functions used:
67 - hbridge_analog_control
73 #define S_FUNCTION_NAME sfunction_ain
77 static void mdlInitializeSizes(SimStruct *S)
80 * Configure parameters: 1
81 * - Pin number: [1-12]
83 if (!rppSetNumParams(S, 1)) {
88 * Configure input ports: 0
90 if (!ssSetNumInputPorts(S, 0)) {
95 * Configure output ports: 2
99 if (!ssSetNumOutputPorts(S, 2)) {
102 rppAddOutputPort(S, 0, SS_UINT16);
103 rppAddOutputPort(S, 1, SS_BOOLEAN);
105 /* Set standard options for this block */
106 rppSetStandardOptions(S);
110 #ifdef MATLAB_MEX_FILE
111 #define MDL_CHECK_PARAMETERS
112 static void mdlCheckParameters(SimStruct *S)
114 /* Check the parameter 1 */
115 if (!rppValidParamRange(S, 0, 1, 12)) {
122 #ifdef MATLAB_MEX_FILE
123 #define MDL_SET_WORK_WIDTHS
124 static void mdlSetWorkWidths(SimStruct *S)
126 /* Set number of run-time parameters */
127 if (!ssSetNumRunTimeParams(S, 1)) {
131 /* Register the run-time parameter 1 */
132 ssRegDlgParamAsRunTimeParam(S, 0, 0, "p1", SS_UINT8);
137 #define COMMON_MDLINITIALIZESAMPLETIMES_INHERIT
138 #define UNUSED_MDLOUTPUTS
139 #define UNUSED_MDLTERMINATE