Library for the master controller
Dependents: Test_Controller_Master AEB
Diff: Controller_Master.c
- Revision:
- 3:66d07e7a134a
- Parent:
- 2:d114feef8f3b
diff -r d114feef8f3b -r 66d07e7a134a Controller_Master.c --- a/Controller_Master.c Wed Jul 06 08:22:31 2016 +0000 +++ b/Controller_Master.c Sun Jul 10 13:17:48 2016 +0000 @@ -7,12 +7,12 @@ * * Code generated for Simulink model 'Controller_Master'. * - * Model version : 1.6 + * Model version : 1.7 * Simulink Coder version : 8.10 (R2016a) 10-Feb-2016 - * C/C++ source code generated on : Wed Jul 06 10:20:25 2016 + * C/C++ source code generated on : Sun Jul 10 14:56:51 2016 * * Target selection: ert.tlc - * Embedded hardware selection: NXP->Cortex-M4 + * Embedded hardware selection: ARM Compatible->ARM Cortex * Code generation objectives: Unspecified * Validation result: Not run */ @@ -158,124 +158,132 @@ /* During 'ERR': '<S2>:42' */ } - /* During 'APPLICATION_THREAD': '<S2>:32' */ + /* During 'APPLICATION_THREAD': '<S2>:80' */ switch (Controller_Master_DW->is_APPLICATION_THREAD) { case Controller_Master_IN_AEB_ACTIVE: - /* During 'AEB_ACTIVE': '<S2>:1' */ - /* '<S2>:26:1' sf_internal_predicateOutput = ... */ - /* '<S2>:26:1' En == false; */ + /* During 'AEB_ACTIVE': '<S2>:89' */ + /* '<S2>:83:1' sf_internal_predicateOutput = ... */ + /* '<S2>:83:1' En == false; */ if (!Controller_Master_DW->En) { - /* Transition: '<S2>:26' */ - /* Exit Internal 'AEB_ACTIVE': '<S2>:1' */ + /* Transition: '<S2>:83' */ + /* Exit Internal 'AEB_ACTIVE': '<S2>:89' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; + + /* Exit 'AEB_ACTIVE': '<S2>:89' */ + /* '<S2>:89:2' Brake = uint8(0); */ + /* '<S2>:89:3' Led_Blue = 0; */ Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_READY; - /* Entry 'READY': '<S2>:21' */ - /* '<S2>:21:1' Brake = uint8(0); */ + /* Entry 'READY': '<S2>:98' */ + /* '<S2>:98:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:21:1' Led_Blue = 0; */ + /* '<S2>:98:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; - /* '<S2>:21:1' Led_Green = uint8(0); */ + /* '<S2>:98:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; - /* '<S2>:21:4' Acc = uint8(0); */ + /* '<S2>:98:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } else { /* Inport: '<Root>/QA_EN' incorporates: * Inport: '<Root>/V' */ - /* '<S2>:70:1' sf_internal_predicateOutput = ... */ - /* '<S2>:70:1' QA_En == true && V<30; */ + /* '<S2>:85:1' sf_internal_predicateOutput = ... */ + /* '<S2>:85:1' QA_En == true && V<30; */ if (Controller_Master_U_QA_EN && (Controller_Master_U_V < 30.0)) { - /* Transition: '<S2>:70' */ - /* Exit Internal 'AEB_ACTIVE': '<S2>:1' */ + /* Transition: '<S2>:85' */ + /* Exit Internal 'AEB_ACTIVE': '<S2>:89' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; + + /* Exit 'AEB_ACTIVE': '<S2>:89' */ + /* '<S2>:89:2' Brake = uint8(0); */ + /* '<S2>:89:3' Led_Blue = 0; */ Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_QA_ACTIVE; - /* Entry 'QA_ACTIVE': '<S2>:69' */ - /* '<S2>:69:1' K = (V^2)/D; */ - /* Entry Internal 'QA_ACTIVE': '<S2>:69' */ - /* Transition: '<S2>:64' */ + /* Entry 'QA_ACTIVE': '<S2>:101' */ + /* '<S2>:101:1' K = (V^2)/D; */ + /* Entry Internal 'QA_ACTIVE': '<S2>:101' */ + /* Transition: '<S2>:102' */ Controller_Master_DW->is_QA_ACTIVE = Controller_Master_IN_IDLE_k; - /* Entry 'IDLE': '<S2>:67' */ - /* '<S2>:67:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:107' */ + /* '<S2>:107:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:67:1' Led_Blue = 0; */ + /* '<S2>:107:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; - /* '<S2>:67:1' Led_Green = uint8(0); */ + /* '<S2>:107:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; - /* '<S2>:67:4' Acc = uint8(0); */ + /* '<S2>:107:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } else { /* Inport: '<Root>/D_M' */ - /* '<S2>:1:1' K = (V^2)/D; */ + /* '<S2>:89:1' K = (V^2)/D; */ K = Controller_Master_U_V * Controller_Master_U_V / Controller_Master_U_D_M; switch (Controller_Master_DW->is_AEB_ACTIVE) { case Controller_Master_IN_BRAKE: - /* During 'BRAKE': '<S2>:3' */ - /* '<S2>:10:1' sf_internal_predicateOutput = ... */ - /* '<S2>:10:1' K < 100; */ + /* During 'BRAKE': '<S2>:97' */ + /* '<S2>:94:1' sf_internal_predicateOutput = ... */ + /* '<S2>:94:1' K < 100; */ if (K < 100.0) { - /* Transition: '<S2>:10' */ + /* Transition: '<S2>:94' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_WARNING; - /* Entry 'WARNING': '<S2>:5' */ - /* '<S2>:5:1' Brake = uint8(0); */ + /* Entry 'WARNING': '<S2>:96' */ + /* '<S2>:96:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; } break; case Controller_Master_IN_IDLE: - /* During 'IDLE': '<S2>:6' */ - /* '<S2>:12:1' sf_internal_predicateOutput = ... */ - /* '<S2>:12:1' K >= 70; */ + /* During 'IDLE': '<S2>:95' */ + /* '<S2>:91:1' sf_internal_predicateOutput = ... */ + /* '<S2>:91:1' K >= 70; */ if (K >= 70.0) { - /* Transition: '<S2>:12' */ + /* Transition: '<S2>:91' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_WARNING; - /* Entry 'WARNING': '<S2>:5' */ - /* '<S2>:5:1' Brake = uint8(0); */ + /* Entry 'WARNING': '<S2>:96' */ + /* '<S2>:96:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; } break; default: - /* During 'WARNING': '<S2>:5' */ - /* '<S2>:9:1' sf_internal_predicateOutput = ... */ - /* '<S2>:9:1' K >= 100; */ + /* During 'WARNING': '<S2>:96' */ + /* '<S2>:93:1' sf_internal_predicateOutput = ... */ + /* '<S2>:93:1' K >= 100; */ if (K >= 100.0) { - /* Transition: '<S2>:9' */ + /* Transition: '<S2>:93' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_BRAKE; - /* Entry 'BRAKE': '<S2>:3' */ - /* '<S2>:3:1' Brake = uint8(1); */ + /* Entry 'BRAKE': '<S2>:97' */ + /* '<S2>:97:1' Brake = uint8(1); */ *Controller_Master_Y_BRAKE = 1U; - /* '<S2>:3:1' Led_Blue = 1; */ + /* '<S2>:97:1' Led_Blue = 1; */ Controller_Master_B->Led_Blue = 1.0; } else { - /* '<S2>:11:1' sf_internal_predicateOutput = ... */ - /* '<S2>:11:1' K < 70; */ + /* '<S2>:92:1' sf_internal_predicateOutput = ... */ + /* '<S2>:92:1' K < 70; */ if (K < 70.0) { - /* Transition: '<S2>:11' */ + /* Transition: '<S2>:92' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_IDLE; - /* Entry 'IDLE': '<S2>:6' */ - /* '<S2>:6:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:95' */ + /* '<S2>:95:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:6:1' Led_Blue = 0; */ + /* '<S2>:95:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; } else { - /* '<S2>:5:1' Led_Blue = (K-70)/30; */ + /* '<S2>:96:1' Led_Blue = (K-70)/30; */ Controller_Master_B->Led_Blue = (K - 70.0) / 30.0; } } @@ -289,128 +297,143 @@ /* Inport: '<Root>/QA_EN' incorporates: * Inport: '<Root>/V' */ - /* During 'QA_ACTIVE': '<S2>:69' */ - /* '<S2>:71:1' sf_internal_predicateOutput = ... */ - /* '<S2>:71:1' QA_En ~= true || V>=30; */ + /* During 'QA_ACTIVE': '<S2>:101' */ + /* '<S2>:86:1' sf_internal_predicateOutput = ... */ + /* '<S2>:86:1' QA_En ~= true || V>=30; */ if ((!Controller_Master_U_QA_EN) || (Controller_Master_U_V >= 30.0)) { - /* Transition: '<S2>:71' */ - /* Exit Internal 'QA_ACTIVE': '<S2>:69' */ + /* Transition: '<S2>:86' */ + /* Exit Internal 'QA_ACTIVE': '<S2>:101' */ Controller_Master_DW->is_QA_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; + + /* Exit 'QA_ACTIVE': '<S2>:101' */ + /* '<S2>:101:2' Brake = uint8(0); */ + /* '<S2>:101:3' Led_Blue = 0; */ + /* '<S2>:101:4' Led_Green = uint8(0); */ + *Controller_Master_Y_LED_GREEN = 0U; + + /* '<S2>:101:5' Acc = uint8(0); */ + *Controller_Master_Y_ACC = 0U; Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_AEB_ACTIVE; - /* Entry 'AEB_ACTIVE': '<S2>:1' */ - /* '<S2>:1:1' K = (V^2)/D; */ - /* Entry Internal 'AEB_ACTIVE': '<S2>:1' */ - /* Transition: '<S2>:51' */ + /* Entry 'AEB_ACTIVE': '<S2>:89' */ + /* '<S2>:89:1' K = (V^2)/D; */ + /* Entry Internal 'AEB_ACTIVE': '<S2>:89' */ + /* Transition: '<S2>:90' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_IDLE; - /* Entry 'IDLE': '<S2>:6' */ - /* '<S2>:6:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:95' */ + /* '<S2>:95:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:6:1' Led_Blue = 0; */ + /* '<S2>:95:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; } else { - /* '<S2>:79:1' sf_internal_predicateOutput = ... */ - /* '<S2>:79:1' En == false; */ + /* '<S2>:84:1' sf_internal_predicateOutput = ... */ + /* '<S2>:84:1' En == false; */ if (!Controller_Master_DW->En) { - /* Transition: '<S2>:79' */ - /* Exit Internal 'QA_ACTIVE': '<S2>:69' */ + /* Transition: '<S2>:84' */ + /* Exit Internal 'QA_ACTIVE': '<S2>:101' */ Controller_Master_DW->is_QA_ACTIVE = Controller_M_IN_NO_ACTIVE_CHILD; + + /* Exit 'QA_ACTIVE': '<S2>:101' */ + /* '<S2>:101:2' Brake = uint8(0); */ + /* '<S2>:101:3' Led_Blue = 0; */ + /* '<S2>:101:4' Led_Green = uint8(0); */ + /* '<S2>:101:5' Acc = uint8(0); */ Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_READY; - /* Entry 'READY': '<S2>:21' */ - /* '<S2>:21:1' Brake = uint8(0); */ + /* Entry 'READY': '<S2>:98' */ + /* '<S2>:98:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:21:1' Led_Blue = 0; */ + /* '<S2>:98:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; - /* '<S2>:21:1' Led_Green = uint8(0); */ + /* '<S2>:98:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; - /* '<S2>:21:4' Acc = uint8(0); */ + /* '<S2>:98:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } else { /* Inport: '<Root>/D_M' */ - /* '<S2>:69:1' K = (V^2)/D; */ + /* '<S2>:101:1' K = (V^2)/D; */ K = Controller_Master_U_V * Controller_Master_U_V / Controller_Master_U_D_M; switch (Controller_Master_DW->is_QA_ACTIVE) { case Controller_Master_IN_ACCELERATE: - /* During 'ACCELERATE': '<S2>:68' */ - /* '<S2>:75:1' sf_internal_predicateOutput = ... */ - /* '<S2>:75:1' K >= 100; */ + /* During 'ACCELERATE': '<S2>:108' */ + /* '<S2>:103:1' sf_internal_predicateOutput = ... */ + /* '<S2>:103:1' K >= 100; */ if (K >= 100.0) { - /* Transition: '<S2>:75' */ + /* Transition: '<S2>:103' */ Controller_Master_DW->is_QA_ACTIVE = Controller_Master_IN_IDLE_k; - /* Entry 'IDLE': '<S2>:67' */ - /* '<S2>:67:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:107' */ + /* '<S2>:107:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:67:1' Led_Blue = 0; */ + /* '<S2>:107:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; - /* '<S2>:67:1' Led_Green = uint8(0); */ + /* '<S2>:107:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; - /* '<S2>:67:4' Acc = uint8(0); */ + /* '<S2>:107:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } break; case Controller_Master_IN_BRAKE_d: - /* During 'BRAKE': '<S2>:65' */ - /* '<S2>:73:1' sf_internal_predicateOutput = ... */ - /* '<S2>:73:1' K <= 100; */ + /* During 'BRAKE': '<S2>:109' */ + /* '<S2>:105:1' sf_internal_predicateOutput = ... */ + /* '<S2>:105:1' K <= 100; */ if (K <= 100.0) { - /* Transition: '<S2>:73' */ + /* Transition: '<S2>:105' */ Controller_Master_DW->is_QA_ACTIVE = Controller_Master_IN_IDLE_k; - /* Entry 'IDLE': '<S2>:67' */ - /* '<S2>:67:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:107' */ + /* '<S2>:107:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:67:1' Led_Blue = 0; */ + /* '<S2>:107:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; - /* '<S2>:67:1' Led_Green = uint8(0); */ + /* '<S2>:107:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; - /* '<S2>:67:4' Acc = uint8(0); */ + /* '<S2>:107:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } break; default: - /* During 'IDLE': '<S2>:67' */ - /* '<S2>:72:1' sf_internal_predicateOutput = ... */ - /* '<S2>:72:1' K > 100; */ + /* During 'IDLE': '<S2>:107' */ + /* '<S2>:104:1' sf_internal_predicateOutput = ... */ + /* '<S2>:104:1' K > 100; */ if (K > 100.0) { - /* Transition: '<S2>:72' */ + /* Transition: '<S2>:104' */ Controller_Master_DW->is_QA_ACTIVE = Controller_Master_IN_BRAKE_d; - /* Entry 'BRAKE': '<S2>:65' */ - /* '<S2>:65:1' Brake = uint8(1); */ + /* Entry 'BRAKE': '<S2>:109' */ + /* '<S2>:109:1' Brake = uint8(1); */ *Controller_Master_Y_BRAKE = 1U; - /* '<S2>:65:1' Led_Blue = 1; */ + /* '<S2>:109:1' Led_Blue = 1; */ Controller_Master_B->Led_Blue = 1.0; } else { - /* '<S2>:74:1' sf_internal_predicateOutput = ... */ - /* '<S2>:74:1' K < 100; */ + /* '<S2>:106:1' sf_internal_predicateOutput = ... */ + /* '<S2>:106:1' K < 100; */ if (K < 100.0) { - /* Transition: '<S2>:74' */ + /* Transition: '<S2>:106' */ Controller_Master_DW->is_QA_ACTIVE = Controller_Master_IN_ACCELERATE; - /* Entry 'ACCELERATE': '<S2>:68' */ - /* '<S2>:68:1' Led_Green = uint8(1); */ + /* Entry 'ACCELERATE': '<S2>:108' */ + /* '<S2>:108:1' Led_Green = uint8(1); */ *Controller_Master_Y_LED_GREEN = 1U; - /* '<S2>:68:1' Acc = uint8(1); */ + /* '<S2>:108:1' Acc = uint8(1); */ *Controller_Master_Y_ACC = 1U; } } @@ -421,25 +444,25 @@ break; default: - /* During 'READY': '<S2>:21' */ - /* '<S2>:23:1' sf_internal_predicateOutput = ... */ - /* '<S2>:23:1' En == true; */ + /* During 'READY': '<S2>:98' */ + /* '<S2>:82:1' sf_internal_predicateOutput = ... */ + /* '<S2>:82:1' En == true; */ if (Controller_Master_DW->En) { - /* Transition: '<S2>:23' */ + /* Transition: '<S2>:82' */ Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_AEB_ACTIVE; - /* Entry 'AEB_ACTIVE': '<S2>:1' */ - /* '<S2>:1:1' K = (V^2)/D; */ - /* Entry Internal 'AEB_ACTIVE': '<S2>:1' */ - /* Transition: '<S2>:51' */ + /* Entry 'AEB_ACTIVE': '<S2>:89' */ + /* '<S2>:89:1' K = (V^2)/D; */ + /* Entry Internal 'AEB_ACTIVE': '<S2>:89' */ + /* Transition: '<S2>:90' */ Controller_Master_DW->is_AEB_ACTIVE = Controller_Master_IN_IDLE; - /* Entry 'IDLE': '<S2>:6' */ - /* '<S2>:6:1' Brake = uint8(0); */ + /* Entry 'IDLE': '<S2>:95' */ + /* '<S2>:95:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:6:1' Led_Blue = 0; */ + /* '<S2>:95:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; } break; @@ -482,24 +505,24 @@ /* '<S2>:37:1' Master = uint8(1); */ *Controller_Master_Y_MASTER = 1U; - /* Entry Internal 'APPLICATION_THREAD': '<S2>:32' */ - /* Transition: '<S2>:27' */ + /* Entry Internal 'APPLICATION_THREAD': '<S2>:80' */ + /* Transition: '<S2>:81' */ Controller_Master_DW->is_APPLICATION_THREAD = Controller_Master_IN_READY; /* Outport: '<Root>/BRAKE' */ - /* Entry 'READY': '<S2>:21' */ - /* '<S2>:21:1' Brake = uint8(0); */ + /* Entry 'READY': '<S2>:98' */ + /* '<S2>:98:1' Brake = uint8(0); */ *Controller_Master_Y_BRAKE = 0U; - /* '<S2>:21:1' Led_Blue = 0; */ + /* '<S2>:98:1' Led_Blue = 0; */ Controller_Master_B->Led_Blue = 0.0; /* Outport: '<Root>/LED_GREEN' */ - /* '<S2>:21:1' Led_Green = uint8(0); */ + /* '<S2>:98:1' Led_Green = uint8(0); */ *Controller_Master_Y_LED_GREEN = 0U; /* Outport: '<Root>/ACC' */ - /* '<S2>:21:4' Acc = uint8(0); */ + /* '<S2>:98:4' Acc = uint8(0); */ *Controller_Master_Y_ACC = 0U; } else { Controller_Master_AEB_QA(Controller_Master_U_V, Controller_Master_U_D_M, @@ -565,8 +588,8 @@ /* During 'BLINK_OFF': '<S3>:11' */ /* '<S3>:14:1' sf_internal_predicateOutput = ... */ /* '<S3>:14:1' after(1-enable,sec); */ - if ((Controller_Master_DW->temporalCounter_i1 << 1) >= 1.0 - - Controller_Master_B->Led_Blue) { + if (Controller_Master_DW->temporalCounter_i1 >= (uint32_T)ceil((1.0 - + Controller_Master_B->Led_Blue) / 0.1 - 1.0E-9)) { /* Transition: '<S3>:14' */ Controller_Master_DW->is_BLINK = Controller_Master_IN_BLINK_ON; Controller_Master_DW->temporalCounter_i1 = 0U;