1 /* Copyright (C) 2013 Czech Technical University in Prague
4 * - Michal Horn <hornimch@fel.cvut.cz>
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_frayreceive.c
13 * C-MEX S-function block for RPP FlexRay RX buffer configuration and message receiving.
20 * <matlabroot>/bin/mex sfunction_frayreceive.c
24 #define S_FUNCTION_NAME sfunction_frayreceive
30 cycleCounterFiltering_IDX = 1,
32 msgBufferInterrupt_IDX = 3,
33 payloadPreambleIndicatorTr_IDX = 4,
34 singleTransmit_IDX = 5,
48 static void mdlInitializeSizes(SimStruct *S)
50 if (!rppSetNumParams(S, PARAM_COUNT)) {
55 * Configure input ports: 0
57 if (!ssSetNumInputPorts(S, 0)) {
63 * Configure output ports: 4
66 * - Length (number of received bytes)
69 if (!ssSetNumOutputPorts(S, OUTPUT_COUNT)) {
72 rppAddOutputPort(S, OUTPUT_ERROR_FLAG, SS_BOOLEAN);
73 rppAddOutputVectorPort(S, OUTPUT_MESSAGE, SS_UINT8, 2*(int_T)mxGetPr(ssGetSFcnParam(S, 2))[0]);
74 rppAddOutputPort(S, OUTPUT_LENGTH, SS_UINT8);
75 rppAddOutputPort(S, OUTPUT_TRIGGER, SS_BOOLEAN);
77 /* Set standard options for this block */
78 rppSetStandardOptions(S);
82 #ifdef MATLAB_MEX_FILE
83 #define MDL_CHECK_PARAMETERS
84 static void mdlCheckParameters(SimStruct *S)
91 #ifdef MATLAB_MEX_FILE
92 #define MDL_SET_WORK_WIDTHS
93 static void mdlSetWorkWidths(SimStruct *S)
95 /* Set number of run-time parameters */
96 if (!ssSetNumRunTimeParams(S, PARAM_COUNT)) {
100 /* Register the run-time parameter 1 */
101 ssRegDlgParamAsRunTimeParam(S, channel_IDX, channel_IDX, "channel", SS_UINT8);
102 ssRegDlgParamAsRunTimeParam(S, cycleCounterFiltering_IDX, cycleCounterFiltering_IDX, "cycleCounterFiltering", SS_UINT8);
103 ssRegDlgParamAsRunTimeParam(S, maxPayload_IDX, maxPayload_IDX, "maxPayload", SS_UINT8);
104 ssRegDlgParamAsRunTimeParam(S, msgBufferInterrupt_IDX, msgBufferInterrupt_IDX, "msgBufferInterrupt", SS_BOOLEAN);
105 ssRegDlgParamAsRunTimeParam(S, payloadPreambleIndicatorTr_IDX, payloadPreambleIndicatorTr_IDX, "payloadPreambleIndicatorTr", SS_BOOLEAN);
106 ssRegDlgParamAsRunTimeParam(S, singleTransmit_IDX, singleTransmit_IDX, "singleTransmit", SS_BOOLEAN);
107 ssRegDlgParamAsRunTimeParam(S, slotId_IDX, slotId_IDX, "slotId", SS_UINT32);
112 #define COMMON_MDLINITIALIZESAMPLETIMES_INHERIT
113 #define UNUSED_MDLOUTPUTS
114 #define UNUSED_MDLTERMINATE