Slave controller for AEB and QA item
Controller_Slave.c@0:88fb7562377b, 2016-07-06 (annotated)
- Committer:
- AndreaAndreoli
- Date:
- Wed Jul 06 09:21:22 2016 +0000
- Revision:
- 0:88fb7562377b
- Child:
- 1:370626c9b451
first commit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndreaAndreoli | 0:88fb7562377b | 1 | /* |
AndreaAndreoli | 0:88fb7562377b | 2 | * Academic License - for use in teaching, academic research, and meeting |
AndreaAndreoli | 0:88fb7562377b | 3 | * course requirements at degree granting institutions only. Not for |
AndreaAndreoli | 0:88fb7562377b | 4 | * government, commercial, or other organizational use. |
AndreaAndreoli | 0:88fb7562377b | 5 | * |
AndreaAndreoli | 0:88fb7562377b | 6 | * File: Controller_Slave.c |
AndreaAndreoli | 0:88fb7562377b | 7 | * |
AndreaAndreoli | 0:88fb7562377b | 8 | * Code generated for Simulink model 'Controller_Slave'. |
AndreaAndreoli | 0:88fb7562377b | 9 | * |
AndreaAndreoli | 0:88fb7562377b | 10 | * Model version : 1.6 |
AndreaAndreoli | 0:88fb7562377b | 11 | * Simulink Coder version : 8.10 (R2016a) 10-Feb-2016 |
AndreaAndreoli | 0:88fb7562377b | 12 | * C/C++ source code generated on : Wed Jul 06 11:19:35 2016 |
AndreaAndreoli | 0:88fb7562377b | 13 | * |
AndreaAndreoli | 0:88fb7562377b | 14 | * Target selection: ert.tlc |
AndreaAndreoli | 0:88fb7562377b | 15 | * Embedded hardware selection: NXP->Cortex-M4 |
AndreaAndreoli | 0:88fb7562377b | 16 | * Code generation objectives: Unspecified |
AndreaAndreoli | 0:88fb7562377b | 17 | * Validation result: Not run |
AndreaAndreoli | 0:88fb7562377b | 18 | */ |
AndreaAndreoli | 0:88fb7562377b | 19 | |
AndreaAndreoli | 0:88fb7562377b | 20 | #include "Controller_Slave.h" |
AndreaAndreoli | 0:88fb7562377b | 21 | |
AndreaAndreoli | 0:88fb7562377b | 22 | /* Named constants for Chart: '<S1>/AEB_QA' */ |
AndreaAndreoli | 0:88fb7562377b | 23 | #define Controller_S_IN_NO_ACTIVE_CHILD ((uint8_T)0U) |
AndreaAndreoli | 0:88fb7562377b | 24 | #define Controller_Slave_IN_ACCELERATE ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 25 | #define Controller_Slave_IN_AEB_ACTIVE ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 26 | #define Controller_Slave_IN_BRAKE ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 27 | #define Controller_Slave_IN_BRAKE_i ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 28 | #define Controller_Slave_IN_ERR ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 29 | #define Controller_Slave_IN_IDLE ((uint8_T)3U) |
AndreaAndreoli | 0:88fb7562377b | 30 | #define Controller_Slave_IN_IDLE_b ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 31 | #define Controller_Slave_IN_OK ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 32 | #define Controller_Slave_IN_QA_ACTIVE ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 33 | #define Controller_Slave_IN_READY ((uint8_T)3U) |
AndreaAndreoli | 0:88fb7562377b | 34 | #define Controller_Slave_IN_WARNING ((uint8_T)3U) |
AndreaAndreoli | 0:88fb7562377b | 35 | #define Controller__IN_SLAVE_ACTIVATION ((uint8_T)3U) |
AndreaAndreoli | 0:88fb7562377b | 36 | |
AndreaAndreoli | 0:88fb7562377b | 37 | /* Named constants for Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:88fb7562377b | 38 | #define Controller_Slave_IN_BLINK ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 39 | #define Controller_Slave_IN_BLINK_OFF ((uint8_T)1U) |
AndreaAndreoli | 0:88fb7562377b | 40 | #define Controller_Slave_IN_BLINK_ON ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 41 | #define Controller_Slave_IN_OFF1 ((uint8_T)2U) |
AndreaAndreoli | 0:88fb7562377b | 42 | #define Controller_Slave_IN_ON ((uint8_T)3U) |
AndreaAndreoli | 0:88fb7562377b | 43 | |
AndreaAndreoli | 0:88fb7562377b | 44 | /* Forward declaration for local functions */ |
AndreaAndreoli | 0:88fb7562377b | 45 | static void Controller_Slave_AEB_QA(const uint8_T *Memory, real_T |
AndreaAndreoli | 0:88fb7562377b | 46 | Controller_Slave_U_V, real_T Controller_Slave_U_D_S, boolean_T |
AndreaAndreoli | 0:88fb7562377b | 47 | Controller_Slave_U_QA_EN, uint8_T *Controller_Slave_Y_BRAKE, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 48 | *Controller_Slave_Y_ACC, uint8_T *Controller_Slave_Y_LED_RED, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 49 | *Controller_Slave_Y_LED_GREEN, uint8_T *Controller_Slave_Y_SLAVE, |
AndreaAndreoli | 0:88fb7562377b | 50 | B_Controller_Slave_T *Controller_Slave_B, DW_Controller_Slave_T |
AndreaAndreoli | 0:88fb7562377b | 51 | *Controller_Slave_DW); |
AndreaAndreoli | 0:88fb7562377b | 52 | |
AndreaAndreoli | 0:88fb7562377b | 53 | /*===========* |
AndreaAndreoli | 0:88fb7562377b | 54 | * Constants * |
AndreaAndreoli | 0:88fb7562377b | 55 | *===========*/ |
AndreaAndreoli | 0:88fb7562377b | 56 | #define RT_PI 3.14159265358979323846 |
AndreaAndreoli | 0:88fb7562377b | 57 | #define RT_PIF 3.1415927F |
AndreaAndreoli | 0:88fb7562377b | 58 | #define RT_LN_10 2.30258509299404568402 |
AndreaAndreoli | 0:88fb7562377b | 59 | #define RT_LN_10F 2.3025851F |
AndreaAndreoli | 0:88fb7562377b | 60 | #define RT_LOG10E 0.43429448190325182765 |
AndreaAndreoli | 0:88fb7562377b | 61 | #define RT_LOG10EF 0.43429449F |
AndreaAndreoli | 0:88fb7562377b | 62 | #define RT_E 2.7182818284590452354 |
AndreaAndreoli | 0:88fb7562377b | 63 | #define RT_EF 2.7182817F |
AndreaAndreoli | 0:88fb7562377b | 64 | |
AndreaAndreoli | 0:88fb7562377b | 65 | /* |
AndreaAndreoli | 0:88fb7562377b | 66 | * UNUSED_PARAMETER(x) |
AndreaAndreoli | 0:88fb7562377b | 67 | * Used to specify that a function parameter (argument) is required but not |
AndreaAndreoli | 0:88fb7562377b | 68 | * accessed by the function body. |
AndreaAndreoli | 0:88fb7562377b | 69 | */ |
AndreaAndreoli | 0:88fb7562377b | 70 | #ifndef UNUSED_PARAMETER |
AndreaAndreoli | 0:88fb7562377b | 71 | # if defined(__LCC__) |
AndreaAndreoli | 0:88fb7562377b | 72 | # define UNUSED_PARAMETER(x) /* do nothing */ |
AndreaAndreoli | 0:88fb7562377b | 73 | # else |
AndreaAndreoli | 0:88fb7562377b | 74 | |
AndreaAndreoli | 0:88fb7562377b | 75 | /* |
AndreaAndreoli | 0:88fb7562377b | 76 | * This is the semi-ANSI standard way of indicating that an |
AndreaAndreoli | 0:88fb7562377b | 77 | * unused function parameter is required. |
AndreaAndreoli | 0:88fb7562377b | 78 | */ |
AndreaAndreoli | 0:88fb7562377b | 79 | # define UNUSED_PARAMETER(x) (void) (x) |
AndreaAndreoli | 0:88fb7562377b | 80 | # endif |
AndreaAndreoli | 0:88fb7562377b | 81 | #endif |
AndreaAndreoli | 0:88fb7562377b | 82 | |
AndreaAndreoli | 0:88fb7562377b | 83 | /* Function for Chart: '<S1>/AEB_QA' */ |
AndreaAndreoli | 0:88fb7562377b | 84 | static void Controller_Slave_AEB_QA(const uint8_T *Memory, real_T |
AndreaAndreoli | 0:88fb7562377b | 85 | Controller_Slave_U_V, real_T Controller_Slave_U_D_S, boolean_T |
AndreaAndreoli | 0:88fb7562377b | 86 | Controller_Slave_U_QA_EN, uint8_T *Controller_Slave_Y_BRAKE, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 87 | *Controller_Slave_Y_ACC, uint8_T *Controller_Slave_Y_LED_RED, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 88 | *Controller_Slave_Y_LED_GREEN, uint8_T *Controller_Slave_Y_SLAVE, |
AndreaAndreoli | 0:88fb7562377b | 89 | B_Controller_Slave_T *Controller_Slave_B, DW_Controller_Slave_T |
AndreaAndreoli | 0:88fb7562377b | 90 | *Controller_Slave_DW) |
AndreaAndreoli | 0:88fb7562377b | 91 | { |
AndreaAndreoli | 0:88fb7562377b | 92 | real_T K; |
AndreaAndreoli | 0:88fb7562377b | 93 | |
AndreaAndreoli | 0:88fb7562377b | 94 | /* During 'AEB_QA': '<S2>:35' */ |
AndreaAndreoli | 0:88fb7562377b | 95 | /* During 'APPLICATION_THREAD': '<S2>:32' */ |
AndreaAndreoli | 0:88fb7562377b | 96 | switch (Controller_Slave_DW->is_APPLICATION_THREAD) { |
AndreaAndreoli | 0:88fb7562377b | 97 | case Controller_Slave_IN_AEB_ACTIVE: |
AndreaAndreoli | 0:88fb7562377b | 98 | /* During 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 99 | /* '<S2>:26:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 100 | /* '<S2>:26:1' En == false; */ |
AndreaAndreoli | 0:88fb7562377b | 101 | if (!Controller_Slave_DW->En) { |
AndreaAndreoli | 0:88fb7562377b | 102 | /* Transition: '<S2>:26' */ |
AndreaAndreoli | 0:88fb7562377b | 103 | /* Exit Internal 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 104 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 105 | Controller_Slave_DW->is_APPLICATION_THREAD = Controller_Slave_IN_READY; |
AndreaAndreoli | 0:88fb7562377b | 106 | |
AndreaAndreoli | 0:88fb7562377b | 107 | /* Entry 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:88fb7562377b | 108 | /* '<S2>:21:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 109 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 110 | |
AndreaAndreoli | 0:88fb7562377b | 111 | /* '<S2>:21:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 112 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 113 | |
AndreaAndreoli | 0:88fb7562377b | 114 | /* '<S2>:21:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 115 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 116 | |
AndreaAndreoli | 0:88fb7562377b | 117 | /* '<S2>:21:4' Acc =uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 118 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 119 | } else { |
AndreaAndreoli | 0:88fb7562377b | 120 | /* Inport: '<Root>/QA_EN' incorporates: |
AndreaAndreoli | 0:88fb7562377b | 121 | * Inport: '<Root>/V' |
AndreaAndreoli | 0:88fb7562377b | 122 | */ |
AndreaAndreoli | 0:88fb7562377b | 123 | /* '<S2>:70:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 124 | /* '<S2>:70:1' QA_En == true && V<30; */ |
AndreaAndreoli | 0:88fb7562377b | 125 | if (Controller_Slave_U_QA_EN && (Controller_Slave_U_V < 30.0)) { |
AndreaAndreoli | 0:88fb7562377b | 126 | /* Transition: '<S2>:70' */ |
AndreaAndreoli | 0:88fb7562377b | 127 | /* Exit Internal 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 128 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 129 | Controller_Slave_DW->is_APPLICATION_THREAD = |
AndreaAndreoli | 0:88fb7562377b | 130 | Controller_Slave_IN_QA_ACTIVE; |
AndreaAndreoli | 0:88fb7562377b | 131 | |
AndreaAndreoli | 0:88fb7562377b | 132 | /* Entry 'QA_ACTIVE': '<S2>:69' */ |
AndreaAndreoli | 0:88fb7562377b | 133 | /* '<S2>:69:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:88fb7562377b | 134 | /* Entry Internal 'QA_ACTIVE': '<S2>:69' */ |
AndreaAndreoli | 0:88fb7562377b | 135 | /* Transition: '<S2>:64' */ |
AndreaAndreoli | 0:88fb7562377b | 136 | Controller_Slave_DW->is_QA_ACTIVE = Controller_Slave_IN_IDLE; |
AndreaAndreoli | 0:88fb7562377b | 137 | |
AndreaAndreoli | 0:88fb7562377b | 138 | /* Entry 'IDLE': '<S2>:67' */ |
AndreaAndreoli | 0:88fb7562377b | 139 | /* '<S2>:67:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 140 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 141 | |
AndreaAndreoli | 0:88fb7562377b | 142 | /* '<S2>:67:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 143 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 144 | |
AndreaAndreoli | 0:88fb7562377b | 145 | /* '<S2>:67:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 146 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 147 | |
AndreaAndreoli | 0:88fb7562377b | 148 | /* '<S2>:67:4' Acc = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 149 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 150 | } else { |
AndreaAndreoli | 0:88fb7562377b | 151 | /* Inport: '<Root>/D_S' */ |
AndreaAndreoli | 0:88fb7562377b | 152 | /* '<S2>:1:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:88fb7562377b | 153 | K = Controller_Slave_U_V * Controller_Slave_U_V / Controller_Slave_U_D_S; |
AndreaAndreoli | 0:88fb7562377b | 154 | switch (Controller_Slave_DW->is_AEB_ACTIVE) { |
AndreaAndreoli | 0:88fb7562377b | 155 | case Controller_Slave_IN_BRAKE_i: |
AndreaAndreoli | 0:88fb7562377b | 156 | /* During 'BRAKE': '<S2>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 157 | /* '<S2>:10:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 158 | /* '<S2>:10:1' K < 100; */ |
AndreaAndreoli | 0:88fb7562377b | 159 | if (K < 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 160 | /* Transition: '<S2>:10' */ |
AndreaAndreoli | 0:88fb7562377b | 161 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_WARNING; |
AndreaAndreoli | 0:88fb7562377b | 162 | |
AndreaAndreoli | 0:88fb7562377b | 163 | /* Entry 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:88fb7562377b | 164 | /* '<S2>:5:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 165 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 166 | } |
AndreaAndreoli | 0:88fb7562377b | 167 | break; |
AndreaAndreoli | 0:88fb7562377b | 168 | |
AndreaAndreoli | 0:88fb7562377b | 169 | case Controller_Slave_IN_IDLE_b: |
AndreaAndreoli | 0:88fb7562377b | 170 | /* During 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 171 | /* '<S2>:12:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 172 | /* '<S2>:12:1' K >= 70; */ |
AndreaAndreoli | 0:88fb7562377b | 173 | if (K >= 70.0) { |
AndreaAndreoli | 0:88fb7562377b | 174 | /* Transition: '<S2>:12' */ |
AndreaAndreoli | 0:88fb7562377b | 175 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_WARNING; |
AndreaAndreoli | 0:88fb7562377b | 176 | |
AndreaAndreoli | 0:88fb7562377b | 177 | /* Entry 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:88fb7562377b | 178 | /* '<S2>:5:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 179 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 180 | } |
AndreaAndreoli | 0:88fb7562377b | 181 | break; |
AndreaAndreoli | 0:88fb7562377b | 182 | |
AndreaAndreoli | 0:88fb7562377b | 183 | default: |
AndreaAndreoli | 0:88fb7562377b | 184 | /* During 'WARNING': '<S2>:5' */ |
AndreaAndreoli | 0:88fb7562377b | 185 | /* '<S2>:9:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 186 | /* '<S2>:9:1' K >= 100; */ |
AndreaAndreoli | 0:88fb7562377b | 187 | if (K >= 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 188 | /* Transition: '<S2>:9' */ |
AndreaAndreoli | 0:88fb7562377b | 189 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_BRAKE_i; |
AndreaAndreoli | 0:88fb7562377b | 190 | |
AndreaAndreoli | 0:88fb7562377b | 191 | /* Entry 'BRAKE': '<S2>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 192 | /* '<S2>:3:1' Brake = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 193 | *Controller_Slave_Y_BRAKE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 194 | |
AndreaAndreoli | 0:88fb7562377b | 195 | /* '<S2>:3:1' Led_Blue = 1; */ |
AndreaAndreoli | 0:88fb7562377b | 196 | Controller_Slave_B->Led_Blue = 1.0; |
AndreaAndreoli | 0:88fb7562377b | 197 | } else { |
AndreaAndreoli | 0:88fb7562377b | 198 | /* '<S2>:11:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 199 | /* '<S2>:11:1' K < 70; */ |
AndreaAndreoli | 0:88fb7562377b | 200 | if (K < 70.0) { |
AndreaAndreoli | 0:88fb7562377b | 201 | /* Transition: '<S2>:11' */ |
AndreaAndreoli | 0:88fb7562377b | 202 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_IDLE_b; |
AndreaAndreoli | 0:88fb7562377b | 203 | |
AndreaAndreoli | 0:88fb7562377b | 204 | /* Entry 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 205 | /* '<S2>:6:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 206 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 207 | |
AndreaAndreoli | 0:88fb7562377b | 208 | /* '<S2>:6:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 209 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 210 | } else { |
AndreaAndreoli | 0:88fb7562377b | 211 | /* '<S2>:5:1' Led_Blue = (K-70)/30; */ |
AndreaAndreoli | 0:88fb7562377b | 212 | Controller_Slave_B->Led_Blue = (K - 70.0) / 30.0; |
AndreaAndreoli | 0:88fb7562377b | 213 | } |
AndreaAndreoli | 0:88fb7562377b | 214 | } |
AndreaAndreoli | 0:88fb7562377b | 215 | break; |
AndreaAndreoli | 0:88fb7562377b | 216 | } |
AndreaAndreoli | 0:88fb7562377b | 217 | } |
AndreaAndreoli | 0:88fb7562377b | 218 | } |
AndreaAndreoli | 0:88fb7562377b | 219 | break; |
AndreaAndreoli | 0:88fb7562377b | 220 | |
AndreaAndreoli | 0:88fb7562377b | 221 | case Controller_Slave_IN_QA_ACTIVE: |
AndreaAndreoli | 0:88fb7562377b | 222 | /* Inport: '<Root>/QA_EN' incorporates: |
AndreaAndreoli | 0:88fb7562377b | 223 | * Inport: '<Root>/V' |
AndreaAndreoli | 0:88fb7562377b | 224 | */ |
AndreaAndreoli | 0:88fb7562377b | 225 | /* During 'QA_ACTIVE': '<S2>:69' */ |
AndreaAndreoli | 0:88fb7562377b | 226 | /* '<S2>:71:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 227 | /* '<S2>:71:1' QA_En ~= true || V>=30; */ |
AndreaAndreoli | 0:88fb7562377b | 228 | if ((!Controller_Slave_U_QA_EN) || (Controller_Slave_U_V >= 30.0)) { |
AndreaAndreoli | 0:88fb7562377b | 229 | /* Transition: '<S2>:71' */ |
AndreaAndreoli | 0:88fb7562377b | 230 | /* Exit Internal 'QA_ACTIVE': '<S2>:69' */ |
AndreaAndreoli | 0:88fb7562377b | 231 | Controller_Slave_DW->is_QA_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 232 | Controller_Slave_DW->is_APPLICATION_THREAD = |
AndreaAndreoli | 0:88fb7562377b | 233 | Controller_Slave_IN_AEB_ACTIVE; |
AndreaAndreoli | 0:88fb7562377b | 234 | |
AndreaAndreoli | 0:88fb7562377b | 235 | /* Entry 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 236 | /* '<S2>:1:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:88fb7562377b | 237 | /* Entry Internal 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 238 | /* Transition: '<S2>:51' */ |
AndreaAndreoli | 0:88fb7562377b | 239 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_IDLE_b; |
AndreaAndreoli | 0:88fb7562377b | 240 | |
AndreaAndreoli | 0:88fb7562377b | 241 | /* Entry 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 242 | /* '<S2>:6:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 243 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 244 | |
AndreaAndreoli | 0:88fb7562377b | 245 | /* '<S2>:6:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 246 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 247 | } else { |
AndreaAndreoli | 0:88fb7562377b | 248 | /* '<S2>:79:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 249 | /* '<S2>:79:1' En == false; */ |
AndreaAndreoli | 0:88fb7562377b | 250 | if (!Controller_Slave_DW->En) { |
AndreaAndreoli | 0:88fb7562377b | 251 | /* Transition: '<S2>:79' */ |
AndreaAndreoli | 0:88fb7562377b | 252 | /* Exit Internal 'QA_ACTIVE': '<S2>:69' */ |
AndreaAndreoli | 0:88fb7562377b | 253 | Controller_Slave_DW->is_QA_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 254 | Controller_Slave_DW->is_APPLICATION_THREAD = Controller_Slave_IN_READY; |
AndreaAndreoli | 0:88fb7562377b | 255 | |
AndreaAndreoli | 0:88fb7562377b | 256 | /* Entry 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:88fb7562377b | 257 | /* '<S2>:21:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 258 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 259 | |
AndreaAndreoli | 0:88fb7562377b | 260 | /* '<S2>:21:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 261 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 262 | |
AndreaAndreoli | 0:88fb7562377b | 263 | /* '<S2>:21:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 264 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 265 | |
AndreaAndreoli | 0:88fb7562377b | 266 | /* '<S2>:21:4' Acc =uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 267 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 268 | } else { |
AndreaAndreoli | 0:88fb7562377b | 269 | /* Inport: '<Root>/D_S' */ |
AndreaAndreoli | 0:88fb7562377b | 270 | /* '<S2>:69:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:88fb7562377b | 271 | K = Controller_Slave_U_V * Controller_Slave_U_V / Controller_Slave_U_D_S; |
AndreaAndreoli | 0:88fb7562377b | 272 | switch (Controller_Slave_DW->is_QA_ACTIVE) { |
AndreaAndreoli | 0:88fb7562377b | 273 | case Controller_Slave_IN_ACCELERATE: |
AndreaAndreoli | 0:88fb7562377b | 274 | /* During 'ACCELERATE': '<S2>:68' */ |
AndreaAndreoli | 0:88fb7562377b | 275 | /* '<S2>:75:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 276 | /* '<S2>:75:1' K >= 100; */ |
AndreaAndreoli | 0:88fb7562377b | 277 | if (K >= 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 278 | /* Transition: '<S2>:75' */ |
AndreaAndreoli | 0:88fb7562377b | 279 | Controller_Slave_DW->is_QA_ACTIVE = Controller_Slave_IN_IDLE; |
AndreaAndreoli | 0:88fb7562377b | 280 | |
AndreaAndreoli | 0:88fb7562377b | 281 | /* Entry 'IDLE': '<S2>:67' */ |
AndreaAndreoli | 0:88fb7562377b | 282 | /* '<S2>:67:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 283 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 284 | |
AndreaAndreoli | 0:88fb7562377b | 285 | /* '<S2>:67:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 286 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 287 | |
AndreaAndreoli | 0:88fb7562377b | 288 | /* '<S2>:67:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 289 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 290 | |
AndreaAndreoli | 0:88fb7562377b | 291 | /* '<S2>:67:4' Acc = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 292 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 293 | } |
AndreaAndreoli | 0:88fb7562377b | 294 | break; |
AndreaAndreoli | 0:88fb7562377b | 295 | |
AndreaAndreoli | 0:88fb7562377b | 296 | case Controller_Slave_IN_BRAKE: |
AndreaAndreoli | 0:88fb7562377b | 297 | /* During 'BRAKE': '<S2>:65' */ |
AndreaAndreoli | 0:88fb7562377b | 298 | /* '<S2>:73:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 299 | /* '<S2>:73:1' K <= 100; */ |
AndreaAndreoli | 0:88fb7562377b | 300 | if (K <= 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 301 | /* Transition: '<S2>:73' */ |
AndreaAndreoli | 0:88fb7562377b | 302 | Controller_Slave_DW->is_QA_ACTIVE = Controller_Slave_IN_IDLE; |
AndreaAndreoli | 0:88fb7562377b | 303 | |
AndreaAndreoli | 0:88fb7562377b | 304 | /* Entry 'IDLE': '<S2>:67' */ |
AndreaAndreoli | 0:88fb7562377b | 305 | /* '<S2>:67:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 306 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 307 | |
AndreaAndreoli | 0:88fb7562377b | 308 | /* '<S2>:67:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 309 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 310 | |
AndreaAndreoli | 0:88fb7562377b | 311 | /* '<S2>:67:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 312 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 313 | |
AndreaAndreoli | 0:88fb7562377b | 314 | /* '<S2>:67:4' Acc = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 315 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 316 | } |
AndreaAndreoli | 0:88fb7562377b | 317 | break; |
AndreaAndreoli | 0:88fb7562377b | 318 | |
AndreaAndreoli | 0:88fb7562377b | 319 | default: |
AndreaAndreoli | 0:88fb7562377b | 320 | /* During 'IDLE': '<S2>:67' */ |
AndreaAndreoli | 0:88fb7562377b | 321 | /* '<S2>:72:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 322 | /* '<S2>:72:1' K > 100; */ |
AndreaAndreoli | 0:88fb7562377b | 323 | if (K > 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 324 | /* Transition: '<S2>:72' */ |
AndreaAndreoli | 0:88fb7562377b | 325 | Controller_Slave_DW->is_QA_ACTIVE = Controller_Slave_IN_BRAKE; |
AndreaAndreoli | 0:88fb7562377b | 326 | |
AndreaAndreoli | 0:88fb7562377b | 327 | /* Entry 'BRAKE': '<S2>:65' */ |
AndreaAndreoli | 0:88fb7562377b | 328 | /* '<S2>:65:1' Brake = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 329 | *Controller_Slave_Y_BRAKE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 330 | |
AndreaAndreoli | 0:88fb7562377b | 331 | /* '<S2>:65:1' Led_Blue = 1; */ |
AndreaAndreoli | 0:88fb7562377b | 332 | Controller_Slave_B->Led_Blue = 1.0; |
AndreaAndreoli | 0:88fb7562377b | 333 | } else { |
AndreaAndreoli | 0:88fb7562377b | 334 | /* '<S2>:74:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 335 | /* '<S2>:74:1' K < 100; */ |
AndreaAndreoli | 0:88fb7562377b | 336 | if (K < 100.0) { |
AndreaAndreoli | 0:88fb7562377b | 337 | /* Transition: '<S2>:74' */ |
AndreaAndreoli | 0:88fb7562377b | 338 | Controller_Slave_DW->is_QA_ACTIVE = Controller_Slave_IN_ACCELERATE; |
AndreaAndreoli | 0:88fb7562377b | 339 | |
AndreaAndreoli | 0:88fb7562377b | 340 | /* Entry 'ACCELERATE': '<S2>:68' */ |
AndreaAndreoli | 0:88fb7562377b | 341 | /* '<S2>:68:1' Led_Green = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 342 | *Controller_Slave_Y_LED_GREEN = 1U; |
AndreaAndreoli | 0:88fb7562377b | 343 | |
AndreaAndreoli | 0:88fb7562377b | 344 | /* '<S2>:68:1' Acc = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 345 | *Controller_Slave_Y_ACC = 1U; |
AndreaAndreoli | 0:88fb7562377b | 346 | } |
AndreaAndreoli | 0:88fb7562377b | 347 | } |
AndreaAndreoli | 0:88fb7562377b | 348 | break; |
AndreaAndreoli | 0:88fb7562377b | 349 | } |
AndreaAndreoli | 0:88fb7562377b | 350 | } |
AndreaAndreoli | 0:88fb7562377b | 351 | } |
AndreaAndreoli | 0:88fb7562377b | 352 | break; |
AndreaAndreoli | 0:88fb7562377b | 353 | |
AndreaAndreoli | 0:88fb7562377b | 354 | default: |
AndreaAndreoli | 0:88fb7562377b | 355 | /* During 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:88fb7562377b | 356 | /* '<S2>:23:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 357 | /* '<S2>:23:1' En == true; */ |
AndreaAndreoli | 0:88fb7562377b | 358 | if (Controller_Slave_DW->En) { |
AndreaAndreoli | 0:88fb7562377b | 359 | /* Transition: '<S2>:23' */ |
AndreaAndreoli | 0:88fb7562377b | 360 | Controller_Slave_DW->is_APPLICATION_THREAD = |
AndreaAndreoli | 0:88fb7562377b | 361 | Controller_Slave_IN_AEB_ACTIVE; |
AndreaAndreoli | 0:88fb7562377b | 362 | |
AndreaAndreoli | 0:88fb7562377b | 363 | /* Entry 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 364 | /* '<S2>:1:1' K = (V^2)/D; */ |
AndreaAndreoli | 0:88fb7562377b | 365 | /* Entry Internal 'AEB_ACTIVE': '<S2>:1' */ |
AndreaAndreoli | 0:88fb7562377b | 366 | /* Transition: '<S2>:51' */ |
AndreaAndreoli | 0:88fb7562377b | 367 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_Slave_IN_IDLE_b; |
AndreaAndreoli | 0:88fb7562377b | 368 | |
AndreaAndreoli | 0:88fb7562377b | 369 | /* Entry 'IDLE': '<S2>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 370 | /* '<S2>:6:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 371 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 372 | |
AndreaAndreoli | 0:88fb7562377b | 373 | /* '<S2>:6:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 374 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 375 | } |
AndreaAndreoli | 0:88fb7562377b | 376 | break; |
AndreaAndreoli | 0:88fb7562377b | 377 | } |
AndreaAndreoli | 0:88fb7562377b | 378 | |
AndreaAndreoli | 0:88fb7562377b | 379 | /* During 'ERRORS_CHECK_THREAD': '<S2>:80' */ |
AndreaAndreoli | 0:88fb7562377b | 380 | switch (Controller_Slave_DW->is_ERRORS_CHECK_THREAD) { |
AndreaAndreoli | 0:88fb7562377b | 381 | case Controller_Slave_IN_ERR: |
AndreaAndreoli | 0:88fb7562377b | 382 | /* During 'ERR': '<S2>:89' */ |
AndreaAndreoli | 0:88fb7562377b | 383 | break; |
AndreaAndreoli | 0:88fb7562377b | 384 | |
AndreaAndreoli | 0:88fb7562377b | 385 | case Controller_Slave_IN_OK: |
AndreaAndreoli | 0:88fb7562377b | 386 | /* Inport: '<Root>/V' incorporates: |
AndreaAndreoli | 0:88fb7562377b | 387 | * Inport: '<Root>/D_S' |
AndreaAndreoli | 0:88fb7562377b | 388 | */ |
AndreaAndreoli | 0:88fb7562377b | 389 | /* During 'OK': '<S2>:94' */ |
AndreaAndreoli | 0:88fb7562377b | 390 | /* '<S2>:83:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 391 | /* '<S2>:83:1' V > 180 || D > 200; */ |
AndreaAndreoli | 0:88fb7562377b | 392 | if ((Controller_Slave_U_V > 180.0) || (Controller_Slave_U_D_S > 200.0)) { |
AndreaAndreoli | 0:88fb7562377b | 393 | /* Transition: '<S2>:83' */ |
AndreaAndreoli | 0:88fb7562377b | 394 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = Controller_Slave_IN_ERR; |
AndreaAndreoli | 0:88fb7562377b | 395 | |
AndreaAndreoli | 0:88fb7562377b | 396 | /* Entry 'ERR': '<S2>:89' */ |
AndreaAndreoli | 0:88fb7562377b | 397 | /* '<S2>:89:1' Led_Red = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 398 | *Controller_Slave_Y_LED_RED = 1U; |
AndreaAndreoli | 0:88fb7562377b | 399 | |
AndreaAndreoli | 0:88fb7562377b | 400 | /* '<S2>:89:1' Slave = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 401 | *Controller_Slave_Y_SLAVE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 402 | |
AndreaAndreoli | 0:88fb7562377b | 403 | /* '<S2>:89:3' En = false; */ |
AndreaAndreoli | 0:88fb7562377b | 404 | Controller_Slave_DW->En = false; |
AndreaAndreoli | 0:88fb7562377b | 405 | |
AndreaAndreoli | 0:88fb7562377b | 406 | /* '<S2>:89:3' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 407 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 408 | |
AndreaAndreoli | 0:88fb7562377b | 409 | /* '<S2>:89:4' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 410 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 411 | } else { |
AndreaAndreoli | 0:88fb7562377b | 412 | /* '<S2>:82:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 413 | /* '<S2>:82:1' D == 0; */ |
AndreaAndreoli | 0:88fb7562377b | 414 | if (Controller_Slave_U_D_S == 0.0) { |
AndreaAndreoli | 0:88fb7562377b | 415 | /* Transition: '<S2>:82' */ |
AndreaAndreoli | 0:88fb7562377b | 416 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = Controller_Slave_IN_ERR; |
AndreaAndreoli | 0:88fb7562377b | 417 | |
AndreaAndreoli | 0:88fb7562377b | 418 | /* Entry 'ERR': '<S2>:89' */ |
AndreaAndreoli | 0:88fb7562377b | 419 | /* '<S2>:89:1' Led_Red = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 420 | *Controller_Slave_Y_LED_RED = 1U; |
AndreaAndreoli | 0:88fb7562377b | 421 | |
AndreaAndreoli | 0:88fb7562377b | 422 | /* '<S2>:89:1' Slave = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 423 | *Controller_Slave_Y_SLAVE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 424 | |
AndreaAndreoli | 0:88fb7562377b | 425 | /* '<S2>:89:3' En = false; */ |
AndreaAndreoli | 0:88fb7562377b | 426 | Controller_Slave_DW->En = false; |
AndreaAndreoli | 0:88fb7562377b | 427 | |
AndreaAndreoli | 0:88fb7562377b | 428 | /* '<S2>:89:3' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 429 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 430 | |
AndreaAndreoli | 0:88fb7562377b | 431 | /* '<S2>:89:4' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 432 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 433 | } else { |
AndreaAndreoli | 0:88fb7562377b | 434 | /* '<S2>:85:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 435 | /* '<S2>:85:1' Master ~= 1 && En == false; */ |
AndreaAndreoli | 0:88fb7562377b | 436 | if ((*Memory != 1) && (!Controller_Slave_DW->En)) { |
AndreaAndreoli | 0:88fb7562377b | 437 | /* Transition: '<S2>:85' */ |
AndreaAndreoli | 0:88fb7562377b | 438 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = |
AndreaAndreoli | 0:88fb7562377b | 439 | Controller__IN_SLAVE_ACTIVATION; |
AndreaAndreoli | 0:88fb7562377b | 440 | |
AndreaAndreoli | 0:88fb7562377b | 441 | /* Entry 'SLAVE_ACTIVATION': '<S2>:95' */ |
AndreaAndreoli | 0:88fb7562377b | 442 | /* '<S2>:95:1' En = true; */ |
AndreaAndreoli | 0:88fb7562377b | 443 | Controller_Slave_DW->En = true; |
AndreaAndreoli | 0:88fb7562377b | 444 | } |
AndreaAndreoli | 0:88fb7562377b | 445 | } |
AndreaAndreoli | 0:88fb7562377b | 446 | } |
AndreaAndreoli | 0:88fb7562377b | 447 | break; |
AndreaAndreoli | 0:88fb7562377b | 448 | |
AndreaAndreoli | 0:88fb7562377b | 449 | default: |
AndreaAndreoli | 0:88fb7562377b | 450 | /* During 'SLAVE_ACTIVATION': '<S2>:95' */ |
AndreaAndreoli | 0:88fb7562377b | 451 | /* Transition: '<S2>:84' */ |
AndreaAndreoli | 0:88fb7562377b | 452 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = Controller_Slave_IN_OK; |
AndreaAndreoli | 0:88fb7562377b | 453 | |
AndreaAndreoli | 0:88fb7562377b | 454 | /* Entry 'OK': '<S2>:94' */ |
AndreaAndreoli | 0:88fb7562377b | 455 | /* '<S2>:94:1' Led_Red = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 456 | *Controller_Slave_Y_LED_RED = 0U; |
AndreaAndreoli | 0:88fb7562377b | 457 | |
AndreaAndreoli | 0:88fb7562377b | 458 | /* '<S2>:94:1' Slave = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 459 | *Controller_Slave_Y_SLAVE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 460 | break; |
AndreaAndreoli | 0:88fb7562377b | 461 | } |
AndreaAndreoli | 0:88fb7562377b | 462 | } |
AndreaAndreoli | 0:88fb7562377b | 463 | |
AndreaAndreoli | 0:88fb7562377b | 464 | /* Model step function */ |
AndreaAndreoli | 0:88fb7562377b | 465 | void Controller_Slave_step(RT_MODEL_Controller_Slave_T *const Controller_Slave_M, |
AndreaAndreoli | 0:88fb7562377b | 466 | real_T Controller_Slave_U_V, real_T Controller_Slave_U_D_S, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 467 | Controller_Slave_U_Master, boolean_T Controller_Slave_U_QA_EN, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 468 | *Controller_Slave_Y_BRAKE, uint8_T *Controller_Slave_Y_ACC, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 469 | *Controller_Slave_Y_LED_RED, uint8_T *Controller_Slave_Y_LED_GREEN, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 470 | *Controller_Slave_Y_LED_BLUE, uint8_T *Controller_Slave_Y_SLAVE) |
AndreaAndreoli | 0:88fb7562377b | 471 | { |
AndreaAndreoli | 0:88fb7562377b | 472 | B_Controller_Slave_T *Controller_Slave_B = ((B_Controller_Slave_T *) |
AndreaAndreoli | 0:88fb7562377b | 473 | Controller_Slave_M->ModelData.blockIO); |
AndreaAndreoli | 0:88fb7562377b | 474 | DW_Controller_Slave_T *Controller_Slave_DW = ((DW_Controller_Slave_T *) |
AndreaAndreoli | 0:88fb7562377b | 475 | Controller_Slave_M->ModelData.dwork); |
AndreaAndreoli | 0:88fb7562377b | 476 | uint8_T Memory; |
AndreaAndreoli | 0:88fb7562377b | 477 | |
AndreaAndreoli | 0:88fb7562377b | 478 | /* Outputs for Atomic SubSystem: '<Root>/Controller_Slave' */ |
AndreaAndreoli | 0:88fb7562377b | 479 | /* Memory: '<S1>/Memory' */ |
AndreaAndreoli | 0:88fb7562377b | 480 | Memory = Controller_Slave_DW->Memory_PreviousInput; |
AndreaAndreoli | 0:88fb7562377b | 481 | |
AndreaAndreoli | 0:88fb7562377b | 482 | /* Chart: '<S1>/AEB_QA' */ |
AndreaAndreoli | 0:88fb7562377b | 483 | /* Gateway: Controller_Slave/AEB_QA */ |
AndreaAndreoli | 0:88fb7562377b | 484 | /* During: Controller_Slave/AEB_QA */ |
AndreaAndreoli | 0:88fb7562377b | 485 | if (Controller_Slave_DW->is_active_c5_Controller_Slave == 0U) { |
AndreaAndreoli | 0:88fb7562377b | 486 | /* Entry: Controller_Slave/AEB_QA */ |
AndreaAndreoli | 0:88fb7562377b | 487 | Controller_Slave_DW->is_active_c5_Controller_Slave = 1U; |
AndreaAndreoli | 0:88fb7562377b | 488 | |
AndreaAndreoli | 0:88fb7562377b | 489 | /* Entry Internal: Controller_Slave/AEB_QA */ |
AndreaAndreoli | 0:88fb7562377b | 490 | /* Entry Internal 'AEB_QA': '<S2>:35' */ |
AndreaAndreoli | 0:88fb7562377b | 491 | /* Entry Internal 'APPLICATION_THREAD': '<S2>:32' */ |
AndreaAndreoli | 0:88fb7562377b | 492 | /* Transition: '<S2>:27' */ |
AndreaAndreoli | 0:88fb7562377b | 493 | Controller_Slave_DW->is_APPLICATION_THREAD = Controller_Slave_IN_READY; |
AndreaAndreoli | 0:88fb7562377b | 494 | |
AndreaAndreoli | 0:88fb7562377b | 495 | /* Outport: '<Root>/BRAKE' */ |
AndreaAndreoli | 0:88fb7562377b | 496 | /* Entry 'READY': '<S2>:21' */ |
AndreaAndreoli | 0:88fb7562377b | 497 | /* '<S2>:21:1' Brake = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 498 | *Controller_Slave_Y_BRAKE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 499 | |
AndreaAndreoli | 0:88fb7562377b | 500 | /* '<S2>:21:1' Led_Blue = 0; */ |
AndreaAndreoli | 0:88fb7562377b | 501 | Controller_Slave_B->Led_Blue = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 502 | |
AndreaAndreoli | 0:88fb7562377b | 503 | /* Outport: '<Root>/LED_GREEN' */ |
AndreaAndreoli | 0:88fb7562377b | 504 | /* '<S2>:21:1' Led_Green = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 505 | *Controller_Slave_Y_LED_GREEN = 0U; |
AndreaAndreoli | 0:88fb7562377b | 506 | |
AndreaAndreoli | 0:88fb7562377b | 507 | /* Outport: '<Root>/ACC' */ |
AndreaAndreoli | 0:88fb7562377b | 508 | /* '<S2>:21:4' Acc =uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 509 | *Controller_Slave_Y_ACC = 0U; |
AndreaAndreoli | 0:88fb7562377b | 510 | |
AndreaAndreoli | 0:88fb7562377b | 511 | /* Entry Internal 'ERRORS_CHECK_THREAD': '<S2>:80' */ |
AndreaAndreoli | 0:88fb7562377b | 512 | /* Transition: '<S2>:81' */ |
AndreaAndreoli | 0:88fb7562377b | 513 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = Controller_Slave_IN_OK; |
AndreaAndreoli | 0:88fb7562377b | 514 | |
AndreaAndreoli | 0:88fb7562377b | 515 | /* Outport: '<Root>/LED_RED' */ |
AndreaAndreoli | 0:88fb7562377b | 516 | /* Entry 'OK': '<S2>:94' */ |
AndreaAndreoli | 0:88fb7562377b | 517 | /* '<S2>:94:1' Led_Red = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 518 | *Controller_Slave_Y_LED_RED = 0U; |
AndreaAndreoli | 0:88fb7562377b | 519 | |
AndreaAndreoli | 0:88fb7562377b | 520 | /* Outport: '<Root>/SLAVE' */ |
AndreaAndreoli | 0:88fb7562377b | 521 | /* '<S2>:94:1' Slave = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 522 | *Controller_Slave_Y_SLAVE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 523 | } else { |
AndreaAndreoli | 0:88fb7562377b | 524 | Controller_Slave_AEB_QA(&Memory, Controller_Slave_U_V, |
AndreaAndreoli | 0:88fb7562377b | 525 | Controller_Slave_U_D_S, Controller_Slave_U_QA_EN, Controller_Slave_Y_BRAKE, |
AndreaAndreoli | 0:88fb7562377b | 526 | Controller_Slave_Y_ACC, Controller_Slave_Y_LED_RED, |
AndreaAndreoli | 0:88fb7562377b | 527 | Controller_Slave_Y_LED_GREEN, Controller_Slave_Y_SLAVE, Controller_Slave_B, |
AndreaAndreoli | 0:88fb7562377b | 528 | Controller_Slave_DW); |
AndreaAndreoli | 0:88fb7562377b | 529 | } |
AndreaAndreoli | 0:88fb7562377b | 530 | |
AndreaAndreoli | 0:88fb7562377b | 531 | /* End of Chart: '<S1>/AEB_QA' */ |
AndreaAndreoli | 0:88fb7562377b | 532 | |
AndreaAndreoli | 0:88fb7562377b | 533 | /* Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:88fb7562377b | 534 | if (Controller_Slave_DW->temporalCounter_i1 < MAX_uint32_T) { |
AndreaAndreoli | 0:88fb7562377b | 535 | Controller_Slave_DW->temporalCounter_i1++; |
AndreaAndreoli | 0:88fb7562377b | 536 | } |
AndreaAndreoli | 0:88fb7562377b | 537 | |
AndreaAndreoli | 0:88fb7562377b | 538 | /* Gateway: Controller_Slave/select_command */ |
AndreaAndreoli | 0:88fb7562377b | 539 | /* During: Controller_Slave/select_command */ |
AndreaAndreoli | 0:88fb7562377b | 540 | if (Controller_Slave_DW->is_active_c6_Controller_Slave == 0U) { |
AndreaAndreoli | 0:88fb7562377b | 541 | /* Entry: Controller_Slave/select_command */ |
AndreaAndreoli | 0:88fb7562377b | 542 | Controller_Slave_DW->is_active_c6_Controller_Slave = 1U; |
AndreaAndreoli | 0:88fb7562377b | 543 | |
AndreaAndreoli | 0:88fb7562377b | 544 | /* Entry Internal: Controller_Slave/select_command */ |
AndreaAndreoli | 0:88fb7562377b | 545 | /* Transition: '<S3>:2' */ |
AndreaAndreoli | 0:88fb7562377b | 546 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_Slave_IN_OFF1; |
AndreaAndreoli | 0:88fb7562377b | 547 | |
AndreaAndreoli | 0:88fb7562377b | 548 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 549 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 550 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 551 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 552 | } else { |
AndreaAndreoli | 0:88fb7562377b | 553 | switch (Controller_Slave_DW->is_c6_Controller_Slave) { |
AndreaAndreoli | 0:88fb7562377b | 554 | case Controller_Slave_IN_BLINK: |
AndreaAndreoli | 0:88fb7562377b | 555 | /* During 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:88fb7562377b | 556 | /* '<S3>:7:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 557 | /* '<S3>:7:1' enable == 1; */ |
AndreaAndreoli | 0:88fb7562377b | 558 | if (Controller_Slave_B->Led_Blue == 1.0) { |
AndreaAndreoli | 0:88fb7562377b | 559 | /* Transition: '<S3>:7' */ |
AndreaAndreoli | 0:88fb7562377b | 560 | /* Exit Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:88fb7562377b | 561 | Controller_Slave_DW->is_BLINK = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 562 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_Slave_IN_ON; |
AndreaAndreoli | 0:88fb7562377b | 563 | |
AndreaAndreoli | 0:88fb7562377b | 564 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 565 | /* Entry 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 566 | /* '<S3>:6:1' led = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 567 | *Controller_Slave_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 568 | } else { |
AndreaAndreoli | 0:88fb7562377b | 569 | /* '<S3>:21:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 570 | /* '<S3>:21:1' enable == 0; */ |
AndreaAndreoli | 0:88fb7562377b | 571 | if (Controller_Slave_B->Led_Blue == 0.0) { |
AndreaAndreoli | 0:88fb7562377b | 572 | /* Transition: '<S3>:21' */ |
AndreaAndreoli | 0:88fb7562377b | 573 | /* Exit Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:88fb7562377b | 574 | Controller_Slave_DW->is_BLINK = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 575 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_Slave_IN_OFF1; |
AndreaAndreoli | 0:88fb7562377b | 576 | |
AndreaAndreoli | 0:88fb7562377b | 577 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 578 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 579 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 580 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 581 | } else if (Controller_Slave_DW->is_BLINK == |
AndreaAndreoli | 0:88fb7562377b | 582 | Controller_Slave_IN_BLINK_OFF) { |
AndreaAndreoli | 0:88fb7562377b | 583 | /* During 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:88fb7562377b | 584 | /* '<S3>:14:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 585 | /* '<S3>:14:1' after(1-enable,sec); */ |
AndreaAndreoli | 0:88fb7562377b | 586 | if (Controller_Slave_DW->temporalCounter_i1 >= (uint32_T)ceil((1.0 - |
AndreaAndreoli | 0:88fb7562377b | 587 | Controller_Slave_B->Led_Blue) / 0.1 - 1.0E-9)) { |
AndreaAndreoli | 0:88fb7562377b | 588 | /* Transition: '<S3>:14' */ |
AndreaAndreoli | 0:88fb7562377b | 589 | Controller_Slave_DW->is_BLINK = Controller_Slave_IN_BLINK_ON; |
AndreaAndreoli | 0:88fb7562377b | 590 | Controller_Slave_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:88fb7562377b | 591 | |
AndreaAndreoli | 0:88fb7562377b | 592 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 593 | /* Entry 'BLINK_ON': '<S3>:13' */ |
AndreaAndreoli | 0:88fb7562377b | 594 | /* '<S3>:13:1' led = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 595 | *Controller_Slave_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 596 | } |
AndreaAndreoli | 0:88fb7562377b | 597 | } else { |
AndreaAndreoli | 0:88fb7562377b | 598 | /* During 'BLINK_ON': '<S3>:13' */ |
AndreaAndreoli | 0:88fb7562377b | 599 | /* '<S3>:15:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 600 | /* '<S3>:15:1' after(0.1,sec); */ |
AndreaAndreoli | 0:88fb7562377b | 601 | if (Controller_Slave_DW->temporalCounter_i1 >= 1U) { |
AndreaAndreoli | 0:88fb7562377b | 602 | /* Transition: '<S3>:15' */ |
AndreaAndreoli | 0:88fb7562377b | 603 | Controller_Slave_DW->is_BLINK = Controller_Slave_IN_BLINK_OFF; |
AndreaAndreoli | 0:88fb7562377b | 604 | Controller_Slave_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:88fb7562377b | 605 | |
AndreaAndreoli | 0:88fb7562377b | 606 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 607 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:88fb7562377b | 608 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 609 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 610 | } |
AndreaAndreoli | 0:88fb7562377b | 611 | } |
AndreaAndreoli | 0:88fb7562377b | 612 | } |
AndreaAndreoli | 0:88fb7562377b | 613 | break; |
AndreaAndreoli | 0:88fb7562377b | 614 | |
AndreaAndreoli | 0:88fb7562377b | 615 | case Controller_Slave_IN_OFF1: |
AndreaAndreoli | 0:88fb7562377b | 616 | /* During 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 617 | /* '<S3>:22:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 618 | /* '<S3>:22:1' enable == 1; */ |
AndreaAndreoli | 0:88fb7562377b | 619 | if (Controller_Slave_B->Led_Blue == 1.0) { |
AndreaAndreoli | 0:88fb7562377b | 620 | /* Transition: '<S3>:22' */ |
AndreaAndreoli | 0:88fb7562377b | 621 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_Slave_IN_ON; |
AndreaAndreoli | 0:88fb7562377b | 622 | |
AndreaAndreoli | 0:88fb7562377b | 623 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 624 | /* Entry 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 625 | /* '<S3>:6:1' led = uint8(1); */ |
AndreaAndreoli | 0:88fb7562377b | 626 | *Controller_Slave_Y_LED_BLUE = 1U; |
AndreaAndreoli | 0:88fb7562377b | 627 | } else { |
AndreaAndreoli | 0:88fb7562377b | 628 | /* '<S3>:12:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 629 | /* '<S3>:12:1' enable >0 && enable <1; */ |
AndreaAndreoli | 0:88fb7562377b | 630 | if ((Controller_Slave_B->Led_Blue > 0.0) && |
AndreaAndreoli | 0:88fb7562377b | 631 | (Controller_Slave_B->Led_Blue < 1.0)) { |
AndreaAndreoli | 0:88fb7562377b | 632 | /* Transition: '<S3>:12' */ |
AndreaAndreoli | 0:88fb7562377b | 633 | Controller_Slave_DW->is_c6_Controller_Slave = |
AndreaAndreoli | 0:88fb7562377b | 634 | Controller_Slave_IN_BLINK; |
AndreaAndreoli | 0:88fb7562377b | 635 | |
AndreaAndreoli | 0:88fb7562377b | 636 | /* Entry Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:88fb7562377b | 637 | /* Transition: '<S3>:24' */ |
AndreaAndreoli | 0:88fb7562377b | 638 | Controller_Slave_DW->is_BLINK = Controller_Slave_IN_BLINK_OFF; |
AndreaAndreoli | 0:88fb7562377b | 639 | Controller_Slave_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:88fb7562377b | 640 | |
AndreaAndreoli | 0:88fb7562377b | 641 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 642 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:88fb7562377b | 643 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 644 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 645 | } |
AndreaAndreoli | 0:88fb7562377b | 646 | } |
AndreaAndreoli | 0:88fb7562377b | 647 | break; |
AndreaAndreoli | 0:88fb7562377b | 648 | |
AndreaAndreoli | 0:88fb7562377b | 649 | default: |
AndreaAndreoli | 0:88fb7562377b | 650 | /* During 'ON': '<S3>:6' */ |
AndreaAndreoli | 0:88fb7562377b | 651 | /* '<S3>:4:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 652 | /* '<S3>:4:1' enable == 0; */ |
AndreaAndreoli | 0:88fb7562377b | 653 | if (Controller_Slave_B->Led_Blue == 0.0) { |
AndreaAndreoli | 0:88fb7562377b | 654 | /* Transition: '<S3>:4' */ |
AndreaAndreoli | 0:88fb7562377b | 655 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_Slave_IN_OFF1; |
AndreaAndreoli | 0:88fb7562377b | 656 | |
AndreaAndreoli | 0:88fb7562377b | 657 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 658 | /* Entry 'OFF1': '<S3>:3' */ |
AndreaAndreoli | 0:88fb7562377b | 659 | /* '<S3>:3:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 660 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 661 | } else { |
AndreaAndreoli | 0:88fb7562377b | 662 | /* '<S3>:23:1' sf_internal_predicateOutput = ... */ |
AndreaAndreoli | 0:88fb7562377b | 663 | /* '<S3>:23:1' enable >0 && enable <1; */ |
AndreaAndreoli | 0:88fb7562377b | 664 | if ((Controller_Slave_B->Led_Blue > 0.0) && |
AndreaAndreoli | 0:88fb7562377b | 665 | (Controller_Slave_B->Led_Blue < 1.0)) { |
AndreaAndreoli | 0:88fb7562377b | 666 | /* Transition: '<S3>:23' */ |
AndreaAndreoli | 0:88fb7562377b | 667 | Controller_Slave_DW->is_c6_Controller_Slave = |
AndreaAndreoli | 0:88fb7562377b | 668 | Controller_Slave_IN_BLINK; |
AndreaAndreoli | 0:88fb7562377b | 669 | |
AndreaAndreoli | 0:88fb7562377b | 670 | /* Entry Internal 'BLINK': '<S3>:20' */ |
AndreaAndreoli | 0:88fb7562377b | 671 | /* Transition: '<S3>:24' */ |
AndreaAndreoli | 0:88fb7562377b | 672 | Controller_Slave_DW->is_BLINK = Controller_Slave_IN_BLINK_OFF; |
AndreaAndreoli | 0:88fb7562377b | 673 | Controller_Slave_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:88fb7562377b | 674 | |
AndreaAndreoli | 0:88fb7562377b | 675 | /* Outport: '<Root>/LED_BLUE' */ |
AndreaAndreoli | 0:88fb7562377b | 676 | /* Entry 'BLINK_OFF': '<S3>:11' */ |
AndreaAndreoli | 0:88fb7562377b | 677 | /* '<S3>:11:1' led = uint8(0); */ |
AndreaAndreoli | 0:88fb7562377b | 678 | *Controller_Slave_Y_LED_BLUE = 0U; |
AndreaAndreoli | 0:88fb7562377b | 679 | } |
AndreaAndreoli | 0:88fb7562377b | 680 | } |
AndreaAndreoli | 0:88fb7562377b | 681 | break; |
AndreaAndreoli | 0:88fb7562377b | 682 | } |
AndreaAndreoli | 0:88fb7562377b | 683 | } |
AndreaAndreoli | 0:88fb7562377b | 684 | |
AndreaAndreoli | 0:88fb7562377b | 685 | /* End of Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:88fb7562377b | 686 | |
AndreaAndreoli | 0:88fb7562377b | 687 | /* Update for Memory: '<S1>/Memory' incorporates: |
AndreaAndreoli | 0:88fb7562377b | 688 | * Update for Inport: '<Root>/MASTER' |
AndreaAndreoli | 0:88fb7562377b | 689 | */ |
AndreaAndreoli | 0:88fb7562377b | 690 | Controller_Slave_DW->Memory_PreviousInput = Controller_Slave_U_Master; |
AndreaAndreoli | 0:88fb7562377b | 691 | |
AndreaAndreoli | 0:88fb7562377b | 692 | /* End of Outputs for SubSystem: '<Root>/Controller_Slave' */ |
AndreaAndreoli | 0:88fb7562377b | 693 | } |
AndreaAndreoli | 0:88fb7562377b | 694 | |
AndreaAndreoli | 0:88fb7562377b | 695 | /* Model initialize function */ |
AndreaAndreoli | 0:88fb7562377b | 696 | void Controller_Slave_initialize(RT_MODEL_Controller_Slave_T *const |
AndreaAndreoli | 0:88fb7562377b | 697 | Controller_Slave_M, real_T *Controller_Slave_U_V, real_T |
AndreaAndreoli | 0:88fb7562377b | 698 | *Controller_Slave_U_D_S, uint8_T *Controller_Slave_U_Master, boolean_T |
AndreaAndreoli | 0:88fb7562377b | 699 | *Controller_Slave_U_QA_EN, uint8_T *Controller_Slave_Y_BRAKE, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 700 | *Controller_Slave_Y_ACC, uint8_T *Controller_Slave_Y_LED_RED, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 701 | *Controller_Slave_Y_LED_GREEN, uint8_T *Controller_Slave_Y_LED_BLUE, uint8_T |
AndreaAndreoli | 0:88fb7562377b | 702 | *Controller_Slave_Y_SLAVE) |
AndreaAndreoli | 0:88fb7562377b | 703 | { |
AndreaAndreoli | 0:88fb7562377b | 704 | DW_Controller_Slave_T *Controller_Slave_DW = ((DW_Controller_Slave_T *) |
AndreaAndreoli | 0:88fb7562377b | 705 | Controller_Slave_M->ModelData.dwork); |
AndreaAndreoli | 0:88fb7562377b | 706 | B_Controller_Slave_T *Controller_Slave_B = ((B_Controller_Slave_T *) |
AndreaAndreoli | 0:88fb7562377b | 707 | Controller_Slave_M->ModelData.blockIO); |
AndreaAndreoli | 0:88fb7562377b | 708 | |
AndreaAndreoli | 0:88fb7562377b | 709 | /* Registration code */ |
AndreaAndreoli | 0:88fb7562377b | 710 | |
AndreaAndreoli | 0:88fb7562377b | 711 | /* block I/O */ |
AndreaAndreoli | 0:88fb7562377b | 712 | (void) memset(((void *) Controller_Slave_B), 0, |
AndreaAndreoli | 0:88fb7562377b | 713 | sizeof(B_Controller_Slave_T)); |
AndreaAndreoli | 0:88fb7562377b | 714 | |
AndreaAndreoli | 0:88fb7562377b | 715 | /* states (dwork) */ |
AndreaAndreoli | 0:88fb7562377b | 716 | (void) memset((void *)Controller_Slave_DW, 0, |
AndreaAndreoli | 0:88fb7562377b | 717 | sizeof(DW_Controller_Slave_T)); |
AndreaAndreoli | 0:88fb7562377b | 718 | |
AndreaAndreoli | 0:88fb7562377b | 719 | /* external inputs */ |
AndreaAndreoli | 0:88fb7562377b | 720 | (*Controller_Slave_U_V) = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 721 | (*Controller_Slave_U_D_S) = 0.0; |
AndreaAndreoli | 0:88fb7562377b | 722 | (*Controller_Slave_U_Master) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 723 | (*Controller_Slave_U_QA_EN) = false; |
AndreaAndreoli | 0:88fb7562377b | 724 | |
AndreaAndreoli | 0:88fb7562377b | 725 | /* external outputs */ |
AndreaAndreoli | 0:88fb7562377b | 726 | (*Controller_Slave_Y_BRAKE) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 727 | (*Controller_Slave_Y_ACC) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 728 | (*Controller_Slave_Y_LED_RED) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 729 | (*Controller_Slave_Y_LED_GREEN) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 730 | (*Controller_Slave_Y_LED_BLUE) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 731 | (*Controller_Slave_Y_SLAVE) = 0U; |
AndreaAndreoli | 0:88fb7562377b | 732 | |
AndreaAndreoli | 0:88fb7562377b | 733 | /* SystemInitialize for Atomic SubSystem: '<Root>/Controller_Slave' */ |
AndreaAndreoli | 0:88fb7562377b | 734 | /* InitializeConditions for Memory: '<S1>/Memory' */ |
AndreaAndreoli | 0:88fb7562377b | 735 | Controller_Slave_DW->Memory_PreviousInput = 1U; |
AndreaAndreoli | 0:88fb7562377b | 736 | |
AndreaAndreoli | 0:88fb7562377b | 737 | /* SystemInitialize for Chart: '<S1>/AEB_QA' */ |
AndreaAndreoli | 0:88fb7562377b | 738 | Controller_Slave_DW->is_APPLICATION_THREAD = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 739 | Controller_Slave_DW->is_AEB_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 740 | Controller_Slave_DW->is_QA_ACTIVE = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 741 | Controller_Slave_DW->is_ERRORS_CHECK_THREAD = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 742 | Controller_Slave_DW->is_active_c5_Controller_Slave = 0U; |
AndreaAndreoli | 0:88fb7562377b | 743 | Controller_Slave_DW->En = false; |
AndreaAndreoli | 0:88fb7562377b | 744 | |
AndreaAndreoli | 0:88fb7562377b | 745 | /* SystemInitialize for Chart: '<S1>/select_command' */ |
AndreaAndreoli | 0:88fb7562377b | 746 | Controller_Slave_DW->is_BLINK = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 747 | Controller_Slave_DW->temporalCounter_i1 = 0U; |
AndreaAndreoli | 0:88fb7562377b | 748 | Controller_Slave_DW->is_active_c6_Controller_Slave = 0U; |
AndreaAndreoli | 0:88fb7562377b | 749 | Controller_Slave_DW->is_c6_Controller_Slave = Controller_S_IN_NO_ACTIVE_CHILD; |
AndreaAndreoli | 0:88fb7562377b | 750 | |
AndreaAndreoli | 0:88fb7562377b | 751 | /* End of SystemInitialize for SubSystem: '<Root>/Controller_Slave' */ |
AndreaAndreoli | 0:88fb7562377b | 752 | } |
AndreaAndreoli | 0:88fb7562377b | 753 | |
AndreaAndreoli | 0:88fb7562377b | 754 | /* Model terminate function */ |
AndreaAndreoli | 0:88fb7562377b | 755 | void Controller_Slave_terminate(RT_MODEL_Controller_Slave_T *const |
AndreaAndreoli | 0:88fb7562377b | 756 | Controller_Slave_M) |
AndreaAndreoli | 0:88fb7562377b | 757 | { |
AndreaAndreoli | 0:88fb7562377b | 758 | /* (no terminate code required) */ |
AndreaAndreoli | 0:88fb7562377b | 759 | UNUSED_PARAMETER(Controller_Slave_M); |
AndreaAndreoli | 0:88fb7562377b | 760 | } |
AndreaAndreoli | 0:88fb7562377b | 761 | |
AndreaAndreoli | 0:88fb7562377b | 762 | /* |
AndreaAndreoli | 0:88fb7562377b | 763 | * File trailer for generated code. |
AndreaAndreoli | 0:88fb7562377b | 764 | * |
AndreaAndreoli | 0:88fb7562377b | 765 | * [EOF] |
AndreaAndreoli | 0:88fb7562377b | 766 | */ |
AndreaAndreoli | 0:88fb7562377b | 767 |