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_DUMMY_STM_HPP
18 #define TMCAGLWM_DUMMY_STM_HPP
24 #define STM_CREATE_EVENT_ID(evt, ctg, area) \
25 ((evt) | ((ctg) << 8) | ((area) << 16))
27 #define STM_GET_EVENT_FROM_ID(id) \
30 #define STM_GET_CATEGORY_FROM_ID(id) \
33 #define STM_GET_AREA_FROM_ID(id) \
42 StmEvtNoTransGearNotN,
43 StmEvtNoParkingBrakeOff,
44 StmEvtNoParkingBrakeOn,
45 StmEvtNoAccelPedalOff,
49 StmEvtNoLightstatusBrakeOff,
50 StmEvtNoLightstatusBrakeOn,
51 StmEvtNoRestrictionModeOff,
52 StmEvtNoRestrictionModeOn,
56 StmEvtNoMin = StmEvtNoNone,
57 StmEvtNoMax = StmEvtNoNum - 1,
74 StmCtgNoMin = StmCtgNoNone,
75 StmCtgNoMax = StmCtgNoNum - 1,
86 StmAreaNoRestrictionNormal,
87 StmAreaNoRestrictionSplitMain,
88 StmAreaNoRestrictionSplitSub,
92 StmAreaNoMin = StmAreaNoNone,
93 StmAreaNoMax = StmAreaNoNum - 1,
98 StmLayerNoHomescreen = 0,
100 StmLayerNoRestriction,
105 StmLayerNoMin = StmLayerNoHomescreen,
106 StmLayerNoMax = StmLayerNoNum - 1,
122 StmLayoutNoRstSplMain,
123 StmLayoutNoRstSplSub,
128 StmLayoutNoMin = StmLayoutNoNone,
129 StmLayoutNoMax = StmLayoutNoNum - 1,
132 // Car element number
133 enum StmCarElementNo {
134 StmCarElementNoTransGear = 0,
135 StmCarElementNoParkingBrake,
136 StmCarElementNoAccelPedal,
137 StmCarElementNoRunning,
139 StmCarElementNoLightstatusBrake,
140 StmCarElementNoRestrictionMode,
144 StmCarElementNoMin = StmCarElementNoTransGear,
145 StmCarElementNoMax = StmCarElementNoNum - 1,
148 // Enum for car element state
149 enum StmTransGearStt {
150 StmTransGearSttNoN = 0,
151 StmTransGearSttNoNotN
154 enum StmParkingBrakeStt {
155 StmParkingBrakeSttNoOff = 0,
156 StmParkingBrakeSttNoOn
159 enum StmAccelPedalStt {
160 StmAccelPedalSttNoOff = 0,
165 StmRunningNoStop = 0,
174 enum StmLightstatusBrakeStt {
175 StmLightstatusBrakeSttNoOff = 0,
176 StmLightstatusBrakeSttNoOn
179 enum StmRestrictionModeSttNo {
180 StmRestrictionModeSttNoOff = 0,
181 StmRestrictionModeSttNoOn
185 extern const char* kStmEventName[];
186 extern const char* kStmCategoryName[];
187 extern const char* kStmAreaName[];
188 extern const char* kStmLayoutName[];
189 extern const char* kStmLayerName[];
190 extern const char* kStmCarElementName[];
191 extern const char** kStmCarStateNameList[];
194 typedef struct StmBaseState {
199 typedef struct StmState {
200 StmBaseState car_element[StmCarElementNoNum];
201 StmBaseState layer[StmLayerNoNum];
206 stm_base_state car_element[gStmCarElementNoNum];
207 stm_base_state layer[gStmLayerNoNum];
209 typedef struct stm_state_t stm_state_t;
213 void stmInitialize();
214 int stmTransitionState(int event_no, StmState* state);
218 #endif // TMCAGLWM_DUMMY_STM_HPP