2 * Copyright (c) 2018 TOYOTA MOTOR CORPORATION
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef TMCAGLWM_STM_HPP
18 #define TMCAGLWM_STM_HPP
23 #define STM_CREATE_EVENT_ID(evt, ctg, area) \
24 ((evt) | ((ctg) << 8) | ((area) << 16))
26 #define STM_GET_EVENT_FROM_ID(id) \
29 #define STM_GET_CATEGORY_FROM_ID(id) \
32 #define STM_GET_AREA_FROM_ID(id) \
50 StmEvtNoTransGearNotN,
51 StmEvtNoParkingBrakeOff,
52 StmEvtNoParkingBrakeOn,
53 StmEvtNoAccelPedalOff,
57 StmEvtNoLightstatusBrakeOff,
58 StmEvtNoLightstatusBrakeOn,
59 StmEvtNoRestrictionModeOff,
60 StmEvtNoRestrictionModeOn,
65 StmEvtNoMin = StmEvtNoNone,
66 StmEvtNoMax = StmEvtNoNum - 1,
76 StmCtgNoSplitableMain,
82 StmCtgNoSoftwareKeyboard,
90 StmCtgNoMin = StmCtgNoNone,
91 StmCtgNoMax = StmCtgNoNum - 1,
102 StmAreaNoRestrictionNormal,
103 StmAreaNoRestrictionSplitMain,
104 StmAreaNoRestrictionSplitSub,
105 StmAreaNoSoftwareKyeboard,
106 StmAreaNoMasterSplitSub,
111 StmAreaNoMin = StmAreaNoNone,
112 StmAreaNoMax = StmAreaNoNum - 1,
117 StmLayerNoHomescreen = 0,
119 StmLayerNoNearHomescreen,
120 StmLayerNoRestriction,
124 StmLayerNoRemoteHUDUpperLeft,
125 StmLayerNoRemoteRSE1,
126 StmLayerNoRemoteRSE2,
130 StmLayerNoMin = StmLayerNoHomescreen,
131 StmLayerNoMax = StmLayerNoNum - 1,
134 // Layout kind number
147 StmLayoutNoRstSplMain,
148 StmLayoutNoRstSplSub,
156 StmLayoutNoRmtUpLeft,
163 StmLayoutNoDbgSplMain,
164 StmLayoutNoDbgSplSub,
169 StmLayoutNoMin = StmLayoutNoNone,
170 StmLayoutNoMax = StmLayoutNoNum - 1,
173 // Enum for mode state
174 enum StmTransGearStt {
175 StmTransGearSttNoN = 0,
176 StmTransGearSttNoNotN
179 enum StmParkingBrakeStt {
180 StmParkingBrakeSttNoOff = 0,
181 StmParkingBrakeSttNoOn
184 enum StmAccelPedalStt {
185 StmAccelPedalSttNoOff = 0,
190 StmRunningNoStop = 0,
199 enum StmLightstatusBrakeStt {
200 StmLightstatusBrakeSttNoOff = 0,
201 StmLightstatusBrakeSttNoOn
204 enum StmRestrictionModeSttNo {
205 StmRestrictionModeSttNoOff = 0,
206 StmRestrictionModeSttNoOn,
210 enum StmCarElementNo {
211 StmCarElementNoTransGear = 0,
212 StmCarElementNoParkingBrake,
213 StmCarElementNoAccelPedal,
214 StmCarElementNoRunning,
216 StmCarElementNoLightstatusBrake,
217 StmCarElementNoRestrictionMode,
221 StmCarElementNoMin = StmCarElementNoTransGear,
222 StmCarElementNoMax = StmCarElementNoNum - 1,
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[];
235 typedef struct StmBaseState {
240 typedef struct StmState {
241 StmBaseState car_element[StmCarElementNoNum];
242 StmBaseState layer[StmLayerNoNum];
246 void stmInitialize(const char *ecu_name);
247 int stmTransitionState(int event_no, StmState* state);
251 #endif // TMCAGLWM_STM_HPP