diff options
Diffstat (limited to 'policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c')
-rwxr-xr-x[-rw-r--r--] | policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c | 243 |
1 files changed, 210 insertions, 33 deletions
diff --git a/policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c b/policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c index 3903202..2779653 100644..100755 --- a/policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c +++ b/policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c @@ -1,7 +1,7 @@ /************************************************************/ /* ZST_StateTransitionor_func.c */ /* Function and variable source file */ -/* ZIPC Designer Version 1.2.0 */ +/* ZIPC Designer Version 1.2.1 */ /************************************************************/ #include "ZST_include.h" @@ -10,6 +10,12 @@ *************************************************************/ #include <string.h> +#include <stdbool.h> + +#include "../stm_master_apps.h" +#include "../stm_master_remote.h" + +static int stm_ecu_type = StmEcuTypeIVI; //================================= // API @@ -17,34 +23,131 @@ /** * Initialize STM */ -void stmInitializeInner() { +void stmInitializeInner(const char *ecu_name) { + + if (0 == strcmp("slave", ecu_name)) + { + stm_ecu_type = StmEcuTypeIVI; + } + else if (0 == strcmp("master", ecu_name)) + { + stm_ecu_type = StmEcuTypeMeter; + } + else if (0 == strcmp("hud", ecu_name)) + { + stm_ecu_type = StmEcuTypeHUD; + } + else if (0 == strcmp("rse1", ecu_name)) + { + stm_ecu_type = StmEcuTypeRSE1; + } + else if (0 == strcmp("rse2", ecu_name)) + { + stm_ecu_type = StmEcuTypeRSE2; + } + // Initialize previous state memset(&g_stm_prv_state, 0, sizeof(g_stm_prv_state)); // Initialize current state g_stm_crr_state = g_stm_prv_state; - /* Initialize restriction mode state */ - stm_rem_initialize(); - stm_rem_initialize_variable(); + // Initialize map activate state + g_stm_map_is_activated = STM_FALSE; + + switch ( stm_ecu_type ) + { + case StmEcuTypeMeter: + /* Initialize LightstatusBrake state */ + stm_lbs_initialize(); + stm_lbs_initialize_variable(); - // Initialize homecsreen layer - stm_hsl_initialize(); - stm_hsl_initialize_variable(); + /* Initialize AccelPedal state */ + stm_aps_initialize(); + stm_aps_initialize_variable(); - // Initialize apps layer - stm_apl_initialize(); - stm_apl_initialize_variable(); + /* Initialize car state */ + stm_rns_initialize(); + stm_rns_initialize_variable(); - // Initialize near_homecsreen layer - stm_nhl_initialize(); - stm_nhl_initialize_variable(); + /* Initialize restriction mode state */ + stm_rem_initialize(); + stm_rem_initialize_variable(); - /* Initialize restriction layer */ - stm_rel_initialize(); - stm_rel_initialize_variable(); + // Initialize homecsreen layer + stm_hsl_initialize(); + stm_hsl_initialize_variable(); - g_stm_map_is_activated = STM_FALSE; + // Initialize apps layer on master ecu + stm_master_apl_initialize(); + stm_master_apl_initialize_valiable(); + + // Initialize near_homecsreen layer + stm_nhl_initialize(); + stm_nhl_initialize_variable(); + + /* Initialize restriction layer */ + stm_rel_initialize(); + stm_rel_initialize_variable(); + + // Initialize remote layer on master ecu + stm_mst_rmt_initialize(); + stm_mst_rmt_initialize_valiable(); + break; + case StmEcuTypeHUD: + // Initialize remote_hud layer on HUD ecu + stm_rmt_hud_initialize(); + stm_rmt_hud_initialize_variable(); + + // Initialize remote_hud_up_left layer on HUD ecu + stm_rmt_hud_up_left_initialize(); + stm_rmt_hud_up_left_initialize_variable(); + break; + case StmEcuTypeRSE1: + // Initialize remote_rse1 layer on RSE1 ecu + stm_rmt_rse1_initialize(); + stm_rmt_rse1_initialize_variable(); + break; + case StmEcuTypeRSE2: + // Initialize remote_rse2 layer on RSE2 ecu + stm_rmt_rse2_initialize(); + stm_rmt_rse2_initialize_variable(); + break; + case StmEcuTypeIVI: + default: + // Initialize LightstatusBrake state + stm_lbs_initialize(); + stm_lbs_initialize_variable(); + + // Initialize AccelPedal state + stm_aps_initialize(); + stm_aps_initialize_variable(); + + // Initialize car state + stm_rns_initialize(); + stm_rns_initialize_variable(); + + // Initialize restriction mode state + stm_rem_initialize(); + stm_rem_initialize_variable(); + + // Initialize homecsreen layer + stm_hsl_initialize(); + stm_hsl_initialize_variable(); + + // Initialize apps layer + stm_apl_initialize(); + stm_apl_initialize_variable(); + + // Initialize near_homecsreen layer + stm_nhl_initialize(); + stm_nhl_initialize_variable(); + + // Initialize restriction layer + stm_rel_initialize(); + stm_rel_initialize_variable(); + break; + } } /** @@ -55,23 +158,84 @@ int stmTransitionStateInner(int event_id, StmState* state) { g_stm_category = STM_GET_CATEGORY_FROM_ID(event_id); g_stm_area = STM_GET_AREA_FROM_ID(event_id); - // restriction mode - stm_rem_event_call(); + switch ( stm_ecu_type ) + { + case StmEcuTypeMeter: + // LightstatusBrake state + stm_lbs_event_call(); - // homescreen layer - stm_hsl_event_call(); + // AccelPedal state + stm_aps_event_call(); - // apps layer - stm_apl_event_call(); + // Car state + stm_rns_event_call(); - // near_homecsreen layer - stm_nhl_event_call(); + // restriction mode + stm_rem_event_call(); - // restriction layer - stm_rel_event_call(); + // homescreen layer + stm_hsl_event_call(); - // on_screen layer - stm_osl_event_call(); + // apps layer on master ecu + stm_master_apl_event_call(); + + // near_homecsreen layer + stm_nhl_event_call(); + + // restriction layer + stm_rel_event_call(); + + // on_screen layer + stm_osl_event_call(); + + // remote layer on master ecu + stm_mst_rmt_event_call(); + break; + case StmEcuTypeHUD: + // remote_hud layer on HUD ecu + stm_rmt_hud_event_call(); + + // remote_hud_up_left layer on HUD ecu + stm_rmt_hud_up_left_event_call(); + break; + case StmEcuTypeRSE1: + // remote_rse1 layer on RSE1 ecu + stm_rmt_rse1_event_call(); + break; + case StmEcuTypeRSE2: + // remote_rse2 layer on RSE2 ecu + stm_rmt_rse1_event_call(); + break; + case StmEcuTypeIVI: + default: + // LightstatusBrake state + stm_lbs_event_call(); + + // AccelPedal state + stm_aps_event_call(); + + // Car state + stm_rns_event_call(); + + // restriction mode + stm_rem_event_call(); + + // homescreen layer + stm_hsl_event_call(); + + // apps layer + stm_apl_event_call(); + + // near_homecsreen layer + stm_nhl_event_call(); + + // restriction layer + stm_rel_event_call(); + + // on_screen layer + stm_osl_event_call(); + break; + } // Copy current state for return memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state)); @@ -85,8 +249,16 @@ int stmTransitionStateInner(int event_id, StmState* state) { void stmUndoStateInner() { g_stm_event = StmEvtNoUndo; - // apps layer - stm_apl_event_call(); + if (StmEcuTypeMeter == stm_ecu_type) + { + // apps layer on master ecu + stm_master_apl_event_call(); + } + else + { + // apps layer + stm_apl_event_call(); + } // near_homecsreen layer stm_nhl_event_call(); @@ -97,6 +269,11 @@ void stmUndoStateInner() { // on_screen layer stm_osl_event_call(); + if (StmEcuTypeMeter == stm_ecu_type) + { + // remote layer on master ecu + stm_mst_rmt_event_call(); + } + g_stm_crr_state = g_stm_prv_state; } - |