Add chage remote app
[apps/agl-service-windowmanager.git] / policy_manager / stm / zipc / StateTransitionor / ZST_StateTransitionor_func.c
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"
7
8 /*************************************************************
9     Function definition
10 *************************************************************/
11
12 #include <string.h>
13 #include <stdbool.h>
14
15 #include "../stm_master_apps.h"
16 #include "../stm_master_remote.h"
17
18 static int stm_ecu_type = StmEcuTypeIVI;
19
20 //=================================
21 // API
22 //=================================
23 /**
24  *  Initialize STM
25  */
26 void stmInitializeInner(const char *ecu_name) {
27
28     if (0 == strcmp("slave", ecu_name))
29     {
30         stm_ecu_type = StmEcuTypeIVI;
31     }
32     else if (0 == strcmp("master", ecu_name))
33     {
34         stm_ecu_type = StmEcuTypeMeter;
35     }
36     else if (0 == strcmp("hud", ecu_name))
37     {
38         stm_ecu_type = StmEcuTypeHUD;
39     }
40     else if (0 == strcmp("rse1", ecu_name))
41     {
42         stm_ecu_type = StmEcuTypeRSE1;
43     }
44     else if (0 == strcmp("rse2", ecu_name))
45     {
46         stm_ecu_type = StmEcuTypeRSE2;
47     }
48
49     // Initialize previous state
50     memset(&g_stm_prv_state, 0, sizeof(g_stm_prv_state));
51
52     // Initialize current state
53     g_stm_crr_state = g_stm_prv_state;
54
55     // Initialize map activate state
56     g_stm_map_is_activated = STM_FALSE;
57
58     switch ( stm_ecu_type )
59     {
60     case StmEcuTypeMeter:
61         /* Initialize LightstatusBrake state */
62         stm_lbs_initialize();
63         stm_lbs_initialize_variable();
64
65         /* Initialize AccelPedal state */
66         stm_aps_initialize();
67         stm_aps_initialize_variable();
68
69         /* Initialize car state */
70         stm_rns_initialize();
71         stm_rns_initialize_variable();
72
73         /* Initialize restriction mode state */
74         stm_rem_initialize();
75         stm_rem_initialize_variable();
76
77         // Initialize homecsreen layer
78         stm_hsl_initialize();
79         stm_hsl_initialize_variable();
80
81         // Initialize apps layer on master ecu
82         stm_master_apl_initialize();
83         stm_master_apl_initialize_valiable();
84
85         // Initialize near_homecsreen layer
86         stm_nhl_initialize();
87         stm_nhl_initialize_variable();
88
89         /* Initialize restriction layer */
90         stm_rel_initialize();
91         stm_rel_initialize_variable();
92
93         // Initialize remote layer on master ecu
94         stm_mst_rmt_initialize();
95         stm_mst_rmt_initialize_valiable();
96         break;
97     case StmEcuTypeHUD:
98         // Initialize hud apps layer
99         stm_hud_apps_initialize();
100         stm_hud_apps_initialize_variable();
101
102         // Initialize hud near_apps layer
103         stm_hud_near_apps_initialize();
104         stm_hud_near_apps_initialize_variable();
105
106         // Initialize remote_hud layer on HUD ecu
107         stm_rmt_hud_initialize();
108         stm_rmt_hud_initialize_variable();
109
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();
113         break;
114     case StmEcuTypeRSE1:
115         // Initialize rse1 apps layer
116         stm_rse1_apps_initialize();
117         stm_rse1_apps_initialize_variable();
118
119         // Initialize remote_rse1 layer on RSE1 ecu
120         stm_rmt_rse1_initialize();
121         stm_rmt_rse1_initialize_variable();
122         break;
123     case StmEcuTypeRSE2:
124         // Initialize rse2 apps  layer
125         stm_rse2_apps_initialize();
126         stm_rse2_apps_initialize_variable();
127
128         // Initialize remote_rse2 layer on RSE2 ecu
129         stm_rmt_rse2_initialize();
130         stm_rmt_rse2_initialize_variable();
131         break;
132     case StmEcuTypeIVI:
133     default:
134         // Initialize LightstatusBrake state
135         stm_lbs_initialize();
136         stm_lbs_initialize_variable();
137
138         // Initialize AccelPedal state
139         stm_aps_initialize();
140         stm_aps_initialize_variable();
141
142         // Initialize car state
143         stm_rns_initialize();
144         stm_rns_initialize_variable();
145
146         // Initialize restriction mode state
147         stm_rem_initialize();
148         stm_rem_initialize_variable();
149
150         // Initialize homecsreen layer
151         stm_hsl_initialize();
152         stm_hsl_initialize_variable();
153
154         // Initialize apps layer
155         stm_apl_initialize();
156         stm_apl_initialize_variable();
157
158         // Initialize near_homecsreen layer
159         stm_nhl_initialize();
160         stm_nhl_initialize_variable();
161
162         // Initialize restriction layer
163         stm_rel_initialize();
164         stm_rel_initialize_variable();
165         break;
166     }
167 }
168
169 /**
170  *  Transition State
171  */
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);
176
177     switch ( stm_ecu_type )
178     {
179     case StmEcuTypeMeter:
180         // LightstatusBrake state
181         stm_lbs_event_call();
182
183         // AccelPedal state
184         stm_aps_event_call();
185
186         // Car state
187         stm_rns_event_call();
188
189         // restriction mode
190         stm_rem_event_call();
191
192         // homescreen layer
193         stm_hsl_event_call();
194
195         // apps layer on master ecu
196         stm_master_apl_event_call();
197
198         // near_homecsreen layer
199         stm_nhl_event_call();
200
201         // restriction layer
202         stm_rel_event_call();
203
204         // on_screen layer
205         stm_osl_event_call();
206
207         // remote layer on master ecu
208         stm_mst_rmt_event_call();
209         break;
210     case StmEcuTypeHUD:
211         // hud apps layer
212         stm_hud_apps_event_call();
213
214         // hud near_apps layer on HUD ecu
215         stm_hud_near_apps_event_call();
216
217         // remote_hud layer on HUD ecu
218         stm_rmt_hud_event_call();
219
220         // remote_hud_up_left layer on HUD ecu
221         stm_rmt_hud_up_left_event_call();
222         break;
223     case StmEcuTypeRSE1:
224         // rse1 apps layer
225         stm_rse1_apps_event_call();
226
227         // remote_rse1 layer on RSE1 ecu
228         stm_rmt_rse1_event_call();
229         break;
230     case StmEcuTypeRSE2:
231         // rse2 apps layer
232         stm_rse2_apps_event_call();
233
234         // remote_rse2 layer on RSE2 ecu
235         stm_rmt_rse2_event_call();
236         break;
237     case StmEcuTypeIVI:
238     default:
239         // LightstatusBrake state
240         stm_lbs_event_call();
241
242         // AccelPedal state
243         stm_aps_event_call();
244
245         // Car state
246         stm_rns_event_call();
247
248         // restriction mode
249         stm_rem_event_call();
250
251         // homescreen layer
252         stm_hsl_event_call();
253
254         // apps layer
255         stm_apl_event_call();
256
257         // near_homecsreen layer
258         stm_nhl_event_call();
259
260         // restriction layer
261         stm_rel_event_call();
262
263         // on_screen layer
264         stm_osl_event_call();
265         break;
266     }
267
268     // Copy current state for return
269     memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state));
270
271     return 0;
272 }
273
274 /**
275  *  Undo State
276  */
277 void stmUndoStateInner() {
278     g_stm_event = StmEvtNoUndo;
279
280     if (StmEcuTypeMeter == stm_ecu_type)
281     {
282         // apps layer on master ecu
283         stm_master_apl_event_call();
284     }
285     else
286     {
287         // apps layer
288         stm_apl_event_call();
289     }
290
291     // near_homecsreen layer
292     stm_nhl_event_call();
293
294     // restriction layer
295     stm_rel_event_call();
296
297     // on_screen layer
298     stm_osl_event_call();
299
300     if (StmEcuTypeMeter == stm_ecu_type)
301     {
302         // remote layer on master ecu
303         stm_mst_rmt_event_call();
304     }
305
306     g_stm_crr_state = g_stm_prv_state;
307 }