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,
83 StmCtgNoSoftwareKeyboard,
93 StmCtgNoMin = StmCtgNoNone,
94 StmCtgNoMax = StmCtgNoNum - 1,
106 StmAreaNoRestrictionNormal,
107 StmAreaNoRestrictionSplitMain,
108 StmAreaNoRestrictionSplitSub,
109 StmAreaNoSoftwareKyeboard,
110 StmAreaNoMasterSplitSub,
111 StmAreaNoHUDUpperLeft,
118 StmAreaNoMin = StmAreaNoNone,
119 StmAreaNoMax = StmAreaNoNum - 1,
124 StmLayerNoHomescreen = 0,
127 StmLayerNoNearHomescreen,
128 StmLayerNoRestriction,
132 StmLayerNoRemoteHUDUpperLeft,
133 StmLayerNoRemoteRSE1,
134 StmLayerNoRemoteRSE2,
138 StmLayerNoMin = StmLayerNoHomescreen,
139 StmLayerNoMax = StmLayerNoNum - 1,
142 // Layout kind number
155 StmLayoutNoRstSplMain,
156 StmLayoutNoRstSplSub,
162 StmLayoutNoUpperLeft,
167 StmLayoutNoRmtHudUpLeft,
174 StmLayoutNoDbgSplMain,
175 StmLayoutNoDbgSplSub,
180 StmLayoutNoMin = StmLayoutNoNone,
181 StmLayoutNoMax = StmLayoutNoNum - 1,
184 // Enum for mode state
185 enum StmTransGearStt {
186 StmTransGearSttNoN = 0,
187 StmTransGearSttNoNotN
190 enum StmParkingBrakeStt {
191 StmParkingBrakeSttNoOff = 0,
192 StmParkingBrakeSttNoOn
195 enum StmAccelPedalStt {
196 StmAccelPedalSttNoOff = 0,
201 StmRunningNoStop = 0,
210 enum StmLightstatusBrakeStt {
211 StmLightstatusBrakeSttNoOff = 0,
212 StmLightstatusBrakeSttNoOn
215 enum StmRestrictionModeSttNo {
216 StmRestrictionModeSttNoOff = 0,
217 StmRestrictionModeSttNoOn,
221 enum StmCarElementNo {
222 StmCarElementNoTransGear = 0,
223 StmCarElementNoParkingBrake,
224 StmCarElementNoAccelPedal,
225 StmCarElementNoRunning,
227 StmCarElementNoLightstatusBrake,
228 StmCarElementNoRestrictionMode,
232 StmCarElementNoMin = StmCarElementNoTransGear,
233 StmCarElementNoMax = StmCarElementNoNum - 1,
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[];
246 typedef struct StmBaseState {
251 typedef struct StmState {
252 StmBaseState car_element[StmCarElementNoNum];
253 StmBaseState layer[StmLayerNoNum];
257 void stmInitialize(const char *ecu_name);
258 int stmTransitionState(int event_no, StmState* state);
262 #endif // TMCAGLWM_STM_HPP