/************************************************************/ /* ZST_StateTransitionor_func.c */ /* Function and variable source file */ /* ZIPC Designer Version 1.2.1 */ /************************************************************/ #include "ZST_include.h" /************************************************************* Function definition *************************************************************/ #include #include #include "../stm_master_apps.h" #include "../stm_master_remote.h" static int stm_ecu_type = StmEcuTypeIVI; //================================= // API //================================= /** * Initialize STM */ 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 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 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 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 hud apps layer stm_hud_apps_initialize(); stm_hud_apps_initialize_variable(); // Initialize hud near_apps layer stm_hud_near_apps_initialize(); stm_hud_near_apps_initialize_variable(); // 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 rse1 apps layer stm_rse1_apps_initialize(); stm_rse1_apps_initialize_variable(); // Initialize remote_rse1 layer on RSE1 ecu stm_rmt_rse1_initialize(); stm_rmt_rse1_initialize_variable(); break; case StmEcuTypeRSE2: // Initialize rse2 apps layer stm_rse2_apps_initialize(); stm_rse2_apps_initialize_variable(); // 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; } } /** * Transition State */ int stmTransitionStateInner(int event_id, StmState* state) { g_stm_event = STM_GET_EVENT_FROM_ID(event_id); g_stm_category = STM_GET_CATEGORY_FROM_ID(event_id); g_stm_area = STM_GET_AREA_FROM_ID(event_id); switch ( stm_ecu_type ) { case StmEcuTypeMeter: // 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 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: // hud apps layer stm_hud_apps_event_call(); // hud near_apps layer on HUD ecu stm_hud_near_apps_event_call(); // 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: // rse1 apps layer stm_rse1_apps_event_call(); // remote_rse1 layer on RSE1 ecu stm_rmt_rse1_event_call(); break; case StmEcuTypeRSE2: // rse2 apps layer stm_rse2_apps_event_call(); // remote_rse2 layer on RSE2 ecu stm_rmt_rse2_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)); return 0; } /** * Undo State */ void stmUndoStateInner() { g_stm_event = StmEvtNoUndo; 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(); // restriction layer stm_rel_event_call(); // 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; }