1 /* Copyright (C) 2014 Czech Technical University in Prague
4 * - Michal Horn <hornmich@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_cansetup.c
13 * C-MEX S-function block for RPP CAN bus setup.
20 * <matlabroot>/bin/mex sfunction_cansetup.c
26 Name: CAN Bus Configuration
36 - { name: "Baud rate for CAN bus port 1 [bps]", type: "uint32", range: "1 – 10000000" }
37 - { name: "Baud rate for CAN bus port 2 [bps]", type: "uint32", range: "1 – 10000000" }
38 - { name: "Baud rate for CAN bus port 3 [bps]", type: "uint32", range: "1 – 10000000" }
40 # Description is in Markdown mark-up
43 This block configures the CAN bus controllers. Exactly one CAN bus
44 configuration block must be in the model if any of the CAN Receive
45 or CAN Transmit block is used.
49 - Configuring CAN1, CAN2 and CAN3
53 RPP API functions used:
63 #define S_FUNCTION_NAME sfunction_cansetup
67 #define BAUDRATE_MIN 1
68 #define BAUDRATE_MAX 10000000
70 #define BAUDRATE_CAN1_PARAM_NAME "baudrate_can1"
71 #define BAUDRATE_CAN2_PARAM_NAME "baudrate_can2"
72 #define BAUDRATE_CAN3_PARAM_NAME "baudrate_can3"
74 /** Identifiers of the block parameters */
82 static void mdlInitializeSizes(SimStruct *S)
84 if (!rppSetNumParams(S, PARAM_COUNT)) {
89 if (!ssSetNumInputPorts(S, 0)) {
94 if (!ssSetNumOutputPorts(S, 0)) {
98 rppSetStandardOptions(S);
99 void CAN_Common_MdlInitSizes(SimStruct *S);
103 #ifdef MATLAB_MEX_FILE
104 #define MDL_CHECK_PARAMETERS
105 static void mdlCheckParameters(SimStruct *S)
107 /* Check the parameter CAN1 baudrate */
108 if (!rppValidParamRange(S, PARAM_CAN1_BAUDRATE, BAUDRATE_MIN, BAUDRATE_MAX)) {
111 /* Check the parameter CAN2 baudrate */
112 if (!rppValidParamRange(S, PARAM_CAN2_BAUDRATE, BAUDRATE_MIN, BAUDRATE_MAX)) {
115 /* Check the parameter CAN3 baudrate */
116 if (!rppValidParamRange(S, PARAM_CAN3_BAUDRATE, BAUDRATE_MIN, BAUDRATE_MAX)) {
123 #ifdef MATLAB_MEX_FILE
124 #define MDL_SET_WORK_WIDTHS
125 static void mdlSetWorkWidths(SimStruct *S)
128 if (!ssSetNumRunTimeParams(S, PARAM_COUNT)) {
132 ssRegDlgParamAsRunTimeParam(S, PARAM_CAN1_BAUDRATE, PARAM_CAN1_BAUDRATE, BAUDRATE_CAN1_PARAM_NAME, SS_UINT32);
133 ssRegDlgParamAsRunTimeParam(S, PARAM_CAN2_BAUDRATE, PARAM_CAN2_BAUDRATE, BAUDRATE_CAN2_PARAM_NAME, SS_UINT32);
134 ssRegDlgParamAsRunTimeParam(S, PARAM_CAN3_BAUDRATE, PARAM_CAN3_BAUDRATE, BAUDRATE_CAN3_PARAM_NAME, SS_UINT32);
138 #define COMMON_MDLINITIALIZESAMPLETIMES_INHERIT
139 #define UNUSED_MDLOUTPUTS
140 #define UNUSED_MDLTERMINATE