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) \
41 StmEvtNoTransGearNotN,
42 StmEvtNoParkingBrakeOff,
43 StmEvtNoParkingBrakeOn,
44 StmEvtNoAccelPedalOff,
48 StmEvtNoLightstatusBrakeOff,
49 StmEvtNoLightstatusBrakeOn,
50 StmEvtNoRestrictionModeOff,
51 StmEvtNoRestrictionModeOn,
56 StmEvtNoMin = StmEvtNoNone,
57 StmEvtNoMax = StmEvtNoNum - 1,
67 StmCtgNoSplitableMain,
73 StmCtgNoSoftwareKeyboard,
81 StmCtgNoMin = StmCtgNoNone,
82 StmCtgNoMax = StmCtgNoNum - 1,
93 StmAreaNoRestrictionNormal,
94 StmAreaNoRestrictionSplitMain,
95 StmAreaNoRestrictionSplitSub,
96 StmAreaNoSoftwareKyeboard,
97 StmAreaNoMasterSplitSub,
101 StmAreaNoMin = StmAreaNoNone,
102 StmAreaNoMax = StmAreaNoNum - 1,
107 StmLayerNoHomescreen = 0,
109 StmLayerNoNearHomescreen,
110 StmLayerNoRestriction,
116 StmLayerNoMin = StmLayerNoHomescreen,
117 StmLayerNoMax = StmLayerNoNum - 1,
120 // Layout kind number
133 StmLayoutNoRstSplMain,
134 StmLayoutNoRstSplSub,
145 StmLayoutNoDbgSplMain,
146 StmLayoutNoDbgSplSub,
151 StmLayoutNoMin = StmLayoutNoNone,
152 StmLayoutNoMax = StmLayoutNoNum - 1,
155 // Enum for mode state
156 enum StmTransGearStt {
157 StmTransGearSttNoN = 0,
158 StmTransGearSttNoNotN
161 enum StmParkingBrakeStt {
162 StmParkingBrakeSttNoOff = 0,
163 StmParkingBrakeSttNoOn
166 enum StmAccelPedalStt {
167 StmAccelPedalSttNoOff = 0,
172 StmRunningNoStop = 0,
181 enum StmLightstatusBrakeStt {
182 StmLightstatusBrakeSttNoOff = 0,
183 StmLightstatusBrakeSttNoOn
186 enum StmRestrictionModeSttNo {
187 StmRestrictionModeSttNoOff = 0,
188 StmRestrictionModeSttNoOn,
192 enum StmCarElementNo {
193 StmCarElementNoTransGear = 0,
194 StmCarElementNoParkingBrake,
195 StmCarElementNoAccelPedal,
196 StmCarElementNoRunning,
198 StmCarElementNoLightstatusBrake,
199 StmCarElementNoRestrictionMode,
203 StmCarElementNoMin = StmCarElementNoTransGear,
204 StmCarElementNoMax = StmCarElementNoNum - 1,
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[];
217 typedef struct StmBaseState {
222 typedef struct StmState {
223 StmBaseState car_element[StmCarElementNoNum];
224 StmBaseState layer[StmLayerNoNum];
228 void stmInitialize(const char *ecu_name);
229 int stmTransitionState(int event_no, StmState* state);
233 #endif // TMCAGLWM_STM_HPP