487adb55841ca623096dd32dca69eb1c66ce557f
[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     StmCtgNoSoftwareKeyboard,
83     StmCtgNoTbt,
84     StmCtgNoMeter,
85     StmCtgNoReceiver,
86     StmCtgNoDebug,
87
88     StmCtgNoNum,
89
90     StmCtgNoMin = StmCtgNoNone,
91     StmCtgNoMax = StmCtgNoNum - 1,
92 };
93
94 // Area number
95 enum StmAreaNo {
96     StmAreaNoNone = 0,
97     StmAreaNoFullscreen,
98     StmAreaNoNormal,
99     StmAreaNoSplitMain,
100     StmAreaNoSplitSub,
101     StmAreaNoOnScreen,
102     StmAreaNoRestrictionNormal,
103     StmAreaNoRestrictionSplitMain,
104     StmAreaNoRestrictionSplitSub,
105     StmAreaNoSoftwareKyeboard,
106     StmAreaNoMasterSplitSub,
107     StmAreaNoUpperLeft,
108
109     StmAreaNoNum,
110
111     StmAreaNoMin = StmAreaNoNone,
112     StmAreaNoMax = StmAreaNoNum - 1,
113 };
114
115 // Layer number
116 enum StmLayerNo {
117     StmLayerNoHomescreen = 0,
118     StmLayerNoApps,
119     StmLayerNoNearHomescreen,
120     StmLayerNoRestriction,
121     StmLayerNoOnScreen,
122     StmLayerNoRemote,
123     StmLayerNoRemoteHUD,
124     StmLayerNoRemoteHUDUpperLeft,
125     StmLayerNoRemoteRSE1,
126     StmLayerNoRemoteRSE2,
127
128     StmLayerNoNum,
129
130     StmLayerNoMin = StmLayerNoHomescreen,
131     StmLayerNoMax = StmLayerNoNum - 1,
132 };
133
134 // Layout kind number
135 enum StmLayoutNo {
136     StmLayoutNoNone = 0,
137     StmLayoutNoPopUp,
138     StmLayoutNoSysAlt,
139     StmLayoutNoMapNml,
140     StmLayoutNoMapSpl,
141     StmLayoutNoMapFll,
142     StmLayoutNoSplNml,
143     StmLayoutNoSplSpl,
144     StmLayoutNoGenNml,
145     StmLayoutNoHms,
146     StmLayoutNoRstNml,
147     StmLayoutNoRstSplMain,
148     StmLayoutNoRstSplSub,
149     StmLayoutNoSysNml,
150     StmLayoutNoSftKbd,
151     StmLayoutNoTbt,
152     StmLayoutNoRmtTbt,
153     StmLayoutNoRmtRse1,
154     StmLayoutNoRmtRse2,
155     StmLayoutNoRmtHud,
156     StmLayoutNoRmtUpLeft,
157     StmLayoutNoMtrNml,
158     StmLayoutNoMtrRcv,
159     StmLayoutNoMtrSpl,
160     StmLayoutNoSplRcv,
161     StmLayoutNoRcvSpl,
162     StmLayoutNoDbgNml,
163     StmLayoutNoDbgSplMain,
164     StmLayoutNoDbgSplSub,
165     StmLayoutNoDbgFll,
166
167     StmLayoutNoNum,
168
169     StmLayoutNoMin = StmLayoutNoNone,
170     StmLayoutNoMax = StmLayoutNoNum - 1,
171 };
172
173 // Enum for mode state
174 enum StmTransGearStt {
175     StmTransGearSttNoN = 0,
176     StmTransGearSttNoNotN
177 };
178
179 enum StmParkingBrakeStt {
180     StmParkingBrakeSttNoOff = 0,
181     StmParkingBrakeSttNoOn
182 };
183
184 enum StmAccelPedalStt {
185     StmAccelPedalSttNoOff = 0,
186     StmAccelPedalSttNoOn
187 };
188
189 enum StmCarStt {
190     StmRunningNoStop = 0,
191     StmRunningNoRun
192 };
193
194 enum StmLampStt {
195     StmLampSttNoOff = 0,
196     StmLampSttNoOn
197 };
198
199 enum StmLightstatusBrakeStt {
200     StmLightstatusBrakeSttNoOff = 0,
201     StmLightstatusBrakeSttNoOn
202 };
203
204 enum StmRestrictionModeSttNo {
205     StmRestrictionModeSttNoOff = 0,
206     StmRestrictionModeSttNoOn,
207 };
208
209 // Mode kind number
210 enum StmCarElementNo {
211     StmCarElementNoTransGear = 0,
212     StmCarElementNoParkingBrake,
213     StmCarElementNoAccelPedal,
214     StmCarElementNoRunning,
215     StmCarElementNoLamp,
216     StmCarElementNoLightstatusBrake,
217     StmCarElementNoRestrictionMode,
218
219     StmCarElementNoNum,
220
221     StmCarElementNoMin = StmCarElementNoTransGear,
222     StmCarElementNoMax = StmCarElementNoNum - 1,
223 };
224
225 // String for state
226 extern const char* kStmEventName[];
227 extern const char* kStmCategoryName[];
228 extern const char* kStmAreaName[];
229 extern const char* kStmLayoutName[];
230 extern const char* kStmLayerName[];
231 extern const char* kStmCarElementName[];
232 extern const char** kStmCarElementStateNameList[];
233
234 // Struct for state
235 typedef struct StmBaseState {
236     int changed;
237     int state;
238 } StmBaseState;
239
240 typedef struct StmState {
241     StmBaseState car_element[StmCarElementNoNum];
242     StmBaseState layer[StmLayerNoNum];
243 } StmState;
244
245 // API
246 void stmInitialize(const char *ecu_name);
247 int stmTransitionState(int event_no, StmState* state);
248 void stmUndoState();
249
250
251 #endif  // TMCAGLWM_STM_HPP