#define STM_FALSE 0
// Event number
-#define STM_EVT_NO_ACTIVATE 0x01
-#define STM_EVT_NO_DEACTIVATE 0x02
-#define STM_EVT_NO_CAR_STOP 0x03
-#define STM_EVT_NO_CAR_RUN 0x04
-#define STM_EVT_NO_TIMER_EXPIRED 0x05
-#define STM_EVT_NO_LAMP_OFF 0x06
-#define STM_EVT_NO_LAMP_ON 0x07
+#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_ACCEL_PEDAL_OFF 0x05
+#define STM_EVT_NO_ACCEL_PEDAL_ON 0x06
+#define STM_EVT_NO_TIMER_EXPIRED 0x07
+#define STM_EVT_NO_LAMP_OFF 0x08
+#define STM_EVT_NO_LAMP_ON 0x09
// Category number
#define STM_CTG_NO_HOMESCREEN 0x0100
#define STM_CTG_NO_SPLITABLE 0x0400
#define STM_CTG_NO_POPUP 0x0500
#define STM_CTG_NO_SYSTEM_ALERT 0x0600
+#define STM_CTG_NO_RESTRICTION 0x0700
// 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_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
// 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_parking_brake_state_ {
+ gStmParkingBrakeStateNoOff = 0,
+ gStmParkingBrakeStateNoOn
+};
+
+enum stm_accel_pedal_state_ {
+ gStmAccelPedalStateNoOff = 0,
+ gStmAccelPedalStateNoOn
+};
+
enum stm_car_state_ {
gStmCarStateNoStop = 0,
gStmCarStateNoRun
gStmLayoutNoS1,
gStmLayoutNoS2,
gStmLayoutNoG,
- gStmLayoutNoHs
+ gStmLayoutNoHs,
+ gStmLayoutNoRestriction,
+ gStmLayoutNoRestrictionSplitMain,
+ gStmLayoutNoRestrictionSplitSub,
};
-#if 0
-// String for state
-const char* gStmCarStateNo2Name[] {
- "car_stop",
- "car_run"
-};
-
-const char* gStmLampStateNo2Name[] {
- "lamp_off",
- "lamp_on"
-};
+extern const char* gStmEventName[];
+extern const int gStmEventNo[];
+extern const char* gStmCategoryName[];
+extern const int gStmCategoryNo[];
+extern const char* gStmAreaName[];
+extern const int gStmAreaNo[];
-const char* gStmLayoutNo2Name[] {
- "none",
- "pu",
- "sa",
- "m1",
- "m2",
- "mf",
- "s1",
- "s2",
- "g",
- "hs",
-};
-#endif
+// String for state
+extern const char* gStmParkingBrakeStateNo2Name[];
+extern const char* gStmAccelPedalStateNo2Name[];
+extern const char* gStmCarStateNo2Name[];
+extern const char* gStmLampStateNo2Name[];
+extern const char* gStmLayoutNo2Name[];
+// Struct for state
typedef struct stm_base_state_ {
int is_changed;
int 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;
-// Struct for state
typedef struct {
+ stm_base_state parking_brake;
+ stm_base_state accel_pedal;
stm_base_state car;
stm_base_state lamp;
stm_layer_state layer;
} stm_state_t;
+
+void stmInitialize();
int stmTransitionState(int event_no, stm_state_t* state);