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 remote_hud layer on HUD ecu
99 stm_rmt_hud_initialize();
100 stm_rmt_hud_initialize_variable();
102 // Initialize remote_hud_up_left layer on HUD ecu
103 stm_rmt_hud_up_left_initialize();
104 stm_rmt_hud_up_left_initialize_variable();
107 // Initialize remote_rse1 layer on RSE1 ecu
108 stm_rmt_rse1_initialize();
109 stm_rmt_rse1_initialize_variable();
112 // Initialize remote_rse2 layer on RSE2 ecu
113 stm_rmt_rse2_initialize();
114 stm_rmt_rse2_initialize_variable();
118 // Initialize LightstatusBrake state
119 stm_lbs_initialize();
120 stm_lbs_initialize_variable();
122 // Initialize AccelPedal state
123 stm_aps_initialize();
124 stm_aps_initialize_variable();
126 // Initialize car state
127 stm_rns_initialize();
128 stm_rns_initialize_variable();
130 // Initialize restriction mode state
131 stm_rem_initialize();
132 stm_rem_initialize_variable();
134 // Initialize homecsreen layer
135 stm_hsl_initialize();
136 stm_hsl_initialize_variable();
138 // Initialize apps layer
139 stm_apl_initialize();
140 stm_apl_initialize_variable();
142 // Initialize near_homecsreen layer
143 stm_nhl_initialize();
144 stm_nhl_initialize_variable();
146 // Initialize restriction layer
147 stm_rel_initialize();
148 stm_rel_initialize_variable();
156 int stmTransitionStateInner(int event_id, StmState* state) {
157 g_stm_event = STM_GET_EVENT_FROM_ID(event_id);
158 g_stm_category = STM_GET_CATEGORY_FROM_ID(event_id);
159 g_stm_area = STM_GET_AREA_FROM_ID(event_id);
161 switch ( stm_ecu_type )
163 case StmEcuTypeMeter:
164 // LightstatusBrake state
165 stm_lbs_event_call();
168 stm_aps_event_call();
171 stm_rns_event_call();
174 stm_rem_event_call();
177 stm_hsl_event_call();
179 // apps layer on master ecu
180 stm_master_apl_event_call();
182 // near_homecsreen layer
183 stm_nhl_event_call();
186 stm_rel_event_call();
189 stm_osl_event_call();
191 // remote layer on master ecu
192 stm_mst_rmt_event_call();
195 // remote_hud layer on HUD ecu
196 stm_rmt_hud_event_call();
198 // remote_hud_up_left layer on HUD ecu
199 stm_rmt_hud_up_left_event_call();
202 // remote_rse1 layer on RSE1 ecu
203 stm_rmt_rse1_event_call();
206 // remote_rse2 layer on RSE2 ecu
207 stm_rmt_rse1_event_call();
211 // LightstatusBrake state
212 stm_lbs_event_call();
215 stm_aps_event_call();
218 stm_rns_event_call();
221 stm_rem_event_call();
224 stm_hsl_event_call();
227 stm_apl_event_call();
229 // near_homecsreen layer
230 stm_nhl_event_call();
233 stm_rel_event_call();
236 stm_osl_event_call();
240 // Copy current state for return
241 memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state));
249 void stmUndoStateInner() {
250 g_stm_event = StmEvtNoUndo;
252 if (StmEcuTypeMeter == stm_ecu_type)
254 // apps layer on master ecu
255 stm_master_apl_event_call();
260 stm_apl_event_call();
263 // near_homecsreen layer
264 stm_nhl_event_call();
267 stm_rel_event_call();
270 stm_osl_event_call();
272 if (StmEcuTypeMeter == stm_ecu_type)
274 // remote layer on master ecu
275 stm_mst_rmt_event_call();
278 g_stm_crr_state = g_stm_prv_state;