#define STM_FALSE 0
// Event number
-#define STM_EVT_NO_ACTIVATE 0x01
-#define STM_EVT_NO_DEACTIVATE 0x02
-#define STM_EVT_NO_PARKING_BRAKE_OFF 0x03
-#define STM_EVT_NO_PARKING_BRAKE_ON 0x04
-#define STM_EVT_NO_CAR_STOP 0x05
-#define STM_EVT_NO_CAR_RUN 0x06
-#define STM_EVT_NO_TIMER_EXPIRED 0x07
-#define STM_EVT_NO_LAMP_OFF 0x08
-#define STM_EVT_NO_LAMP_ON 0x09
+#define STM_EVT_NO_ACTIVATE 0x01
+#define STM_EVT_NO_DEACTIVATE 0x02
+#define STM_EVT_NO_TRANS_GEAR_N 0x03
+#define STM_EVT_NO_TRANS_GEAR_NOT_N 0x04
+#define STM_EVT_NO_PARKING_BRAKE_OFF 0x05
+#define STM_EVT_NO_PARKING_BRAKE_ON 0x06
+#define STM_EVT_NO_ACCEL_PEDAL_OFF 0x07
+#define STM_EVT_NO_ACCEL_PEDAL_ON 0x08
+#define STM_EVT_NO_TIMER_EXPIRED 0x09
+#define STM_EVT_NO_LAMP_OFF 0x0A
+#define STM_EVT_NO_LAMP_ON 0x0B
+#define STM_EVT_NO_LIGHTSTATUS_BRAKE_OFF 0x0C
+#define STM_EVT_NO_LIGHTSTATUS_BRAKE_ON 0x0D
+#define STM_EVT_NO_RESTRICTION_MODE_OFF 0x0E
+#define STM_EVT_NO_RESTRICTION_MODE_ON 0x0F
// Category number
#define STM_CTG_NO_HOMESCREEN 0x0100
#define STM_CTG_NO_POPUP 0x0500
#define STM_CTG_NO_SYSTEM_ALERT 0x0600
#define STM_CTG_NO_RESTRICTION 0x0700
+#define STM_CTG_NO_SYSTEM 0x0800
// Area number
-#define STM_ARA_NO_FULL 0x010000
-#define STM_ARA_NO_NORMAL 0x020000
-#define STM_ARA_NO_SPLIT_MAIN 0x030000
-#define STM_ARA_NO_SPLIT_SUB 0x040000
-#define STM_ARA_NO_ON_SCREEN 0x050000
-#define STM_ARA_NO_RESTRICTION_NORMAL 0x060000
-#define STM_ARA_NO_RESTRICTION_SPLIT_MAIN 0x070000
-#define STM_ARA_NO_RESTRICTION_SPLIT_SUB 0x080000
+#define STM_ARA_NO_NONE 0x010000
+#define STM_ARA_NO_FULL 0x020000
+#define STM_ARA_NO_NORMAL 0x030000
+#define STM_ARA_NO_SPLIT_MAIN 0x040000
+#define STM_ARA_NO_SPLIT_SUB 0x050000
+#define STM_ARA_NO_POP_UP 0x060000
+#define STM_ARA_NO_RESTRICTION_NORMAL 0x070000
+#define STM_ARA_NO_RESTRICTION_SPLIT_MAIN 0x080000
+#define STM_ARA_NO_RESTRICTION_SPLIT_SUB 0x090000
// Mask
#define STM_MSK_EVT_NO 0x0000FF
#define STM_MSK_CTG_NO 0x00FF00
#define STM_MSK_ARA_NO 0xFF0000
-// Number of events, categories and areas
-#define STM_NUM_EVT 9
-#define STM_NUM_CTG 7
-#define STM_NUM_ARA 8
-
// 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_ {
- gStmCarStateNoStop = 0,
- gStmCarStateNoRun
+ gStmRunningNoStop = 0,
+ gStmRunningNoRun
};
enum stm_lamp_state_ {
gStmLampStateNoOn
};
+enum stm_lightstatus_brake_state_ {
+ gStmLightstatusBrakeStateNoOff = 0,
+ gStmLightstatusBrakeStateNoOn
+};
+
+enum stm_restriction_mode_state_ {
+ gStmRestrictionModeStateNoOff = 0,
+ gStmRestrictionModeStateNoOn
+};
+
enum stm_layout_ {
gStmLayoutNoNone = 0,
- gStmLayoutNoPu,
- gStmLayoutNoSa,
- gStmLayoutNoM1,
- gStmLayoutNoM2,
- gStmLayoutNoMf,
- gStmLayoutNoS1,
- gStmLayoutNoS2,
- gStmLayoutNoG,
- gStmLayoutNoHs,
- gStmLayoutNoRestriction,
- gStmLayoutNoRestrictionSplitMain,
- gStmLayoutNoRestrictionSplitSub,
+ gStmLayoutNoPopUp,
+ gStmLayoutNoSysAlt,
+ gStmLayoutNoMapNml,
+ gStmLayoutNoMapSpl,
+ gStmLayoutNoMapFll,
+ gStmLayoutNoSplNml,
+ gStmLayoutNoSplSpl,
+ gStmLayoutNoGenNml,
+ gStmLayoutNoHms,
+ gStmLayoutNoRstNml,
+ gStmLayoutNoRstSplMain,
+ gStmLayoutNoRstSplSub,
+ gStmLayoutNoSysNml,
+
+ gStmLayoutNoNum,
+
+ gStmLayoutNoMin = gStmLayoutNoNone,
+ gStmLayoutNoMax = gStmLayoutNoNum - 1,
+};
+
+enum stm_event_ {
+ gStmEventNoActive = 0,
+ gStmEventNoDeactive,
+ gStmEventNoTransGearN,
+ gStmEventNoTransGearNotN,
+ gStmEventNoParkingBrakeOff,
+ gStmEventNoParkingBrakeOn,
+ gStmEventNoAccelPedalOff,
+ gStmEventNoAccelPedalOn,
+ gStmEventNoTimerExpired,
+ gStmEventNoLampOff,
+ gStmEventNoLampOn,
+ gStmEventNoLightstatusBrakeOff,
+ gStmEventNoLightstatusBrakeOn,
+ gStmEventNoRestrictionModeOff,
+ gStmEventNoRestrictionModeOn,
+
+ gStmEventNoNum,
+
+ gStmEventNoMin = gStmEventNoActive,
+ gStmEventNoMax = gStmEventNoNum - 1,
+};
+
+enum stm_category_ {
+ gStmCategoryNoHomescreen = 0,
+ gStmCategoryNoMap,
+ gStmCategoryNoGeneral,
+ gStmCategoryNoSplitable,
+ gStmCategoryNoPopup,
+ gStmCategoryNoSystemAlert,
+ gStmCategoryNoRestriction,
+
+ gStmCategoryNoNum,
+
+ gStmCategoryNoMin = gStmCategoryNoHomescreen,
+ gStmCategoryNoMax = gStmCategoryNoNum - 1,
+};
+
+enum stm_area_ {
+ gStmAreaNoNone = 0,
+ gStmAreaNoFullscreen,
+ gStmAreaNoNormal,
+ gStmAreaNoSplitMain,
+ gStmAreaNoSplitSub,
+ gStmAreaNoOnScreen,
+ gStmAreaNoRestrictionNormal,
+ gStmAreaNoRestrictionSplitMain,
+ gStmAreaNoRestrictionSplitSub,
+
+ gStmAreaNoNum,
+
+ gStmAreaNoMin = gStmAreaNoNone,
+ gStmAreaNoMax = gStmAreaNoNum - 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 int gStmEventNo[];
extern const char* gStmCategoryName[];
extern const int gStmCategoryNo[];
extern const char* gStmAreaName[];
extern const int gStmAreaNo[];
-
-// String for state
-extern const char* gStmParkingBrakeStateNo2Name[];
-extern const char* gStmCarStateNo2Name[];
-extern const char* gStmLampStateNo2Name[];
-extern const char* gStmLayoutNo2Name[];
+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 is_changed;
+ int changed;
int state;
} stm_base_state;
-typedef struct stm_layer_state_ {
- stm_base_state on_screen;
- stm_base_state restriction;
- stm_base_state apps;
- stm_base_state homescreen;
-} stm_layer_state;
-
typedef struct {
- stm_base_state parking_brake;
- stm_base_state car;
- stm_base_state lamp;
- stm_layer_state layer;
+ 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