/* * Copyright (c) 2018 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef TMCAGLWM_DUMMY_STM_HPP #define TMCAGLWM_DUMMY_STM_HPP // TODO: This file should be existed in STM // #define STM_TRUE 1 #define STM_FALSE 0 // Event number enum STM_EVT_NO { STM_EVT_NO_NONE = 0, STM_EVT_NO_ACTIVATE, STM_EVT_NO_DEACTIVATE, STM_EVT_NO_TRANS_GEAR_N, STM_EVT_NO_TRANS_GEAR_NOT_N, STM_EVT_NO_PARKING_BRAKE_OFF, STM_EVT_NO_PARKING_BRAKE_ON, STM_EVT_NO_ACCEL_PEDAL_OFF, STM_EVT_NO_ACCEL_PEDAL_ON, STM_EVT_NO_TIMER_EXPIRED, STM_EVT_NO_LAMP_OFF, STM_EVT_NO_LAMP_ON, STM_EVT_NO_LIGHTSTATUS_BRAKE_OFF, STM_EVT_NO_LIGHTSTATUS_BRAKE_ON, STM_EVT_NO_RESTRICTION_MODE_OFF, STM_EVT_NO_RESTRICTION_MODE_ON, STM_EVT_NO_NUM, STM_EVT_NO_MIN = STM_EVT_NO_NONE, STM_EVT_NO_MAX = STM_EVT_NO_NUM - 1, }; // Category number enum STM_CTG_NO { STM_CTG_NO_NONE = 0, STM_CTG_NO_HOMESCREEN, STM_CTG_NO_MAP, STM_CTG_NO_GENERAL, STM_CTG_NO_SPLITABLE, STM_CTG_NO_POPUP, STM_CTG_NO_SYSTEM_ALERT, STM_CTG_NO_RESTRICTION, STM_CTG_NO_SYSTEM, STM_CTG_NO_NUM, STM_CTG_NO_MIN = STM_CTG_NO_NONE, STM_CTG_NO_MAX = STM_CTG_NO_NUM - 1, }; // Area number enum STM_AREA_NO { STM_AREA_NO_NONE = 0, STM_AREA_NO_FULL, STM_AREA_NO_NORMAL, STM_AREA_NO_SPLIT_MAIN, STM_AREA_NO_SPLIT_SUB, STM_AREA_NO_POP_UP, STM_AREA_NO_RESTRICTION_NORMAL, STM_AREA_NO_RESTRICTION_SPLIT_MAIN, STM_AREA_NO_RESTRICTION_SPLIT_SUB, STM_AREA_NO_NUM, STM_AREA_NO_MIN = STM_AREA_NO_NONE, STM_AREA_NO_MAX = STM_AREA_NO_NUM - 1, }; #define CREATE_EVENT_ID(evt, ctg, area) \ ((evt) | ((ctg) << 8) | ((area) << 16)) #define GET_EVENT_FROM_ID(id) \ ((id) & 0xFF) #define GET_CATEGORY_FROM_ID(id) \ (((id) >> 8) & 0xFF) #define GET_AREA_FROM_ID(id) \ (((id) >> 16) & 0xFF) // Enum for state enum stm_trans_gear_state_ { gStmTransGearStateNoN = 0, gStmTransGearStateNoNotN }; enum stm_parking_brake_state_ { gStmParkingBrakeStateNoOff = 0, gStmParkingBrakeStateNoOn }; enum stm_accel_pedal_state_ { gStmAccelPedalStateNoOff = 0, gStmAccelPedalStateNoOn }; enum stm_car_state_ { gStmRunningNoStop = 0, gStmRunningNoRun }; enum stm_lamp_state_ { gStmLampStateNoOff = 0, gStmLampStateNoOn }; enum stm_lightstatus_brake_state_ { gStmLightstatusBrakeStateNoOff = 0, gStmLightstatusBrakeStateNoOn }; enum stm_restriction_mode_state_ { gStmRestrictionModeStateNoOff = 0, gStmRestrictionModeStateNoOn }; enum stm_layout_ { gStmLayoutNoNone = 0, gStmLayoutNoPopUp, gStmLayoutNoSysAlt, gStmLayoutNoMapNml, gStmLayoutNoMapSpl, gStmLayoutNoMapFll, gStmLayoutNoSplNml, gStmLayoutNoSplSpl, gStmLayoutNoGenNml, gStmLayoutNoHms, gStmLayoutNoRstNml, gStmLayoutNoRstSplMain, gStmLayoutNoRstSplSub, gStmLayoutNoSysNml, gStmLayoutNoNum, gStmLayoutNoMin = gStmLayoutNoNone, gStmLayoutNoMax = gStmLayoutNoNum - 1, }; enum stm_layer_ { gStmLayerNoHomescreen = 0, gStmLayerNoApps, gStmLayerNoRestriction, gStmLayerNoOnScreen, gStmLayerNoNum, gStmLayerNoMin = gStmLayerNoHomescreen, gStmLayerNoMax = gStmLayerNoNum - 1, }; enum stm_car_element_ { gStmCarElementNoTransGear = 0, gStmCarElementNoParkingBrake, gStmCarElementNoAccelPedal, gStmCarElementNoRunning, gStmCarElementNoLamp, gStmCarElementNoLightstatusBrake, gStmCarElementNoRestrictionMode, gStmCarElementNoNum, gStmCarElementNoMin = gStmCarElementNoTransGear, gStmCarElementNoMax = gStmCarElementNoNum - 1, }; // String for state extern const char* gStmEventName[]; extern const char* gStmCategoryName[]; extern const char* gStmAreaName[]; extern const char* gStmLayoutName[]; extern const char* gStmLayerName[]; extern const char* gStmCarElementName[]; extern const char** gStmCarStateNameList[]; // Struct for state typedef struct stm_base_state_ { int changed; int state; } stm_base_state; typedef struct { stm_base_state car_element[gStmCarElementNoNum]; stm_base_state layer[gStmLayerNoNum]; } stm_state_t; void stmInitialize(); int stmTransitionState(int event_no, stm_state_t* state); void stmUndoState(); #endif // TMCAGLWM_DUMMY_STM_HPP