Add PolicyManager, related classes and some config files
[apps/agl-service-windowmanager.git] / src / policy_manager / zipc / dummy_stm.c
1
2 #include <string.h>
3 #include "dummy_stm.h"
4
5 stm_state_t g_crr_state = {0};
6 stm_state_t g_prv_state = {0};
7 int g_prv_apps_state_car_stop = 0;
8
9 int stmTransitionState(int event, stm_state_t* state) {
10     int event_no, category_no, area_no;
11     int apps_state, car_state, lamp_state;
12
13     event_no    = event & STM_MSK_EVT_NO;
14     category_no = event & STM_MSK_CTG_NO;
15     area_no     = event & STM_MSK_ARA_NO;
16
17     // Backup previous state
18     g_prv_state = g_crr_state;
19
20     // Get previous state
21     apps_state = g_prv_state.layer.apps.state;
22     car_state  = g_prv_state.car.state;
23     lamp_state = g_prv_state.lamp.state;
24
25     // Clear current state
26     memset(&g_crr_state, 0, sizeof(g_crr_state));
27
28     switch (event_no) {
29     case STM_EVT_NO_ACTIVATE:
30         switch (category_no) {
31         case STM_CTG_NO_HOMESCREEN:
32             // Apps layer
33             g_crr_state.layer.apps.state = gStmLayoutNoNone;
34             g_crr_state.layer.apps.is_changed = STM_TRUE;
35
36             // Homescreen layer
37             g_crr_state.layer.homescreen.state = gStmLayoutNoHs;
38             g_crr_state.layer.homescreen.is_changed = STM_TRUE;
39             break;
40         case STM_CTG_NO_MAP:
41             switch (area_no) {
42             case STM_ARA_NO_FULL:
43                 // Apps layer
44                 switch (apps_state) {
45                 case gStmLayoutNoMf:
46                     // nop
47                     break;
48                 default:
49                     g_crr_state.layer.apps.state = gStmLayoutNoMf;
50                     g_crr_state.layer.apps.is_changed = STM_TRUE;
51                     break;
52                 }
53                 break;
54             case STM_ARA_NO_NORMAL:
55                 // Apps layer
56                 switch (apps_state) {
57                 case gStmLayoutNoM1:
58                     // nop
59                     break;
60                 case gStmLayoutNoS1:
61                     g_crr_state.layer.apps.state = gStmLayoutNoM2;
62                     g_crr_state.layer.apps.is_changed = STM_TRUE;
63                     break;
64                 default:
65                     g_crr_state.layer.apps.state = gStmLayoutNoM1;
66                     g_crr_state.layer.apps.is_changed = STM_TRUE;
67                 }
68                 break;
69             case STM_ARA_NO_SPLIT_MAIN:
70                 // Apps layer
71                 switch (apps_state) {
72                 case gStmLayoutNoS1:
73                 case gStmLayoutNoS2:
74                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
75                     g_crr_state.layer.apps.is_changed = STM_TRUE;
76                     break;
77                 default:
78                     // nop
79                     break;
80                 }
81                 break;
82             }
83             break;
84         case STM_CTG_NO_GENERAL:
85             switch (area_no) {
86             case STM_ARA_NO_NORMAL:
87                 // Apps layer
88                 switch (apps_state) {
89                 case gStmLayoutNoMf:
90                     // nop
91                     break;
92                 default:
93                     g_crr_state.layer.apps.state = gStmLayoutNoG;
94                     g_crr_state.layer.apps.is_changed = STM_TRUE;
95                     break;
96                 }
97                 break;
98             default:
99                 // nop
100                 break;
101             }
102             break;
103         case STM_CTG_NO_SPLITABLE:
104             switch (area_no) {
105             case STM_ARA_NO_NORMAL:
106                 // Apps layer
107                 switch (apps_state) {
108                 case gStmLayoutNoMf:
109                     // nop
110                     break;
111                 case gStmLayoutNoS1:
112                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
113                     g_crr_state.layer.apps.is_changed = STM_TRUE;
114                     break;
115                 default:
116                     g_crr_state.layer.apps.state = gStmLayoutNoS1;
117                     g_crr_state.layer.apps.is_changed = STM_TRUE;
118                     break;
119                 }
120                 break;
121             case STM_ARA_NO_SPLIT_MAIN:
122                 // Apps layer
123                 switch (apps_state) {
124                 case gStmLayoutNoS1:
125                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
126                     g_crr_state.layer.apps.is_changed = STM_TRUE;
127                     break;
128                 case gStmLayoutNoS2:
129                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
130                     g_crr_state.layer.apps.is_changed = STM_TRUE;
131                     break;
132                 default:
133                     // nop
134                     break;
135                 }
136                 break;
137             case STM_ARA_NO_SPLIT_SUB:
138                 // Apps layer
139                 switch (apps_state) {
140                 case gStmLayoutNoM1:
141                     g_crr_state.layer.apps.state = gStmLayoutNoM2;
142                     g_crr_state.layer.apps.is_changed = STM_TRUE;
143                     break;
144                 case gStmLayoutNoM2:
145                     g_crr_state.layer.apps.state = gStmLayoutNoM2;
146                     g_crr_state.layer.apps.is_changed = STM_TRUE;
147                     break;
148                 case gStmLayoutNoS1:
149                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
150                     g_crr_state.layer.apps.is_changed = STM_TRUE;
151                     break;
152                 case gStmLayoutNoS2:
153                     g_crr_state.layer.apps.state = gStmLayoutNoS2;
154                     g_crr_state.layer.apps.is_changed = STM_TRUE;
155                     break;
156                 default:
157                     // nop
158                     break;
159                 }
160                 break;
161             default:
162                 // nop
163                 break;
164             }
165             break;
166         default:
167           // nop
168           break;
169         }
170         break;
171     case STM_EVT_NO_CAR_STOP:
172         if (gStmCarStateNoStop != car_state) {
173             g_crr_state.layer.apps.state = g_prv_apps_state_car_stop;
174             g_crr_state.layer.apps.is_changed = STM_TRUE;
175
176             g_crr_state.car.state = gStmCarStateNoStop;
177             g_crr_state.car.is_changed = STM_TRUE;
178         }
179         break;
180     case STM_EVT_NO_CAR_RUN:
181         if (gStmCarStateNoRun != car_state) {
182             g_prv_apps_state_car_stop = apps_state;
183             g_crr_state.layer.apps.state = gStmLayoutNoM1;
184             g_crr_state.layer.apps.is_changed = STM_TRUE;
185
186             g_crr_state.car.state = gStmCarStateNoRun;
187             g_crr_state.car.is_changed = STM_TRUE;
188         }
189         break;
190     case STM_EVT_NO_LAMP_OFF:
191         if (gStmLampStateNoOff != lamp_state) {
192             g_crr_state.lamp.state = gStmLampStateNoOff;
193             g_crr_state.lamp.is_changed = STM_TRUE;
194         }
195         break;
196     case STM_EVT_NO_LAMP_ON:
197         if (gStmLampStateNoOn != lamp_state) {
198             g_crr_state.lamp.state = gStmLampStateNoOn;
199             g_crr_state.lamp.is_changed = STM_TRUE;
200         }
201         break;
202     default:
203         // nop
204         break;
205     }
206
207     // Copy current state for return
208     memcpy(state, &g_crr_state, sizeof(g_crr_state));
209
210     return 0;
211 }
212