add source for ces2019
[apps/agl-service-windowmanager-2017.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 // Event number
36 enum StmEvtNo {
37     StmEvtNoNone = 0,
38     StmEvtNoActivate,
39     StmEvtNoDeactivate,
40     StmEvtNoTransGearN,
41     StmEvtNoTransGearNotN,
42     StmEvtNoParkingBrakeOff,
43     StmEvtNoParkingBrakeOn,
44     StmEvtNoAccelPedalOff,
45     StmEvtNoAccelPedalOn,
46     StmEvtNoLampOff,
47     StmEvtNoLampOn,
48     StmEvtNoLightstatusBrakeOff,
49     StmEvtNoLightstatusBrakeOn,
50     StmEvtNoRestrictionModeOff,
51     StmEvtNoRestrictionModeOn,
52     StmEvtNoUndo,
53
54     StmEvtNoNum,
55
56     StmEvtNoMin = StmEvtNoNone,
57     StmEvtNoMax = StmEvtNoNum - 1,
58 };
59
60 // Category number
61 enum StmCtgNo {
62     StmCtgNoNone = 0,
63     StmCtgNoHomescreen,
64     StmCtgNoMap,
65     StmCtgNoGeneral,
66     StmCtgNoSplitable,
67     StmCtgNoSplitableMain,
68     StmCtgNoSplitableSub,
69     StmCtgNoPopUp,
70     StmCtgNoSystemAlert,
71     StmCtgNoRestriction,
72     StmCtgNoSystem,
73     StmCtgNoSoftwareKeyboard,
74     StmCtgNoTbt,
75     StmCtgNoMeter,
76     StmCtgNoReceiver,
77     StmCtgNoDebug,
78
79     StmCtgNoNum,
80
81     StmCtgNoMin = StmCtgNoNone,
82     StmCtgNoMax = StmCtgNoNum - 1,
83 };
84
85 // Area number
86 enum StmAreaNo {
87     StmAreaNoNone = 0,
88     StmAreaNoFullscreen,
89     StmAreaNoNormal,
90     StmAreaNoSplitMain,
91     StmAreaNoSplitSub,
92     StmAreaNoOnScreen,
93     StmAreaNoRestrictionNormal,
94     StmAreaNoRestrictionSplitMain,
95     StmAreaNoRestrictionSplitSub,
96     StmAreaNoSoftwareKyeboard,
97     StmAreaNoMasterSplitSub,
98
99     StmAreaNoNum,
100
101     StmAreaNoMin = StmAreaNoNone,
102     StmAreaNoMax = StmAreaNoNum - 1,
103 };
104
105 // Layer number
106 enum StmLayerNo {
107     StmLayerNoHomescreen = 0,
108     StmLayerNoApps,
109     StmLayerNoNearHomescreen,
110     StmLayerNoRestriction,
111     StmLayerNoOnScreen,
112     StmLayerNoRemote,
113
114     StmLayerNoNum,
115
116     StmLayerNoMin = StmLayerNoHomescreen,
117     StmLayerNoMax = StmLayerNoNum - 1,
118 };
119
120 // Layout kind number
121 enum StmLayoutNo {
122     StmLayoutNoNone = 0,
123     StmLayoutNoPopUp,
124     StmLayoutNoSysAlt,
125     StmLayoutNoMapNml,
126     StmLayoutNoMapSpl,
127     StmLayoutNoMapFll,
128     StmLayoutNoSplNml,
129     StmLayoutNoSplSpl,
130     StmLayoutNoGenNml,
131     StmLayoutNoHms,
132     StmLayoutNoRstNml,
133     StmLayoutNoRstSplMain,
134     StmLayoutNoRstSplSub,
135     StmLayoutNoSysNml,
136     StmLayoutNoSftKbd,
137     StmLayoutNoTbt,
138     StmLayoutNoRmtTbt,
139     StmLayoutNoMtrNml,
140     StmLayoutNoMtrRcv,
141     StmLayoutNoMtrSpl,
142     StmLayoutNoSplRcv,
143     StmLayoutNoRcvSpl,
144     StmLayoutNoDbgNml,
145     StmLayoutNoDbgSplMain,
146     StmLayoutNoDbgSplSub,
147     StmLayoutNoDbgFll,
148
149     StmLayoutNoNum,
150
151     StmLayoutNoMin = StmLayoutNoNone,
152     StmLayoutNoMax = StmLayoutNoNum - 1,
153 };
154
155 // Enum for mode state
156 enum StmTransGearStt {
157     StmTransGearSttNoN = 0,
158     StmTransGearSttNoNotN
159 };
160
161 enum StmParkingBrakeStt {
162     StmParkingBrakeSttNoOff = 0,
163     StmParkingBrakeSttNoOn
164 };
165
166 enum StmAccelPedalStt {
167     StmAccelPedalSttNoOff = 0,
168     StmAccelPedalSttNoOn
169 };
170
171 enum StmCarStt {
172     StmRunningNoStop = 0,
173     StmRunningNoRun
174 };
175
176 enum StmLampStt {
177     StmLampSttNoOff = 0,
178     StmLampSttNoOn
179 };
180
181 enum StmLightstatusBrakeStt {
182     StmLightstatusBrakeSttNoOff = 0,
183     StmLightstatusBrakeSttNoOn
184 };
185
186 enum StmRestrictionModeSttNo {
187     StmRestrictionModeSttNoOff = 0,
188     StmRestrictionModeSttNoOn,
189 };
190
191 // Mode kind number
192 enum StmCarElementNo {
193     StmCarElementNoTransGear = 0,
194     StmCarElementNoParkingBrake,
195     StmCarElementNoAccelPedal,
196     StmCarElementNoRunning,
197     StmCarElementNoLamp,
198     StmCarElementNoLightstatusBrake,
199     StmCarElementNoRestrictionMode,
200
201     StmCarElementNoNum,
202
203     StmCarElementNoMin = StmCarElementNoTransGear,
204     StmCarElementNoMax = StmCarElementNoNum - 1,
205 };
206
207 // String for state
208 extern const char* kStmEventName[];
209 extern const char* kStmCategoryName[];
210 extern const char* kStmAreaName[];
211 extern const char* kStmLayoutName[];
212 extern const char* kStmLayerName[];
213 extern const char* kStmCarElementName[];
214 extern const char** kStmCarElementStateNameList[];
215
216 // Struct for state
217 typedef struct StmBaseState {
218     int changed;
219     int state;
220 } StmBaseState;
221
222 typedef struct StmState {
223     StmBaseState car_element[StmCarElementNoNum];
224     StmBaseState layer[StmLayerNoNum];
225 } StmState;
226
227 // API
228 void stmInitialize(const char *ecu_name);
229 int stmTransitionState(int event_no, StmState* state);
230 void stmUndoState();
231
232
233 #endif  // TMCAGLWM_STM_HPP