Project 2-Highway Assistant-Lane Changing Assistant
Aim:
Model Development of a feature of Highway Assistant-Lane Changing Assistant using MATLAB and Simulink as per MAAB guidelines, producing Model Advisor Report as well as generating Code using AUTOSAR Coder.
Description:
- This model must be developed in MATLAB Simulink per MBD guidelines.
- Code Generation Profile must be Autosar Coder.
- Simulink Data Dictionary must be created for the model & must be linked to the model.
- All the input & output signals must be mapped into the Autosar Editor.
- Model Advisor Report is mandatory & this will be followed by Code Generation.
Code generation:
/*
* Event Support License -- for demonstration use and event support. Not
* for government, research, commercial, or other organizational use.
*
* File: Highway_Assistant_Lane.c
*
* Code generated for Simulink model 'Highway_Assistant_Lane'.
*
* Model version : 1.25
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C/C++ source code generated on : Thu Dec 15 19:12:20 2022
*
* Target selection: autosar.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "Highway_Assistant_Lane.h"
#include "rtwtypes.h"
/* Named constants for Chart: '/Chart' */
#define Highway_Assistant_L_IN_Action_1 ((uint8)1U)
#define Highway_Assistant_L_IN_Action_2 ((uint8)2U)
/* Block states (default storage) */
DW_Highway_Assistant_Lane_T Highway_Assistant_Lane_DW;
/* Model step function */
void Highway_Assistant_Lane_Step(void)
{
sint32 rtb_Highway_Display_Mode_1;
sint32 rtb_Highway_Display_Mode_3;
sint32 rtb_Lane_Display_Mode_4;
sint32 tmp;
uint8 rtb_Lane_Display_Mode_1;
uint8 rtb_Lane_Display_Mode_2;
uint8 rtb_Lane_Display_Mode_3;
/* Chart: '/Chart' incorporates:
* Inport: '/Enable_Display'
* Inport: '/Highway_Input_Signal'
* Inport: '/Input_Switch'
*/
if (Highway_Assistant_Lane_DW.is_active_c3_Highway_Assistant_ == 0U) {
Highway_Assistant_Lane_DW.is_active_c3_Highway_Assistant_ = 1U;
Highway_Assistant_Lane_DW.is_c3_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_1;
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
} else if (Highway_Assistant_Lane_DW.is_c3_Highway_Assistant_Lane ==
Highway_Assistant_L_IN_Action_1) {
if ((Rte_IRead_Highway_Assistant_Lane_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal
() == 1) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Enable_Display_DE_Enable_Display
() == 0) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Input_Switch_DE_Input_Switch()
== 1)) {
Highway_Assistant_Lane_DW.is_c3_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_2;
rtb_Highway_Display_Mode_1 = 213;
rtb_Highway_Display_Mode_3 = 9;
} else {
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
}
/* case IN_Action_2: */
} else if
((Rte_IRead_Highway_Assistant_Lane_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal
() == 1) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Enable_Display_DE_Enable_Display
() == 0) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Input_Switch_DE_Input_Switch() ==
1)) {
Highway_Assistant_Lane_DW.is_c3_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_1;
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
} else {
rtb_Highway_Display_Mode_1 = 213;
rtb_Highway_Display_Mode_3 = 9;
}
/* End of Chart: '/Chart' */
/* Chart: '/Chart' incorporates:
* Inport: '/Enable_Display'
* Inport: '/Input_Switch'
* Inport: '/Lane_Input_Signal'
*/
if (Highway_Assistant_Lane_DW.is_active_c1_Highway_Assistant_ == 0U) {
Highway_Assistant_Lane_DW.is_active_c1_Highway_Assistant_ = 1U;
Highway_Assistant_Lane_DW.is_c1_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_1;
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67;
} else if (Highway_Assistant_Lane_DW.is_c1_Highway_Assistant_Lane ==
Highway_Assistant_L_IN_Action_1) {
if ((Rte_IRead_Highway_Assistant_Lane_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal
() == 6) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Enable_Display_DE_Enable_Display
() == 1) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Input_Switch_DE_Input_Switch()
== 1)) {
Highway_Assistant_Lane_DW.is_c1_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_2;
rtb_Lane_Display_Mode_1 = 127U;
rtb_Lane_Display_Mode_2 = 248U;
rtb_Lane_Display_Mode_3 = 186U;
rtb_Lane_Display_Mode_4 = 84;
} else {
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67;
}
/* case IN_Action_2: */
} else if
((Rte_IRead_Highway_Assistant_Lane_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal
() == 6) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Enable_Display_DE_Enable_Display
() == 0) &&
(Rte_IRead_Highway_Assistant_Lane_Step_Rp_Input_Switch_DE_Input_Switch() ==
1)) {
Highway_Assistant_Lane_DW.is_c1_Highway_Assistant_Lane =
Highway_Assistant_L_IN_Action_1;
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67;
} else {
rtb_Lane_Display_Mode_1 = 127U;
rtb_Lane_Display_Mode_2 = 248U;
rtb_Lane_Display_Mode_3 = 186U;
rtb_Lane_Display_Mode_4 = 84;
}
/* End of Chart: '/Chart' */
/* Switch: '/Switch' incorporates:
* Inport: '/Highway_Input_Signal'
* Switch: '/Switch1'
* Switch: '/Switch2'
* Switch: '/Switch3'
*/
tmp =
Rte_IRead_Highway_Assistant_Lane_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal
();
if (tmp > 0) {
rtb_Lane_Display_Mode_1 = 94U;
}
/* End of Switch: '/Switch' */
/* Outport: '/Display_Mode_1' */
Rte_IWrite_Highway_Assistant_Lane_Step_Pp_Display_Mode_1_DE_Display_Mode_1
(rtb_Lane_Display_Mode_1);
/* Switch: '/Switch1' */
if (tmp > 0) {
rtb_Lane_Display_Mode_2 = (uint8)rtb_Highway_Display_Mode_3;
}
/* Outport: '/Display_Mode_2' */
Rte_IWrite_Highway_Assistant_Lane_Step_Pp_Display_Mode_2_DE_Display_Mode_2
(rtb_Lane_Display_Mode_2);
/* Switch: '/Switch2' */
if (tmp > 0) {
rtb_Lane_Display_Mode_3 = 183U;
}
/* Outport: '/Display_Mode_3' */
Rte_IWrite_Highway_Assistant_Lane_Step_Pp_Display_Mode_3_DE_Display_Mode_3
(rtb_Lane_Display_Mode_3);
/* Switch: '/Switch3' */
if (tmp > 0) {
rtb_Lane_Display_Mode_1 = (uint8)rtb_Highway_Display_Mode_1;
} else {
rtb_Lane_Display_Mode_1 = (uint8)rtb_Lane_Display_Mode_4;
}
/* Outport: '/Display_Mode_4' */
Rte_IWrite_Highway_Assistant_Lane_Step_Pp_Display_Mode_4_DE_Display_Mode_4
(rtb_Lane_Display_Mode_1);
}
/* Model initialize function */
void Highway_Assistant_Lane_Init(void)
{
/* (no initialization code required) */
}
/*
* File trailer for generated code.
*
* [EOF]
*/