Library for the master controller
Dependents: Test_Controller_Master AEB
Controller_Master.c@1:03ec2e1d1008, 2016-06-04 (annotated)
- Committer:
- AndreaAndreoli
- Date:
- Sat Jun 04 18:37:52 2016 +0000
- Revision:
- 1:03ec2e1d1008
- Parent:
- 0:8e9e8bee3cf4
- Child:
- 2:d114feef8f3b
fixed bug error handling
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndreaAndreoli | 0:8e9e8bee3cf4 | 1 | /* |
AndreaAndreoli | 0:8e9e8bee3cf4 | 2 | * Academic License - for use in teaching, academic research, and meeting |
AndreaAndreoli | 0:8e9e8bee3cf4 | 3 | * course requirements at degree granting institutions only. Not for |
AndreaAndreoli | 0:8e9e8bee3cf4 | 4 | * government, commercial, or other organizational use. |
AndreaAndreoli | 0:8e9e8bee3cf4 | 5 | * |
AndreaAndreoli | 0:8e9e8bee3cf4 | 6 | * File: Controller_Master.c |
AndreaAndreoli | 0:8e9e8bee3cf4 | 7 | * |
AndreaAndreoli | 0:8e9e8bee3cf4 | 8 | * Code generated for Simulink model 'Controller_Master'. |
AndreaAndreoli | 0:8e9e8bee3cf4 | 9 | * |
AndreaAndreoli | 1:03ec2e1d1008 | 10 | * Model version : 1.2 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 11 | * Simulink Coder version : 8.10 (R2016a) 10-Feb-2016 |
AndreaAndreoli | 1:03ec2e1d1008 | 12 | * C/C++ source code generated on : Sat Jun 04 20:35:28 2016 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 13 | * |
AndreaAndreoli | 0:8e9e8bee3cf4 | 14 | * Target selection: ert.tlc |
AndreaAndreoli | 0:8e9e8bee3cf4 | 15 | * Embedded hardware selection: NXP->Cortex-M4 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 16 | * Code generation objectives: Unspecified |
AndreaAndreoli | 0:8e9e8bee3cf4 | 17 | * Validation result: Not run |
AndreaAndreoli | 0:8e9e8bee3cf4 | 18 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 19 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 20 | #include "Controller_Master.h" |
AndreaAndreoli | 0:8e9e8bee3cf4 | 21 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 22 | /* Named constants for Chart: '<S1>/AEB' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 23 | #define Controller_M_IN_NO_ACTIVE_CHILD ((uint8_T)0U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 24 | #define Controller_Master_IN_ACTIVE ((uint8_T)1U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 25 | #define Controller_Master_IN_BRAKE ((uint8_T)1U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 26 | #define Controller_Master_IN_ERR ((uint8_T)1U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 27 | #define Controller_Master_IN_IDLE ((uint8_T)2U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 28 | #define Controller_Master_IN_OK ((uint8_T)2U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 29 | #define Controller_Master_IN_READY ((uint8_T)2U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 30 | #define Controller_Master_IN_WARNING ((uint8_T)3U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 31 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 32 | /* Named constants for Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 33 | #define Controller_Master_IN_BLINK ((uint8_T)1U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 34 | #define Controller_Master_IN_BLINK_OFF ((uint8_T)1U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 35 | #define Controller_Master_IN_BLINK_ON ((uint8_T)2U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 36 | #define Controller_Master_IN_OFF1 ((uint8_T)2U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 37 | #define Controller_Master_IN_ON ((uint8_T)3U) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 38 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 39 | /*===========* |
AndreaAndreoli | 0:8e9e8bee3cf4 | 40 | * Constants * |
AndreaAndreoli | 0:8e9e8bee3cf4 | 41 | *===========*/ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 42 | #define RT_PI 3.14159265358979323846 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 43 | #define RT_PIF 3.1415927F |
AndreaAndreoli | 0:8e9e8bee3cf4 | 44 | #define RT_LN_10 2.30258509299404568402 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 45 | #define RT_LN_10F 2.3025851F |
AndreaAndreoli | 0:8e9e8bee3cf4 | 46 | #define RT_LOG10E 0.43429448190325182765 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 47 | #define RT_LOG10EF 0.43429449F |
AndreaAndreoli | 0:8e9e8bee3cf4 | 48 | #define RT_E 2.7182818284590452354 |
AndreaAndreoli | 0:8e9e8bee3cf4 | 49 | #define RT_EF 2.7182817F |
AndreaAndreoli | 0:8e9e8bee3cf4 | 50 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 51 | /* |
AndreaAndreoli | 0:8e9e8bee3cf4 | 52 | * UNUSED_PARAMETER(x) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 53 | * Used to specify that a function parameter (argument) is required but not |
AndreaAndreoli | 0:8e9e8bee3cf4 | 54 | * accessed by the function body. |
AndreaAndreoli | 0:8e9e8bee3cf4 | 55 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 56 | #ifndef UNUSED_PARAMETER |
AndreaAndreoli | 0:8e9e8bee3cf4 | 57 | # if defined(__LCC__) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 58 | # define UNUSED_PARAMETER(x) /* do nothing */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 59 | # else |
AndreaAndreoli | 0:8e9e8bee3cf4 | 60 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 61 | /* |
AndreaAndreoli | 0:8e9e8bee3cf4 | 62 | * This is the semi-ANSI standard way of indicating that an |
AndreaAndreoli | 0:8e9e8bee3cf4 | 63 | * unused function parameter is required. |
AndreaAndreoli | 0:8e9e8bee3cf4 | 64 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 65 | # define UNUSED_PARAMETER(x) (void) (x) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 66 | # endif |
AndreaAndreoli | 0:8e9e8bee3cf4 | 67 | #endif |
AndreaAndreoli | 0:8e9e8bee3cf4 | 68 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 69 | /* Model step function */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 70 | void Controller_Master_step(RT_MODEL_Controller_Master_T *const |
AndreaAndreoli | 0:8e9e8bee3cf4 | 71 | Controller_Master_M, real_T Controller_Master_U_V, real_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 72 | Controller_Master_U_D_M, uint8_T Controller_Master_U_Slave, uint8_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 73 | *Controller_Master_Y_BRAKE, uint8_T *Controller_Master_Y_LED_BLUE, uint8_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 74 | *Controller_Master_Y_LED_RED, uint8_T *Controller_Master_Y_MASTER) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 75 | { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 76 | B_Controller_Master_T *Controller_Master_B = ((B_Controller_Master_T *) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 77 | Controller_Master_M->ModelData.blockIO); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 78 | DW_Controller_Master_T *Controller_Master_DW = ((DW_Controller_Master_T *) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 79 | Controller_Master_M->ModelData.dwork); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 80 | real_T K; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 81 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 82 | /* Outputs for Atomic SubSystem: '<Root>/Controller_Master' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 83 | /* Chart: '<S1>/AEB' incorporates: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 84 | * Inport: '<Root>/D_M' |
AndreaAndreoli | 0:8e9e8bee3cf4 | 85 | * Inport: '<Root>/V' |
AndreaAndreoli | 0:8e9e8bee3cf4 | 86 | * Memory: '<S1>/Memory' |
AndreaAndreoli | 0:8e9e8bee3cf4 | 87 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 88 | /* Gateway: Controller_Master/AEB */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 89 | /* During: Controller_Master/AEB */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 90 | if (Controller_Master_DW->is_active_c3_Controller_Master == 0U) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 91 | /* Entry: Controller_Master/AEB */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 92 | Controller_Master_DW->is_active_c3_Controller_Master = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 93 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 94 | /* Entry Internal: Controller_Master/AEB */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 95 | /* Entry Internal 'AEB': '<S2>:35' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 96 | /* Entry Internal 'ERRORS_CHECK_THREAD': '<S2>:33' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 97 | /* Transition: '<S2>:38' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 98 | Controller_Master_DW->is_ERRORS_CHECK_THREAD = Controller_Master_IN_OK; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 99 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 100 | /* Outport: '<Root>/LED_RED' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 101 | /* Entry 'OK': '<S2>:37' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 102 | /* '<S2>:37:1' Led_Red =uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 103 | *Controller_Master_Y_LED_RED = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 104 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 105 | /* Outport: '<Root>/MASTER' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 106 | /* '<S2>:37:1' Master = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 107 | *Controller_Master_Y_MASTER = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 108 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 109 | /* Entry Internal 'APPLICATION_THREAD': '<S2>:32' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 110 | /* Transition: '<S2>:27' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 111 | Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_READY; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 112 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 113 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 114 | /* Entry 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 115 | /* '<S2>:21:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 116 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 117 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 118 | /* '<S2>:21:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 119 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 120 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 121 | /* During 'AEB': '<S2>:35' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 122 | /* During 'ERRORS_CHECK_THREAD': '<S2>:33' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 123 | if (Controller_Master_DW->is_ERRORS_CHECK_THREAD != Controller_Master_IN_ERR) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 124 | { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 125 | /* During 'OK': '<S2>:37' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 126 | /* '<S2>:46:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 127 | /* '<S2>:46:1' V > 180 || D > 200 || D < 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 128 | if ((Controller_Master_U_V > 180.0) || (Controller_Master_U_D_M > 200.0) || |
AndreaAndreoli | 0:8e9e8bee3cf4 | 129 | (Controller_Master_U_D_M < 0.0)) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 130 | /* Transition: '<S2>:46' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 131 | Controller_Master_DW->is_ERRORS_CHECK_THREAD = Controller_Master_IN_ERR; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 132 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 133 | /* Outport: '<Root>/LED_RED' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 134 | /* Entry 'ERR': '<S2>:42' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 135 | /* '<S2>:42:1' Led_Red = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 136 | *Controller_Master_Y_LED_RED = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 137 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 138 | /* Outport: '<Root>/MASTER' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 139 | /* Entry 'MCU_ERR': '<S2>:40' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 140 | /* '<S2>:40:1' Master = uint8(0) ; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 141 | *Controller_Master_Y_MASTER = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 142 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 143 | /* '<S2>:40:1' En = false; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 144 | Controller_Master_DW->En = false; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 145 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 146 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 147 | /* '<S2>:40:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 148 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 149 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 150 | /* '<S2>:40:3' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 151 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 152 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 153 | /* '<S2>:43:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 154 | /* '<S2>:43:1' D == 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 155 | if (Controller_Master_U_D_M == 0.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 156 | /* Transition: '<S2>:43' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 157 | Controller_Master_DW->is_ERRORS_CHECK_THREAD = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 158 | Controller_Master_IN_ERR; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 159 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 160 | /* Outport: '<Root>/LED_RED' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 161 | /* Entry 'ERR': '<S2>:42' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 162 | /* '<S2>:42:1' Led_Red = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 163 | *Controller_Master_Y_LED_RED = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 164 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 165 | /* Outport: '<Root>/MASTER' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 166 | /* Entry 'SENSOR_ERR': '<S2>:39' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 167 | /* '<S2>:39:1' Master = uint8(0) ; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 168 | *Controller_Master_Y_MASTER = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 169 | |
AndreaAndreoli | 1:03ec2e1d1008 | 170 | /* '<S2>:39:1' En = false; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 171 | Controller_Master_DW->En = false; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 172 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 173 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 1:03ec2e1d1008 | 174 | /* '<S2>:39:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 175 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 176 | |
AndreaAndreoli | 1:03ec2e1d1008 | 177 | /* '<S2>:39:3' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 178 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 179 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 180 | /* '<S2>:45:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 181 | /* '<S2>:45:1' Slave ~= 1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 182 | if (Controller_Master_DW->Memory_PreviousInput != 1) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 183 | /* Transition: '<S2>:45' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 184 | Controller_Master_DW->is_ERRORS_CHECK_THREAD = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 185 | Controller_Master_IN_ERR; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 186 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 187 | /* Outport: '<Root>/LED_RED' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 188 | /* Entry 'ERR': '<S2>:42' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 189 | /* '<S2>:42:1' Led_Red = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 190 | *Controller_Master_Y_LED_RED = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 191 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 192 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 193 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 194 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 195 | /* During 'ERR': '<S2>:42' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 196 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 197 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 198 | /* During 'APPLICATION_THREAD': '<S2>:32' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 199 | if (Controller_Master_DW->is_APPLICATION_THREAD == |
AndreaAndreoli | 0:8e9e8bee3cf4 | 200 | Controller_Master_IN_ACTIVE) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 201 | /* During 'ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 202 | /* '<S2>:26:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 203 | /* '<S2>:26:1' En == false; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 204 | if (!Controller_Master_DW->En) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 205 | /* Transition: '<S2>:26' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 206 | /* Exit Internal 'ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 207 | Controller_Master_DW->is_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 208 | Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_READY; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 209 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 210 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 211 | /* Entry 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 212 | /* '<S2>:21:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 213 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 214 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 215 | /* '<S2>:21:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 216 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 217 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 218 | /* '<S2>:1:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 219 | K = Controller_Master_U_V * Controller_Master_U_V / |
AndreaAndreoli | 0:8e9e8bee3cf4 | 220 | Controller_Master_U_D_M; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 221 | switch (Controller_Master_DW->is_ACTIVE) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 222 | case Controller_Master_IN_BRAKE: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 223 | /* During 'BRAKE': '<S2>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 224 | /* '<S2>:10:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 225 | /* '<S2>:10:1' K < 100; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 226 | if (K < 100.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 227 | /* Transition: '<S2>:10' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 228 | Controller_Master_DW->is_ACTIVE = Controller_Master_IN_WARNING; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 229 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 230 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 231 | /* Entry 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 232 | /* '<S2>:5:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 233 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 234 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 235 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 236 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 237 | case Controller_Master_IN_IDLE: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 238 | /* During 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 239 | /* '<S2>:12:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 240 | /* '<S2>:12:1' K >= 70; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 241 | if (K >= 70.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 242 | /* Transition: '<S2>:12' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 243 | Controller_Master_DW->is_ACTIVE = Controller_Master_IN_WARNING; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 244 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 245 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 246 | /* Entry 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 247 | /* '<S2>:5:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 248 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 249 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 250 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 251 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 252 | default: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 253 | /* During 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 254 | /* '<S2>:9:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 255 | /* '<S2>:9:1' K >= 100; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 256 | if (K >= 100.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 257 | /* Transition: '<S2>:9' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 258 | Controller_Master_DW->is_ACTIVE = Controller_Master_IN_BRAKE; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 259 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 260 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 261 | /* Entry 'BRAKE': '<S2>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 262 | /* '<S2>:3:1' Brake = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 263 | *Controller_Master_Y_BRAKE = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 264 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 265 | /* '<S2>:3:1' Led_Blue = 1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 266 | Controller_Master_B->Led_Blue = 1.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 267 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 268 | /* '<S2>:11:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 269 | /* '<S2>:11:1' K < 70; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 270 | if (K < 70.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 271 | /* Transition: '<S2>:11' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 272 | Controller_Master_DW->is_ACTIVE = Controller_Master_IN_IDLE; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 273 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 274 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 275 | /* Entry 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 276 | /* '<S2>:6:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 277 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 278 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 279 | /* '<S2>:6:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 280 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 281 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 282 | /* '<S2>:5:1' Led_Blue = (K-70)/30; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 283 | Controller_Master_B->Led_Blue = (K - 70.0) / 30.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 284 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 285 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 286 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 287 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 288 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 289 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 290 | /* During 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 291 | /* '<S2>:23:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 292 | /* '<S2>:23:1' En == true; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 293 | if (Controller_Master_DW->En) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 294 | /* Transition: '<S2>:23' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 295 | Controller_Master_DW->is_APPLICATION_THREAD = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 296 | Controller_Master_IN_ACTIVE; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 297 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 298 | /* Entry 'ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 299 | /* '<S2>:1:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 300 | /* Entry Internal 'ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 301 | /* Transition: '<S2>:51' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 302 | Controller_Master_DW->is_ACTIVE = Controller_Master_IN_IDLE; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 303 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 304 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 305 | /* Entry 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 306 | /* '<S2>:6:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 307 | *Controller_Master_Y_BRAKE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 308 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 309 | /* '<S2>:6:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 310 | Controller_Master_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 311 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 312 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 313 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 314 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 315 | /* End of Chart: '<S1>/AEB' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 316 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 317 | /* Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 318 | if (Controller_Master_DW->temporalCounter_i1 < MAX_uint32_T) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 319 | Controller_Master_DW->temporalCounter_i1++; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 320 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 321 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 322 | /* Gateway: Controller_Master/select_command */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 323 | /* During: Controller_Master/select_command */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 324 | if (Controller_Master_DW->is_active_c2_Controller_Master == 0U) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 325 | /* Entry: Controller_Master/select_command */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 326 | Controller_Master_DW->is_active_c2_Controller_Master = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 327 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 328 | /* Entry Internal: Controller_Master/select_command */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 329 | /* Transition: '<S3>:2' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 330 | Controller_Master_DW->is_c2_Controller_Master = Controller_Master_IN_OFF1; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 331 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 332 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 333 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 334 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 335 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 336 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 337 | switch (Controller_Master_DW->is_c2_Controller_Master) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 338 | case Controller_Master_IN_BLINK: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 339 | /* During 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 340 | /* '<S3>:7:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 341 | /* '<S3>:7:1' enable == 1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 342 | if (Controller_Master_B->Led_Blue == 1.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 343 | /* Transition: '<S3>:7' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 344 | /* Exit Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 345 | Controller_Master_DW->is_BLINK = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 346 | Controller_Master_DW->is_c2_Controller_Master = Controller_Master_IN_ON; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 347 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 348 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 349 | /* Entry 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 350 | /* '<S3>:6:1' led = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 351 | *Controller_Master_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 352 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 353 | /* '<S3>:21:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 354 | /* '<S3>:21:1' enable == 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 355 | if (Controller_Master_B->Led_Blue == 0.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 356 | /* Transition: '<S3>:21' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 357 | /* Exit Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 358 | Controller_Master_DW->is_BLINK = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 359 | Controller_Master_DW->is_c2_Controller_Master = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 360 | Controller_Master_IN_OFF1; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 361 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 362 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 363 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 364 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 365 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 366 | } else if (Controller_Master_DW->is_BLINK == |
AndreaAndreoli | 0:8e9e8bee3cf4 | 367 | Controller_Master_IN_BLINK_OFF) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 368 | /* During 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 369 | /* '<S3>:14:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 370 | /* '<S3>:14:1' after(1-enable,sec); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 371 | if (Controller_Master_DW->temporalCounter_i1 >= (uint32_T)ceil((1.0 - |
AndreaAndreoli | 0:8e9e8bee3cf4 | 372 | Controller_Master_B->Led_Blue) / 0.2 - 2.0E-9)) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 373 | /* Transition: '<S3>:14' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 374 | Controller_Master_DW->is_BLINK = Controller_Master_IN_BLINK_ON; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 375 | Controller_Master_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 376 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 377 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 378 | /* Entry 'BLINK_ON': '<S3>:13' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 379 | /* '<S3>:13:1' led = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 380 | *Controller_Master_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 381 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 382 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 383 | /* During 'BLINK_ON': '<S3>:13' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 384 | /* '<S3>:15:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 385 | /* '<S3>:15:1' after(0.1,sec); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 386 | if (Controller_Master_DW->temporalCounter_i1 >= 1U) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 387 | /* Transition: '<S3>:15' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 388 | Controller_Master_DW->is_BLINK = Controller_Master_IN_BLINK_OFF; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 389 | Controller_Master_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 390 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 391 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 392 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 393 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 394 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 395 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 396 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 397 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 398 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 399 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 400 | case Controller_Master_IN_OFF1: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 401 | /* During 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 402 | /* '<S3>:22:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 403 | /* '<S3>:22:1' enable == 1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 404 | if (Controller_Master_B->Led_Blue == 1.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 405 | /* Transition: '<S3>:22' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 406 | Controller_Master_DW->is_c2_Controller_Master = Controller_Master_IN_ON; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 407 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 408 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 409 | /* Entry 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 410 | /* '<S3>:6:1' led = uint8(1); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 411 | *Controller_Master_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 412 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 413 | /* '<S3>:12:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 414 | /* '<S3>:12:1' enable >0 && enable <1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 415 | if ((Controller_Master_B->Led_Blue > 0.0) && |
AndreaAndreoli | 0:8e9e8bee3cf4 | 416 | (Controller_Master_B->Led_Blue < 1.0)) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 417 | /* Transition: '<S3>:12' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 418 | Controller_Master_DW->is_c2_Controller_Master = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 419 | Controller_Master_IN_BLINK; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 420 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 421 | /* Entry Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 422 | /* Transition: '<S3>:24' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 423 | Controller_Master_DW->is_BLINK = Controller_Master_IN_BLINK_OFF; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 424 | Controller_Master_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 425 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 426 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 427 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 428 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 429 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 430 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 431 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 432 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 433 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 434 | default: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 435 | /* During 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 436 | /* '<S3>:4:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 437 | /* '<S3>:4:1' enable == 0; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 438 | if (Controller_Master_B->Led_Blue == 0.0) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 439 | /* Transition: '<S3>:4' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 440 | Controller_Master_DW->is_c2_Controller_Master = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 441 | Controller_Master_IN_OFF1; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 442 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 443 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 444 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 445 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 446 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 447 | } else { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 448 | /* '<S3>:23:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 449 | /* '<S3>:23:1' enable >0 && enable <1; */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 450 | if ((Controller_Master_B->Led_Blue > 0.0) && |
AndreaAndreoli | 0:8e9e8bee3cf4 | 451 | (Controller_Master_B->Led_Blue < 1.0)) { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 452 | /* Transition: '<S3>:23' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 453 | Controller_Master_DW->is_c2_Controller_Master = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 454 | Controller_Master_IN_BLINK; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 455 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 456 | /* Entry Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 457 | /* Transition: '<S3>:24' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 458 | Controller_Master_DW->is_BLINK = Controller_Master_IN_BLINK_OFF; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 459 | Controller_Master_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 460 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 461 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 462 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 463 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 464 | *Controller_Master_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 465 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 466 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 467 | break; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 468 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 469 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 470 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 471 | /* End of Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 472 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 473 | /* Update for Memory: '<S1>/Memory' incorporates: |
AndreaAndreoli | 0:8e9e8bee3cf4 | 474 | * Update for Inport: '<Root>/SLAVE' |
AndreaAndreoli | 0:8e9e8bee3cf4 | 475 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 476 | Controller_Master_DW->Memory_PreviousInput = Controller_Master_U_Slave; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 477 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 478 | /* End of Outputs for SubSystem: '<Root>/Controller_Master' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 479 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 480 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 481 | /* Model initialize function */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 482 | void Controller_Master_initialize(RT_MODEL_Controller_Master_T *const |
AndreaAndreoli | 0:8e9e8bee3cf4 | 483 | Controller_Master_M, real_T *Controller_Master_U_V, real_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 484 | *Controller_Master_U_D_M, uint8_T *Controller_Master_U_Slave, uint8_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 485 | *Controller_Master_Y_BRAKE, uint8_T *Controller_Master_Y_LED_BLUE, uint8_T |
AndreaAndreoli | 0:8e9e8bee3cf4 | 486 | *Controller_Master_Y_LED_RED, uint8_T *Controller_Master_Y_MASTER) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 487 | { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 488 | DW_Controller_Master_T *Controller_Master_DW = ((DW_Controller_Master_T *) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 489 | Controller_Master_M->ModelData.dwork); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 490 | B_Controller_Master_T *Controller_Master_B = ((B_Controller_Master_T *) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 491 | Controller_Master_M->ModelData.blockIO); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 492 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 493 | /* Registration code */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 494 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 495 | /* block I/O */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 496 | (void) memset(((void *) Controller_Master_B), 0, |
AndreaAndreoli | 0:8e9e8bee3cf4 | 497 | sizeof(B_Controller_Master_T)); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 498 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 499 | /* states (dwork) */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 500 | (void) memset((void *)Controller_Master_DW, 0, |
AndreaAndreoli | 0:8e9e8bee3cf4 | 501 | sizeof(DW_Controller_Master_T)); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 502 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 503 | /* external inputs */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 504 | (*Controller_Master_U_V) = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 505 | (*Controller_Master_U_D_M) = 0.0; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 506 | (*Controller_Master_U_Slave) = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 507 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 508 | /* external outputs */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 509 | (*Controller_Master_Y_BRAKE) = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 510 | (*Controller_Master_Y_LED_BLUE) = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 511 | (*Controller_Master_Y_LED_RED) = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 512 | (*Controller_Master_Y_MASTER) = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 513 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 514 | /* SystemInitialize for Atomic SubSystem: '<Root>/Controller_Master' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 515 | /* InitializeConditions for Memory: '<S1>/Memory' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 516 | Controller_Master_DW->Memory_PreviousInput = 1U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 517 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 518 | /* SystemInitialize for Chart: '<S1>/AEB' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 519 | Controller_Master_DW->is_APPLICATION_THREAD = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 520 | Controller_Master_DW->is_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 521 | Controller_Master_DW->is_ERRORS_CHECK_THREAD = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 522 | Controller_Master_DW->is_active_c3_Controller_Master = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 523 | Controller_Master_DW->En = true; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 524 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 525 | /* SystemInitialize for Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 526 | Controller_Master_DW->is_BLINK = Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 527 | Controller_Master_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 528 | Controller_Master_DW->is_active_c2_Controller_Master = 0U; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 529 | Controller_Master_DW->is_c2_Controller_Master = |
AndreaAndreoli | 0:8e9e8bee3cf4 | 530 | Controller_M_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:8e9e8bee3cf4 | 531 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 532 | /* End of SystemInitialize for SubSystem: '<Root>/Controller_Master' */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 533 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 534 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 535 | /* Model terminate function */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 536 | void Controller_Master_terminate(RT_MODEL_Controller_Master_T *const |
AndreaAndreoli | 0:8e9e8bee3cf4 | 537 | Controller_Master_M) |
AndreaAndreoli | 0:8e9e8bee3cf4 | 538 | { |
AndreaAndreoli | 0:8e9e8bee3cf4 | 539 | /* (no terminate code required) */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 540 | UNUSED_PARAMETER(Controller_Master_M); |
AndreaAndreoli | 0:8e9e8bee3cf4 | 541 | } |
AndreaAndreoli | 0:8e9e8bee3cf4 | 542 | |
AndreaAndreoli | 0:8e9e8bee3cf4 | 543 | /* |
AndreaAndreoli | 0:8e9e8bee3cf4 | 544 | * File trailer for generated code. |
AndreaAndreoli | 0:8e9e8bee3cf4 | 545 | * |
AndreaAndreoli | 0:8e9e8bee3cf4 | 546 | * [EOF] |
AndreaAndreoli | 0:8e9e8bee3cf4 | 547 | */ |
AndreaAndreoli | 0:8e9e8bee3cf4 | 548 |