1 /************************************************************/
2 /* ZST_StateTransitionor_func.c */
3 /* Function and variable source file */
4 /* ZIPC Designer Version 1.2.1 */
5 /************************************************************/
6 #include "ZST_include.h"
8 /*************************************************************
10 *************************************************************/
15 #include "../stm_master_apps.h"
16 #include "../stm_master_remote.h"
18 static int stm_ecu_type = StmEcuTypeIVI;
20 //=================================
22 //=================================
26 void stmInitializeInner(const char *ecu_name) {
28 if (0 == strcmp("slave", ecu_name))
30 stm_ecu_type = StmEcuTypeIVI;
32 else if (0 == strcmp("master", ecu_name))
34 stm_ecu_type = StmEcuTypeMeter;
36 else if (0 == strcmp("hud", ecu_name))
38 stm_ecu_type = StmEcuTypeHUD;
40 else if (0 == strcmp("rse1", ecu_name))
42 stm_ecu_type = StmEcuTypeRSE1;
44 else if (0 == strcmp("rse2", ecu_name))
46 stm_ecu_type = StmEcuTypeRSE2;
49 // Initialize previous state
50 memset(&g_stm_prv_state, 0, sizeof(g_stm_prv_state));
52 // Initialize current state
53 g_stm_crr_state = g_stm_prv_state;
55 // Initialize map activate state
56 g_stm_map_is_activated = STM_FALSE;
58 switch ( stm_ecu_type )
61 /* Initialize LightstatusBrake state */
63 stm_lbs_initialize_variable();
65 /* Initialize AccelPedal state */
67 stm_aps_initialize_variable();
69 /* Initialize car state */
71 stm_rns_initialize_variable();
73 /* Initialize restriction mode state */
75 stm_rem_initialize_variable();
77 // Initialize homecsreen layer
79 stm_hsl_initialize_variable();
81 // Initialize apps layer on master ecu
82 stm_master_apl_initialize();
83 stm_master_apl_initialize_valiable();
85 // Initialize near_homecsreen layer
87 stm_nhl_initialize_variable();
89 /* Initialize restriction layer */
91 stm_rel_initialize_variable();
93 // Initialize remote layer on master ecu
94 stm_mst_rmt_initialize();
95 stm_mst_rmt_initialize_valiable();
98 // Initialize hud apps layer
99 stm_hud_apps_initialize();
100 stm_hud_apps_initialize_variable();
102 // Initialize hud near_apps layer
103 stm_hud_near_apps_initialize();
104 stm_hud_near_apps_initialize_variable();
106 // Initialize remote_hud layer on HUD ecu
107 stm_rmt_hud_initialize();
108 stm_rmt_hud_initialize_variable();
110 // Initialize remote_hud_up_left layer on HUD ecu
111 stm_rmt_hud_up_left_initialize();
112 stm_rmt_hud_up_left_initialize_variable();
115 // Initialize rse1 apps layer
116 stm_rse1_apps_initialize();
117 stm_rse1_apps_initialize_variable();
119 // Initialize remote_rse1 layer on RSE1 ecu
120 stm_rmt_rse1_initialize();
121 stm_rmt_rse1_initialize_variable();
124 // Initialize rse2 apps layer
125 stm_rse2_apps_initialize();
126 stm_rse2_apps_initialize_variable();
128 // Initialize remote_rse2 layer on RSE2 ecu
129 stm_rmt_rse2_initialize();
130 stm_rmt_rse2_initialize_variable();
134 // Initialize LightstatusBrake state
135 stm_lbs_initialize();
136 stm_lbs_initialize_variable();
138 // Initialize AccelPedal state
139 stm_aps_initialize();
140 stm_aps_initialize_variable();
142 // Initialize car state
143 stm_rns_initialize();
144 stm_rns_initialize_variable();
146 // Initialize restriction mode state
147 stm_rem_initialize();
148 stm_rem_initialize_variable();
150 // Initialize homecsreen layer
151 stm_hsl_initialize();
152 stm_hsl_initialize_variable();
154 // Initialize apps layer
155 stm_apl_initialize();
156 stm_apl_initialize_variable();
158 // Initialize near_homecsreen layer
159 stm_nhl_initialize();
160 stm_nhl_initialize_variable();
162 // Initialize restriction layer
163 stm_rel_initialize();
164 stm_rel_initialize_variable();
172 int stmTransitionStateInner(int event_id, StmState* state) {
173 g_stm_event = STM_GET_EVENT_FROM_ID(event_id);
174 g_stm_category = STM_GET_CATEGORY_FROM_ID(event_id);
175 g_stm_area = STM_GET_AREA_FROM_ID(event_id);
177 switch ( stm_ecu_type )
179 case StmEcuTypeMeter:
180 // LightstatusBrake state
181 stm_lbs_event_call();
184 stm_aps_event_call();
187 stm_rns_event_call();
190 stm_rem_event_call();
193 stm_hsl_event_call();
195 // apps layer on master ecu
196 stm_master_apl_event_call();
198 // near_homecsreen layer
199 stm_nhl_event_call();
202 stm_rel_event_call();
205 stm_osl_event_call();
207 // remote layer on master ecu
208 stm_mst_rmt_event_call();
212 stm_hud_apps_event_call();
214 // hud near_apps layer on HUD ecu
215 stm_hud_near_apps_event_call();
217 // remote_hud layer on HUD ecu
218 stm_rmt_hud_event_call();
220 // remote_hud_up_left layer on HUD ecu
221 stm_rmt_hud_up_left_event_call();
225 stm_rse1_apps_event_call();
227 // remote_rse1 layer on RSE1 ecu
228 stm_rmt_rse1_event_call();
232 stm_rse2_apps_event_call();
234 // remote_rse2 layer on RSE2 ecu
235 stm_rmt_rse2_event_call();
239 // LightstatusBrake state
240 stm_lbs_event_call();
243 stm_aps_event_call();
246 stm_rns_event_call();
249 stm_rem_event_call();
252 stm_hsl_event_call();
255 stm_apl_event_call();
257 // near_homecsreen layer
258 stm_nhl_event_call();
261 stm_rel_event_call();
264 stm_osl_event_call();
268 // Copy current state for return
269 memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state));
277 void stmUndoStateInner() {
278 g_stm_event = StmEvtNoUndo;
280 if (StmEcuTypeMeter == stm_ecu_type)
282 // apps layer on master ecu
283 stm_master_apl_event_call();
288 stm_apl_event_call();
291 // near_homecsreen layer
292 stm_nhl_event_call();
295 stm_rel_event_call();
298 stm_osl_event_call();
300 if (StmEcuTypeMeter == stm_ecu_type)
302 // remote layer on master ecu
303 stm_mst_rmt_event_call();
306 g_stm_crr_state = g_stm_prv_state;