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