Fix place of connection.json
[apps/agl-service-windowmanager.git] / policy_manager / stm / stm.h
1 /*
2  * Copyright (c) 2018 TOYOTA MOTOR CORPORATION
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef TMCAGLWM_STM_HPP
18 #define TMCAGLWM_STM_HPP
19
20 #define STM_TRUE 1
21 #define STM_FALSE 0
22
23 #define STM_CREATE_EVENT_ID(evt, ctg, area) \
24     ((evt) | ((ctg) << 8) | ((area) << 16))
25
26 #define STM_GET_EVENT_FROM_ID(id) \
27     ((id) & 0xFF)
28
29 #define STM_GET_CATEGORY_FROM_ID(id) \
30     (((id) >> 8) & 0xFF)
31
32 #define STM_GET_AREA_FROM_ID(id) \
33     (((id) >> 16) & 0xFF)
34
35 // ECU type
36 enum StmEcuType {
37     StmEcuTypeIVI = 0,
38     StmEcuTypeMeter,
39     StmEcuTypeHUD,
40     StmEcuTypeRSE1,
41     StmEcuTypeRSE2
42 };
43
44 // Event number
45 enum StmEvtNo {
46     StmEvtNoNone = 0,
47     StmEvtNoActivate,
48     StmEvtNoDeactivate,
49     StmEvtNoTransGearN,
50     StmEvtNoTransGearNotN,
51     StmEvtNoParkingBrakeOff,
52     StmEvtNoParkingBrakeOn,
53     StmEvtNoAccelPedalOff,
54     StmEvtNoAccelPedalOn,
55     StmEvtNoLampOff,
56     StmEvtNoLampOn,
57     StmEvtNoLightstatusBrakeOff,
58     StmEvtNoLightstatusBrakeOn,
59     StmEvtNoRestrictionModeOff,
60     StmEvtNoRestrictionModeOn,
61     StmEvtNoUndo,
62
63     StmEvtNoNum,
64
65     StmEvtNoMin = StmEvtNoNone,
66     StmEvtNoMax = StmEvtNoNum - 1,
67 };
68
69 // Category number
70 enum StmCtgNo {
71     StmCtgNoNone = 0,
72     StmCtgNoHomescreen,
73     StmCtgNoMap,
74     StmCtgNoGeneral,
75     StmCtgNoSplitable,
76     StmCtgNoSplitableMain,
77     StmCtgNoSplitableSub,
78     StmCtgNoPopUp,
79     StmCtgNoSystemAlert,
80     StmCtgNoRestriction,
81     StmCtgNoSystem,
82     StmCtgNoLauncher,
83     StmCtgNoSoftwareKeyboard,
84     StmCtgNoTbt,
85     StmCtgNoMeter,
86     StmCtgNoReceiver,
87     StmCtgNoReceiver2,
88     StmCtgNoSpeed,
89     StmCtgNoDebug,
90
91     StmCtgNoNum,
92
93     StmCtgNoMin = StmCtgNoNone,
94     StmCtgNoMax = StmCtgNoNum - 1,
95 };
96
97 // Area number
98 enum StmAreaNo {
99     StmAreaNoNone = 0,
100     StmAreaNoFullscreen,
101     StmAreaNoNormal,
102     StmAreaNoSplitMain,
103     StmAreaNoSplitSub,
104     StmAreaNoUpperLeft,
105     StmAreaNoOnScreen,
106     StmAreaNoRestrictionNormal,
107     StmAreaNoRestrictionSplitMain,
108     StmAreaNoRestrictionSplitSub,
109     StmAreaNoSoftwareKyeboard,
110     StmAreaNoMasterSplitSub,
111     StmAreaNoHUDUpperLeft,
112     StmAreaNoHUDNormal,
113     StmAreaNoRse1Normal,
114     StmAreaNoRse2Normal,
115
116     StmAreaNoNum,
117
118     StmAreaNoMin = StmAreaNoNone,
119     StmAreaNoMax = StmAreaNoNum - 1,
120 };
121
122 // Layer number
123 enum StmLayerNo {
124     StmLayerNoHomescreen = 0,
125     StmLayerNoApps,
126     StmLayerNoNearApps,
127     StmLayerNoNearHomescreen,
128     StmLayerNoRestriction,
129     StmLayerNoOnScreen,
130     StmLayerNoRemote,
131     StmLayerNoRemoteHUD,
132     StmLayerNoRemoteHUDUpperLeft,
133     StmLayerNoRemoteRSE1,
134     StmLayerNoRemoteRSE2,
135
136     StmLayerNoNum,
137
138     StmLayerNoMin = StmLayerNoHomescreen,
139     StmLayerNoMax = StmLayerNoNum - 1,
140 };
141
142 // Layout kind number
143 enum StmLayoutNo {
144     StmLayoutNoNone = 0,
145     StmLayoutNoPopUp,
146     StmLayoutNoSysAlt,
147     StmLayoutNoMapNml,
148     StmLayoutNoMapSpl,
149     StmLayoutNoMapFll,
150     StmLayoutNoSplNml,
151     StmLayoutNoSplSpl,
152     StmLayoutNoGenNml,
153     StmLayoutNoHms,
154     StmLayoutNoRstNml,
155     StmLayoutNoRstSplMain,
156     StmLayoutNoRstSplSub,
157     StmLayoutNoSysNml,
158     StmLayoutNoLchNml,
159     StmLayoutNoLchFll,
160     StmLayoutNoSftKbd,
161     StmLayoutNoTbt,
162     StmLayoutNoUpperLeft,
163     StmLayoutNoRmtTbt,
164     StmLayoutNoRmtRse1,
165     StmLayoutNoRmtRse2,
166     StmLayoutNoRmtHud,
167     StmLayoutNoRmtHudUpLeft,
168     StmLayoutNoMtrNml,
169     StmLayoutNoMtrRcv,
170     StmLayoutNoMtrSpl,
171     StmLayoutNoSplRcv,
172     StmLayoutNoRcvSpl,
173     StmLayoutNoDbgNml,
174     StmLayoutNoDbgSplMain,
175     StmLayoutNoDbgSplSub,
176     StmLayoutNoDbgFll,
177
178     StmLayoutNoNum,
179
180     StmLayoutNoMin = StmLayoutNoNone,
181     StmLayoutNoMax = StmLayoutNoNum - 1,
182 };
183
184 // Enum for mode state
185 enum StmTransGearStt {
186     StmTransGearSttNoN = 0,
187     StmTransGearSttNoNotN
188 };
189
190 enum StmParkingBrakeStt {
191     StmParkingBrakeSttNoOff = 0,
192     StmParkingBrakeSttNoOn
193 };
194
195 enum StmAccelPedalStt {
196     StmAccelPedalSttNoOff = 0,
197     StmAccelPedalSttNoOn
198 };
199
200 enum StmCarStt {
201     StmRunningNoStop = 0,
202     StmRunningNoRun
203 };
204
205 enum StmLampStt {
206     StmLampSttNoOff = 0,
207     StmLampSttNoOn
208 };
209
210 enum StmLightstatusBrakeStt {
211     StmLightstatusBrakeSttNoOff = 0,
212     StmLightstatusBrakeSttNoOn
213 };
214
215 enum StmRestrictionModeSttNo {
216     StmRestrictionModeSttNoOff = 0,
217     StmRestrictionModeSttNoOn,
218 };
219
220 // Mode kind number
221 enum StmCarElementNo {
222     StmCarElementNoTransGear = 0,
223     StmCarElementNoParkingBrake,
224     StmCarElementNoAccelPedal,
225     StmCarElementNoRunning,
226     StmCarElementNoLamp,
227     StmCarElementNoLightstatusBrake,
228     StmCarElementNoRestrictionMode,
229
230     StmCarElementNoNum,
231
232     StmCarElementNoMin = StmCarElementNoTransGear,
233     StmCarElementNoMax = StmCarElementNoNum - 1,
234 };
235
236 // String for state
237 extern const char* kStmEventName[];
238 extern const char* kStmCategoryName[];
239 extern const char* kStmAreaName[];
240 extern const char* kStmLayoutName[];
241 extern const char* kStmLayerName[];
242 extern const char* kStmCarElementName[];
243 extern const char** kStmCarElementStateNameList[];
244
245 // Struct for state
246 typedef struct StmBaseState {
247     int changed;
248     int state;
249 } StmBaseState;
250
251 typedef struct StmState {
252     StmBaseState car_element[StmCarElementNoNum];
253     StmBaseState layer[StmLayerNoNum];
254 } StmState;
255
256 // API
257 void stmInitialize(const char *ecu_name);
258 int stmTransitionState(int event_no, StmState* state);
259 void stmUndoState();
260
261
262 #endif  // TMCAGLWM_STM_HPP