748 lines
26 KiB
C
748 lines
26 KiB
C
/*
|
|
|
|
This program is part of the TACLeBench benchmark suite.
|
|
Version V 1.x
|
|
|
|
Name: powerwindow
|
|
|
|
Author: CoSys-Lab, University of Antwerp
|
|
|
|
Function: powerwindow implement the powerwindow that can be seen in cars nowadays.
|
|
The window can be controlled by either driver or passenger. When an object is
|
|
detected between the window frame and the glass during the raising of the glass,
|
|
the glass will lower down for some distance. This benchmark contains 4 tasks which includes the
|
|
driver side powerwindow, front passenger side powerwindow, back-left passenger side powerwindow,
|
|
back-right passenger side powerwindow. These 4 tasks can be easily adjusted to execute in
|
|
sequential order parallel on single or muti core.
|
|
|
|
Source: https://github.com/tacle/tacle-bench/blob/master/bench/app/PowerWindow/powerwindow.c
|
|
|
|
Changes: a brief summary of major functional changes and formatting)
|
|
* 2023-12-07: Added loop bounds
|
|
|
|
License: GNU General Public License
|
|
|
|
*/
|
|
|
|
#include "powerwindow_HeaderFiles/powerwindow.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_PW_Control_PSG_Front.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_PW_Control_PSG_BackL.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_PW_Control_PSG_BackR.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_PW_Control_DRV.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_debounce.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_controlexclusion.h" /* Control Model's header file */
|
|
#include "powerwindow_HeaderFiles/powerwindow_model_reference_types.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_powerwindow_control.h" /* PW passenger control Model's header file */
|
|
#include "powerwindow_HeaderFiles/powerwindow_rtwtypes.h"
|
|
#include "powerwindow_HeaderFiles/powerwindow_model_reference_types.h"
|
|
/*
|
|
Forward declaration of functions
|
|
*/
|
|
|
|
|
|
void powerwindow_Booleaninputarray_initialize( powerwindow_boolean_T *,
|
|
powerwindow_boolean_T * );
|
|
void powerwindow_Uint8inputarray_initialize( powerwindow_uint8_T *,
|
|
powerwindow_uint8_T * );
|
|
void powerwindow_init();
|
|
void powerwindow_main();
|
|
int powerwindow_return();
|
|
int main( void );
|
|
|
|
|
|
|
|
|
|
//DRV
|
|
void powerwindow_init_DRV( int );
|
|
void powerwindow_input_initialize_DRV( void );
|
|
void powerwindow_initialize_DRV( void );
|
|
void powerwindow_return_DRV( void );
|
|
void powerwindow_DRV_main( void );
|
|
|
|
// PSG_Front
|
|
void powerwindow_init_PSG_Front( int );
|
|
void powerwindow_input_initialize_PSG_Front( void );
|
|
void powerwindow_initialize_PSG_Front( void );
|
|
void powerwindow_return_PSG_Front( void );
|
|
void powerwindow_PSG_Front_main( void );
|
|
|
|
// PSG_BackL
|
|
void powerwindow_init_PSG_BackL( int );
|
|
void powerwindow_input_initialize_PSG_BackL( void );
|
|
void powerwindow_initialize_PSG_BackL( void );
|
|
void powerwindow_return_PSG_BackL( void );
|
|
void powerwindow_PSG_BackL_main( void );
|
|
|
|
// PSG_BackR
|
|
void powerwindow_init_PSG_BackR( int );
|
|
void powerwindow_input_initialize_PSG_BackR( void );
|
|
void powerwindow_initialize_PSG_BackR( void );
|
|
void powerwindow_return_PSG_BackR( void );
|
|
void powerwindow_PSG_BackR_main( void );
|
|
|
|
|
|
|
|
/*
|
|
Declaration of global variables
|
|
*/
|
|
|
|
/* External inputs (root inport signals with auto storage) */
|
|
|
|
extern powerwindow_ExternalInputs_powerwindow_PW_C powerwindow_PW_Control_DRV_U;
|
|
extern powerwindow_ExternalOutputs_powerwindow_PW_ powerwindow_PW_Control_DRV_Y;
|
|
extern powerwindow_ExternalInputs_PW_Control_PSG_Front
|
|
powerwindow_PW_Control_PSG_Front_U;
|
|
extern powerwindow_ExternalInputs_PW_Control_PSG_BackL
|
|
powerwindow_PW_Control_PSG_BackL_U;
|
|
extern powerwindow_ExternalInputs_PW_Control_PSG_BackR
|
|
powerwindow_PW_Control_PSG_BackR_U;
|
|
|
|
|
|
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_DRV_U_Up_Input_DRV[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_DRV_U_Down_Input_DRV[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_Front_U_Up_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_Front_U_Down_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackL_U_Up_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackR_U_Up_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackR_U_Down_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_DRV[ powerwindow_input_length ];
|
|
powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_Input_DRV[ powerwindow_input_length ];
|
|
|
|
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_DRV_U_Up_Input_DRV_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_DRV_U_Down_Input_DRV_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_Front_U_Up_Input_Front_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_Front_U_Down_Input_Front_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackL_U_Up_Input_BackL_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackR_U_Up_Input_BackR_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_Driver_BackR_U_Down_Input_BackR_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_DRV_Array[ powerwindow_input_length ];
|
|
extern powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_DRV_Array[ powerwindow_input_length ];
|
|
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Up_DRV_Input_Front[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Down_DRV_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_Front_U_Up_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_Front_U_Down_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_Front[ powerwindow_input_length ];
|
|
powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_Input_Front[ powerwindow_input_length ];
|
|
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_Front_U_Up_Front_Array[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_Front_U_Down_Front_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Front_Array[ powerwindow_input_length ];
|
|
extern powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_Front_Array[ powerwindow_input_length ];
|
|
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Up_DRV_Input_BackL[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Down_DRV_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackL_U_Up_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackL_U_Down_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackL[ powerwindow_input_length ];
|
|
powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackL[ powerwindow_input_length ];
|
|
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackL_U_Up_BackL_Array[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackL_U_Down_BackL_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_BackL_Array[ powerwindow_input_length ];
|
|
extern powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_BackL_Array[ powerwindow_input_length ];
|
|
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Up_DRV_Input_BackR[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
powerwindow_boolean_T
|
|
powerwindow_controlexclusion_U_Down_DRV_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackR_U_Up_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackR_U_Down_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackR[ powerwindow_input_length ];
|
|
powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackR[ powerwindow_input_length ];
|
|
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackR_U_Up_BackR_Array[ powerwindow_input_length ]; /* Here applied a push-down button, the signal is high when the button is not pressed. */
|
|
extern powerwindow_boolean_T
|
|
powerwindow_debounce_passenger_BackR_U_Down_BackR_Array[ powerwindow_input_length ];
|
|
extern powerwindow_boolean_T
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_BackR_Array[ powerwindow_input_length ];
|
|
extern powerwindow_uint8_T
|
|
powerwindow_powerwindow_control_U_currentsense_BackR_Array[ powerwindow_input_length ];
|
|
|
|
int powerwindow_main_inputcyclecounter;
|
|
|
|
/*
|
|
Initialization- and return-value-related functions
|
|
*/
|
|
void powerwindow_init_DRV( int i )
|
|
{
|
|
powerwindow_PW_Control_DRV_U.In1 =
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_DRV[ i ]; /* The when the window reaches the end of the range, the endofdetectionrange changes to 0. */
|
|
powerwindow_PW_Control_DRV_U.In3 =
|
|
powerwindow_powerwindow_control_U_currentsense_Input_DRV[ i ]; /* When the currentsense is higher than 92 (based on experiments), one object is stuck between the window and the frame. Pinch is set to True.*/
|
|
|
|
powerwindow_PW_Control_DRV_U.In2 =
|
|
powerwindow_debounce_Driver_DRV_U_Up_Input_DRV[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_DRV_U.In4 =
|
|
powerwindow_debounce_Driver_DRV_U_Down_Input_DRV[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
|
|
powerwindow_PW_Control_DRV_U.In5 =
|
|
powerwindow_debounce_Driver_Front_U_Up_Input_Front[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_DRV_U.In6 =
|
|
powerwindow_debounce_Driver_Front_U_Down_Input_Front[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
|
|
powerwindow_PW_Control_DRV_U.In9 =
|
|
powerwindow_debounce_Driver_BackL_U_Up_Input_BackL[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_DRV_U.In10 =
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
|
|
powerwindow_PW_Control_DRV_U.In7 =
|
|
powerwindow_debounce_Driver_BackR_U_Up_Input_BackR[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_DRV_U.In8 =
|
|
powerwindow_debounce_Driver_BackR_U_Down_Input_BackR[ i ]; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
|
|
}
|
|
|
|
void powerwindow_init_PSG_Front( int i )
|
|
{
|
|
|
|
|
|
powerwindow_PW_Control_PSG_Front_U.Up_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out6; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_PSG_Front_U.Down_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out7; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_Front_U.Up_PSG_Front =
|
|
powerwindow_debounce_passenger_Front_U_Up_Input_Front[ i ];
|
|
powerwindow_PW_Control_PSG_Front_U.Down_PSG_Front =
|
|
powerwindow_debounce_passenger_Front_U_Down_Input_Front[ i ]; /* '<Root>/Down'. Here applied a push-down button, the signal is high when the button is not pressed. Change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_Front_U.endofdetectionrange =
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_Front[ i ]; /* The when the window reaches the end of the range, the endofdetectionrange changes to 0. */
|
|
|
|
powerwindow_PW_Control_PSG_Front_U.currentsense =
|
|
powerwindow_powerwindow_control_U_currentsense_Input_Front[ i ]; /* When the currentsense is higher than 92 (based on experiments), one object is stuck between the window and the frame. Pinch is set to True.*/
|
|
|
|
}
|
|
|
|
void powerwindow_init_PSG_BackL( int i )
|
|
{
|
|
|
|
|
|
powerwindow_PW_Control_PSG_BackL_U.Up_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out10; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_PSG_BackL_U.Down_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out11; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_BackL_U.Up_PSG_BackL =
|
|
powerwindow_debounce_passenger_BackL_U_Up_Input_BackL[ i ];
|
|
powerwindow_PW_Control_PSG_BackL_U.Down_PSG_BackL =
|
|
powerwindow_debounce_passenger_BackL_U_Down_Input_BackL[ i ]; /* '<Root>/Down'. Here applied a push-down button, the signal is high when the button is not pressed. Change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_BackL_U.endofdetectionrange =
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackL[ i ]; /* The when the window reaches the end of the range, the endofdetectionrange changes to 0. */
|
|
|
|
powerwindow_PW_Control_PSG_BackL_U.currentsense =
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackL[ i ]; /* When the currentsense is higher than 92 (based on experiments), one object is stuck between the window and the frame. Pinch is set to True.*/
|
|
|
|
}
|
|
|
|
void powerwindow_init_PSG_BackR( int i )
|
|
{
|
|
|
|
|
|
powerwindow_PW_Control_PSG_BackR_U.Up_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out8; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lift the window. */
|
|
powerwindow_PW_Control_PSG_BackR_U.Down_DRV =
|
|
powerwindow_PW_Control_DRV_Y.Out9; /* The debounced control signal from the driver. 1 when the button is not pressed, change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_BackR_U.Up_PSG_BackR =
|
|
powerwindow_debounce_passenger_BackR_U_Up_Input_BackR[ i ];
|
|
powerwindow_PW_Control_PSG_BackR_U.Down_PSG_BackR =
|
|
powerwindow_debounce_passenger_BackR_U_Down_Input_BackR[ i ]; /* '<Root>/Down'. Here applied a push-down button, the signal is high when the button is not pressed. Change to 0 to lower the window. */
|
|
|
|
powerwindow_PW_Control_PSG_BackR_U.endofdetectionrange =
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackR[ i ]; /* The when the window reaches the end of the range, the endofdetectionrange changes to 0. */
|
|
|
|
powerwindow_PW_Control_PSG_BackR_U.currentsense =
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackR[ i ]; /* When the currentsense is higher than 92 (based on experiments), one object is stuck between the window and the frame. Pinch is set to True.*/
|
|
|
|
}
|
|
|
|
void powerwindow_input_initialize_DRV( void )
|
|
{
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_DRV_U_Up_Input_DRV,
|
|
powerwindow_debounce_Driver_DRV_U_Up_Input_DRV_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_DRV_U_Down_Input_DRV,
|
|
powerwindow_debounce_Driver_DRV_U_Down_Input_DRV_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_Front_U_Up_Input_Front,
|
|
powerwindow_debounce_Driver_Front_U_Up_Input_Front_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_Front_U_Down_Input_Front,
|
|
powerwindow_debounce_Driver_Front_U_Down_Input_Front_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_BackL_U_Up_Input_BackL,
|
|
powerwindow_debounce_Driver_BackL_U_Up_Input_BackL_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL,
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_BackL_U_Down_Input_BackL,
|
|
powerwindow_debounce_Driver_BackR_U_Up_Input_BackR_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_Driver_BackR_U_Down_Input_BackR,
|
|
powerwindow_debounce_Driver_BackR_U_Down_Input_BackR_Array );
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_DRV,
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_DRV_Array );
|
|
powerwindow_Uint8inputarray_initialize(
|
|
powerwindow_powerwindow_control_U_currentsense_DRV_Array,
|
|
powerwindow_powerwindow_control_U_currentsense_DRV_Array );
|
|
|
|
}
|
|
|
|
|
|
|
|
void powerwindow_input_initialize_PSG_Front( void )
|
|
{
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_Front_U_Up_Input_Front,
|
|
powerwindow_debounce_passenger_Front_U_Up_Front_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_Front_U_Down_Input_Front,
|
|
powerwindow_debounce_passenger_Front_U_Down_Front_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_Front,
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Front_Array );
|
|
|
|
powerwindow_Uint8inputarray_initialize(
|
|
powerwindow_powerwindow_control_U_currentsense_Input_Front,
|
|
powerwindow_powerwindow_control_U_currentsense_Front_Array );
|
|
|
|
}
|
|
|
|
|
|
void powerwindow_input_initialize_PSG_BackL( void )
|
|
{
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_BackL_U_Up_Input_BackL,
|
|
powerwindow_debounce_passenger_BackL_U_Up_BackL_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_BackL_U_Down_Input_BackL,
|
|
powerwindow_debounce_passenger_BackL_U_Down_BackL_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackL,
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_BackL_Array );
|
|
|
|
powerwindow_Uint8inputarray_initialize(
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackL,
|
|
powerwindow_powerwindow_control_U_currentsense_BackL_Array );
|
|
|
|
}
|
|
|
|
void powerwindow_input_initialize_PSG_BackR( void )
|
|
{
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_BackR_U_Up_Input_BackR,
|
|
powerwindow_debounce_passenger_BackR_U_Up_BackR_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_debounce_passenger_BackR_U_Down_Input_BackR,
|
|
powerwindow_debounce_passenger_BackR_U_Down_BackR_Array );
|
|
|
|
powerwindow_Booleaninputarray_initialize(
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_Input_BackR,
|
|
powerwindow_powerwindow_control_U_endofdetectionrange_BackR_Array );
|
|
|
|
powerwindow_Uint8inputarray_initialize(
|
|
powerwindow_powerwindow_control_U_currentsense_Input_BackR,
|
|
powerwindow_powerwindow_control_U_currentsense_BackR_Array );
|
|
|
|
}
|
|
|
|
void powerwindow_Booleaninputarray_initialize( powerwindow_boolean_T *arrayA,
|
|
powerwindow_boolean_T *arrayB )
|
|
{
|
|
|
|
register int i;
|
|
_Pragma( "loopbound min 977 max 977" )
|
|
for ( i = 0; i < powerwindow_input_length; i++ )
|
|
arrayA[ i ] = arrayB[ i ];
|
|
}
|
|
|
|
void powerwindow_Uint8inputarray_initialize( powerwindow_uint8_T *arrayA,
|
|
powerwindow_uint8_T *arrayB )
|
|
{
|
|
|
|
register int i;
|
|
_Pragma( "loopbound min 977 max 977" )
|
|
for ( i = 0; i < powerwindow_input_length; i++ )
|
|
arrayA[ i ] = arrayB[ i ];
|
|
}
|
|
|
|
void powerwindow_initialize_DRV( void )
|
|
{
|
|
/* Initialize model */
|
|
powerwindow_PW_Control_DRV_initialize();
|
|
|
|
}
|
|
|
|
void powerwindow_initialize_PSG_Front( void )
|
|
{
|
|
/* Initialize model */
|
|
powerwindow_PW_Control_PSG_Front_initialize();
|
|
|
|
}
|
|
|
|
void powerwindow_initialize_PSG_BackL( void )
|
|
{
|
|
/* Initialize model */
|
|
powerwindow_PW_Control_PSG_BackL_initialize();
|
|
|
|
}
|
|
|
|
void powerwindow_initialize_PSG_BackR( void )
|
|
{
|
|
/* Initialize model */
|
|
powerwindow_PW_Control_PSG_BackR_initialize();
|
|
|
|
}
|
|
|
|
|
|
void powerwindow_return_DRV( void )
|
|
{
|
|
/* Terminate model */
|
|
powerwindow_PW_Control_DRV_terminate();
|
|
|
|
}
|
|
|
|
void powerwindow_return_PSG_Front( void )
|
|
{
|
|
/* Terminate model */
|
|
powerwindow_PW_Control_PSG_Front_terminate();
|
|
|
|
}
|
|
|
|
void powerwindow_return_PSG_BackL( void )
|
|
{
|
|
/* Terminate model */
|
|
powerwindow_PW_Control_PSG_BackL_terminate();
|
|
|
|
}
|
|
|
|
void powerwindow_return_PSG_BackR( void )
|
|
{
|
|
/* Terminate model */
|
|
powerwindow_PW_Control_PSG_BackR_terminate();
|
|
|
|
}
|
|
|
|
/*
|
|
Main functions
|
|
*/
|
|
|
|
/*
|
|
Associating powerwindow_main with a real-time clock or interrupt service routine
|
|
is what makes the generated code "real-time". The function powerwindow_main is
|
|
always associated with the base rate of the model. Subrates are managed
|
|
by the base rate from inside the generated code. Enabling/disabling
|
|
interrupts and floating point context switches are target specific. This
|
|
example code indicates where these should take place relative to executing
|
|
the generated code step function. Overrun behavior should be tailored to
|
|
your application needs. This example simply sets an error status in the
|
|
real-time model and returns from powerwindow_main.
|
|
*/
|
|
|
|
|
|
void powerwindow_DRV_main( void )
|
|
{
|
|
|
|
static powerwindow_boolean_T OverrunFlag = 0;
|
|
|
|
/* Disable interrupts here */
|
|
|
|
/* Check for overrun */
|
|
if ( OverrunFlag ) {
|
|
powerwindow_PW_DRV_rtmSetErrorStatus( powerwindow_PW_Control_DRV_M,
|
|
"Overrun" ); //////////
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
OverrunFlag = true;
|
|
|
|
/* Save FPU context here (if necessary) */
|
|
/* Re-enable timer or interrupt here */
|
|
/* Set model inputs here */
|
|
|
|
|
|
powerwindow_PW_Control_DRV_main();
|
|
|
|
/* Get model outputs here */
|
|
|
|
|
|
/* Indicate task complete */
|
|
OverrunFlag = false;
|
|
|
|
/* Disable interrupts here */
|
|
/* Restore FPU context here (if necessary) */
|
|
/* Enable interrupts here */
|
|
|
|
}
|
|
|
|
/*
|
|
The example "main" function illustrates what is required by your
|
|
application code to initialize, execute, and terminate the generated code.
|
|
Attaching powerwindow_main to a real-time clock is target specific. This example
|
|
illustates how you do this relative to initializing the model.
|
|
*/
|
|
|
|
void powerwindow_PSG_Front_main( void )
|
|
{
|
|
|
|
static powerwindow_boolean_T OverrunFlag = 0;
|
|
|
|
/* Disable interrupts here */
|
|
|
|
/* Check for overrun */
|
|
if ( OverrunFlag ) {
|
|
powerwindow_PW_PSG_Front_rtmSetErrorStatus( powerwindow_PW_Control_PSG_Front_M,
|
|
"Overrun" );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
OverrunFlag = true;
|
|
|
|
/* Save FPU context here (if necessary) */
|
|
/* Re-enable timer or interrupt here */
|
|
/* Set model inputs here */
|
|
|
|
|
|
powerwindow_PW_Control_PSG_Front_main();
|
|
|
|
/* Get model outputs here */
|
|
|
|
|
|
/* Indicate task complete */
|
|
OverrunFlag = false;
|
|
|
|
/* Disable interrupts here */
|
|
/* Restore FPU context here (if necessary) */
|
|
/* Enable interrupts here */
|
|
|
|
}
|
|
|
|
void powerwindow_PSG_BackL_main( void )
|
|
{
|
|
|
|
static powerwindow_boolean_T OverrunFlag = 0;
|
|
|
|
/* Disable interrupts here */
|
|
|
|
/* Check for overrun */
|
|
if ( OverrunFlag ) {
|
|
powerwindow_PW_PSG_BackL_rtmSetErrorStatus( powerwindow_PW_Control_PSG_BackL_M,
|
|
"Overrun" );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
OverrunFlag = true;
|
|
|
|
/* Save FPU context here (if necessary) */
|
|
/* Re-enable timer or interrupt here */
|
|
/* Set model inputs here */
|
|
|
|
|
|
powerwindow_PW_Control_PSG_BackL_main();
|
|
|
|
/* Get model outputs here */
|
|
|
|
|
|
/* Indicate task complete */
|
|
OverrunFlag = false;
|
|
|
|
/* Disable interrupts here */
|
|
/* Restore FPU context here (if necessary) */
|
|
/* Enable interrupts here */
|
|
|
|
}
|
|
|
|
void powerwindow_PSG_BackR_main( void )
|
|
{
|
|
|
|
static powerwindow_boolean_T OverrunFlag = 0;
|
|
|
|
/* Disable interrupts here */
|
|
|
|
/* Check for overrun */
|
|
if ( OverrunFlag ) {
|
|
powerwindow_PW_PSG_BackR_rtmSetErrorStatus( powerwindow_PW_Control_PSG_BackR_M,
|
|
"Overrun" );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
OverrunFlag = true;
|
|
|
|
/* Save FPU context here (if necessary) */
|
|
/* Re-enable timer or interrupt here */
|
|
/* Set model inputs here */
|
|
|
|
|
|
powerwindow_PW_Control_PSG_BackR_main();
|
|
|
|
/* Get model outputs here */
|
|
|
|
|
|
/* Indicate task complete */
|
|
OverrunFlag = false;
|
|
|
|
/* Disable interrupts here */
|
|
/* Restore FPU context here (if necessary) */
|
|
/* Enable interrupts here */
|
|
|
|
}
|
|
|
|
void powerwindow_init( void )
|
|
{
|
|
powerwindow_initialize_DRV();
|
|
powerwindow_initialize_PSG_Front();
|
|
powerwindow_initialize_PSG_BackL();
|
|
powerwindow_initialize_PSG_BackR();
|
|
powerwindow_main_inputcyclecounter = 0;
|
|
|
|
}
|
|
|
|
void _Pragma( "entrypoint" ) powerwindow_main( void )
|
|
{
|
|
/* Attach powerwindow_main to a timer or interrupt service routine with
|
|
period 0.005 seconds (the model's base sample time) here. The
|
|
call syntax for powerwindow_main is
|
|
|
|
powerwindow_main();
|
|
*/
|
|
//Task 1: Driver side window
|
|
|
|
|
|
powerwindow_input_initialize_DRV();
|
|
powerwindow_input_initialize_PSG_Front();
|
|
powerwindow_input_initialize_PSG_BackL();
|
|
powerwindow_input_initialize_PSG_BackR();
|
|
|
|
_Pragma( "loopbound min 977 max 977" )
|
|
while ( powerwindow_main_inputcyclecounter < powerwindow_input_length ) {
|
|
|
|
powerwindow_init_DRV( powerwindow_main_inputcyclecounter );
|
|
powerwindow_DRV_main();
|
|
|
|
|
|
//Task 2: Front passenger side window
|
|
|
|
|
|
powerwindow_init_PSG_Front( powerwindow_main_inputcyclecounter );
|
|
powerwindow_PSG_Front_main();
|
|
|
|
|
|
//Task 3: Back left passenger side window
|
|
|
|
|
|
powerwindow_init_PSG_BackL( powerwindow_main_inputcyclecounter );
|
|
powerwindow_PSG_BackL_main();
|
|
|
|
|
|
//Task 4: Back right passenger side window
|
|
|
|
|
|
powerwindow_init_PSG_BackR( powerwindow_main_inputcyclecounter );
|
|
powerwindow_PSG_BackR_main();
|
|
|
|
|
|
powerwindow_main_inputcyclecounter++;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
int powerwindow_return( void )
|
|
{
|
|
powerwindow_return_DRV();
|
|
powerwindow_return_PSG_Front();
|
|
powerwindow_return_PSG_BackL();
|
|
powerwindow_return_PSG_BackR();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
int main( void )
|
|
{
|
|
powerwindow_init();
|
|
powerwindow_main();
|
|
return powerwindow_return();
|
|
}
|
|
|
|
|
|
/*
|
|
File trailer for generated code.
|
|
|
|
[ EOF ]
|
|
*/
|
|
|
|
|
|
|