"map",
"general",
"splitable",
- "popup",
+ "pop_up",
"system_alert",
"restriction",
+ "system",
};
const int gStmCategoryNo[] = {
STM_CTG_NO_POPUP,
STM_CTG_NO_SYSTEM_ALERT,
STM_CTG_NO_RESTRICTION,
+ STM_CTG_NO_SYSTEM,
};
const char* gStmAreaName[] = {
- "full",
+ "none",
+ "fullscreen",
"normal",
"split.main",
"split.sub",
- "onscreen",
+ "pop_up",
"restriction.normal",
"restriction.split.main",
"restriction.split.sub",
};
const int gStmAreaNo[] = {
+ STM_ARA_NO_NONE,
STM_ARA_NO_FULL,
STM_ARA_NO_NORMAL,
STM_ARA_NO_SPLIT_MAIN,
STM_ARA_NO_SPLIT_SUB,
- STM_ARA_NO_ON_SCREEN,
+ STM_ARA_NO_POP_UP,
STM_ARA_NO_RESTRICTION_NORMAL,
STM_ARA_NO_RESTRICTION_SPLIT_MAIN,
STM_ARA_NO_RESTRICTION_SPLIT_SUB,
};
// String for state
-const char* gStmTransGearStateNo2Name[] = {
- "trans_gear_neutral",
- "trans_gear_not_neutral"
+const char* gStmTransGearStateName[] = {
+ "neutral",
+ "not_neutral"
};
-const char* gStmParkingBrakeStateNo2Name[] = {
- "parking_brake_off",
- "parking_brake_on"
+const char* gStmParkingBrakeStateName[] = {
+ "off",
+ "on"
};
-const char* gStmAccelPedalStateNo2Name[] = {
- "accel_pedal_off",
- "accel_pedal_on"
+const char* gStmAccelPedalStateName[] = {
+ "off",
+ "on"
};
-const char* gStmCarStateNo2Name[] = {
- "car_stop",
- "car_run"
+const char* gStmRunningStateNo2Name[] = {
+ "stop",
+ "run"
};
-const char* gStmLampStateNo2Name[] = {
- "lamp_off",
- "lamp_on"
+const char* gStmLampStateName[] = {
+ "off",
+ "on"
};
-const char* gStmLightstatusBrakeStateNo2Name[] = {
- "lightstatus_brake_off",
- "lightstatus_brake_on"
+const char* gStmLightstatusBrakeStateName[] = {
+ "off",
+ "on"
};
-const char* gStmRestrictionModeStateNo2Name[] = {
- "restriction_mode_off",
- "restriction_mode_on"
+const char* gStmRestrictionModeStateName[] = {
+ "off",
+ "on"
};
-const char* gStmLayoutNo2Name[] = {
+const char* gStmLayoutName[] = {
"none",
"pu",
"sa",
"restriction",
"restriction.split.main",
"restriction.split.sub",
+ "system",
+};
+
+const char* gStmLayerName[] = {
+ "homescreen",
+ "apps",
+ "restriction",
+ "on_screen",
+};
+
+const char* gStmCarElementName[] = {
+ "trans_gear",
+ "parking_brake",
+ "accel_pedal",
+ "running",
+ "lamp",
+ "lightstatus_brake",
+ "restriction_mode",
+};
+
+const char** gStmCarStateNameList[] = {
+ gStmTransGearStateName,
+ gStmParkingBrakeStateName,
+ gStmAccelPedalStateName,
+ gStmRunningStateNo2Name,
+ gStmLampStateName,
+ gStmLightstatusBrakeStateName,
+ gStmRestrictionModeStateName,
};
stm_state_t g_crr_state;
stm_state_t g_prv_state;
+int g_prv_on_screen_state_car_stop = 0;
int g_prv_restriction_state_car_stop = 0;
int g_prv_apps_state_car_stop = 0;
int g_map_is_activated = STM_FALSE;
// Initialize previous state
memset(&g_prv_state, 0, sizeof(g_prv_state));
- g_prv_state.layer.on_screen.state = gStmLayoutNoNone;
- g_prv_state.layer.restriction.state = gStmLayoutNoNone;
- g_prv_state.layer.apps.state = gStmLayoutNoNone;
- g_prv_state.layer.homescreen.state = gStmLayoutNoNone;
- g_prv_state.trans_gear.state = gStmTransGearStateNoN;
- g_prv_state.lightstatus_brake.state = gStmLightstatusBrakeStateNoOn;
- g_prv_state.accel_pedal.state = gStmAccelPedalStateNoOff;
- g_prv_state.car.state = gStmCarStateNoStop;
- g_prv_state.lamp.state = gStmLampStateNoOff;
- g_prv_state.parking_brake.state = gStmParkingBrakeStateNoOn;
- g_prv_state.restriction_mode.state = gStmRestrictionModeStateNoOff;
+ g_prv_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone;
+ g_prv_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
+ g_prv_state.layer[gStmLayerNoApps].state = gStmLayoutNoNone;
+ g_prv_state.layer[gStmLayerNoHomescreen].state = gStmLayoutNoNone;
+ g_prv_state.car_element[gStmCarElementNoTransGear].state = gStmTransGearStateNoN;
+ g_prv_state.car_element[gStmCarElementNoLightstatusBrake].state = gStmLightstatusBrakeStateNoOn;
+ g_prv_state.car_element[gStmCarElementNoAccelPedal].state = gStmAccelPedalStateNoOff;
+ g_prv_state.car_element[gStmCarElementNoRunning].state = gStmRunningNoStop;
+ g_prv_state.car_element[gStmCarElementNoLamp].state = gStmLampStateNoOff;
+ g_prv_state.car_element[gStmCarElementNoParkingBrake].state = gStmParkingBrakeStateNoOn;
+ g_prv_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOff;
// Initialize current state
g_crr_state = g_prv_state;
int stmTransitionState(int event, stm_state_t* state) {
int event_no, category_no, area_no;
- int restriction_state, apps_state;
+ int on_screen_state, restriction_state, apps_state;
int trans_gear_state, parking_brake_state, lightstatus_brake_state, accel_pedal_state, car_state, lamp_state, restriction_mode_state;
event_no = event & STM_MSK_EVT_NO;
g_prv_state = g_crr_state;
// Get previous state
- restriction_state = g_prv_state.layer.restriction.state;
- apps_state = g_prv_state.layer.apps.state;
- trans_gear_state = g_prv_state.trans_gear.state;
- parking_brake_state = g_prv_state.parking_brake.state;
- accel_pedal_state = g_prv_state.accel_pedal.state;
- car_state = g_prv_state.car.state;
- lamp_state = g_prv_state.lamp.state;
- lightstatus_brake_state = g_prv_state.lightstatus_brake.state;
- restriction_mode_state = g_prv_state.restriction_mode.state;
+ on_screen_state = g_prv_state.layer[gStmLayerNoOnScreen].state;
+ restriction_state = g_prv_state.layer[gStmLayerNoRestriction].state;
+ apps_state = g_prv_state.layer[gStmLayerNoApps].state;
+ trans_gear_state = g_prv_state.car_element[gStmCarElementNoTransGear].state;
+ parking_brake_state = g_prv_state.car_element[gStmCarElementNoParkingBrake].state;
+ accel_pedal_state = g_prv_state.car_element[gStmCarElementNoAccelPedal].state;
+ car_state = g_prv_state.car_element[gStmCarElementNoRunning].state;
+ lamp_state = g_prv_state.car_element[gStmCarElementNoLamp].state;
+ lightstatus_brake_state = g_prv_state.car_element[gStmCarElementNoLightstatusBrake].state;
+ restriction_mode_state = g_prv_state.car_element[gStmCarElementNoRestrictionMode].state;
// Clear flags
- g_crr_state.layer.on_screen.is_changed = STM_FALSE;
- g_crr_state.layer.restriction.is_changed = STM_FALSE;
- g_crr_state.layer.apps.is_changed = STM_FALSE;
- g_crr_state.layer.homescreen.is_changed = STM_FALSE;
- g_crr_state.trans_gear.is_changed = STM_FALSE;
- g_crr_state.parking_brake.is_changed = STM_FALSE;
- g_crr_state.lightstatus_brake.is_changed = STM_FALSE;
- g_crr_state.accel_pedal.is_changed = STM_FALSE;
- g_crr_state.car.is_changed = STM_FALSE;
- g_crr_state.lamp.is_changed = STM_FALSE;
- g_crr_state.restriction_mode.is_changed = STM_FALSE;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_FALSE;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_FALSE;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_FALSE;
+ g_crr_state.layer[gStmLayerNoHomescreen].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoTransGear].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoParkingBrake].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoLightstatusBrake].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoAccelPedal].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoRunning].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoLamp].changed = STM_FALSE;
+ g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_FALSE;
// Set car state
switch (event_no) {
case STM_EVT_NO_TRANS_GEAR_N:
if (gStmTransGearStateNoN != trans_gear_state) {
- g_crr_state.trans_gear.state = gStmTransGearStateNoN;
- g_crr_state.trans_gear.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoTransGear].state = gStmTransGearStateNoN;
+ g_crr_state.car_element[gStmCarElementNoTransGear].changed = STM_TRUE;
}
break;
case STM_EVT_NO_TRANS_GEAR_NOT_N:
if (gStmTransGearStateNoNotN != trans_gear_state) {
- g_crr_state.trans_gear.state = gStmTransGearStateNoNotN;
- g_crr_state.trans_gear.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoTransGear].state = gStmTransGearStateNoNotN;
+ g_crr_state.car_element[gStmCarElementNoTransGear].changed = STM_TRUE;
}
break;
case STM_EVT_NO_PARKING_BRAKE_OFF:
if (gStmParkingBrakeStateNoOff != parking_brake_state) {
- g_crr_state.parking_brake.state = gStmParkingBrakeStateNoOff;
- g_crr_state.parking_brake.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoParkingBrake].state = gStmParkingBrakeStateNoOff;
+ g_crr_state.car_element[gStmCarElementNoParkingBrake].changed = STM_TRUE;
}
break;
case STM_EVT_NO_PARKING_BRAKE_ON:
if (gStmParkingBrakeStateNoOn != parking_brake_state) {
- g_crr_state.parking_brake.state = gStmParkingBrakeStateNoOn;
- g_crr_state.parking_brake.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoParkingBrake].state = gStmParkingBrakeStateNoOn;
+ g_crr_state.car_element[gStmCarElementNoParkingBrake].changed = STM_TRUE;
}
break;
case STM_EVT_NO_ACCEL_PEDAL_OFF:
if (gStmAccelPedalStateNoOff != accel_pedal_state) {
- g_crr_state.accel_pedal.state = gStmAccelPedalStateNoOff;
- g_crr_state.accel_pedal.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoAccelPedal].state = gStmAccelPedalStateNoOff;
+ g_crr_state.car_element[gStmCarElementNoAccelPedal].changed = STM_TRUE;
}
break;
case STM_EVT_NO_ACCEL_PEDAL_ON:
if (gStmAccelPedalStateNoOn != accel_pedal_state) {
- g_crr_state.accel_pedal.state = gStmAccelPedalStateNoOn;
- g_crr_state.accel_pedal.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoAccelPedal].state = gStmAccelPedalStateNoOn;
+ g_crr_state.car_element[gStmCarElementNoAccelPedal].changed = STM_TRUE;
}
break;
case STM_EVT_NO_LAMP_OFF:
if (gStmLampStateNoOff != lamp_state) {
- g_crr_state.lamp.state = gStmLampStateNoOff;
- g_crr_state.lamp.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoLamp].state = gStmLampStateNoOff;
+ g_crr_state.car_element[gStmCarElementNoLamp].changed = STM_TRUE;
}
break;
case STM_EVT_NO_LAMP_ON:
if (gStmLampStateNoOn != lamp_state) {
- g_crr_state.lamp.state = gStmLampStateNoOn;
- g_crr_state.lamp.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoLamp].state = gStmLampStateNoOn;
+ g_crr_state.car_element[gStmCarElementNoLamp].changed = STM_TRUE;
}
break;
case STM_EVT_NO_LIGHTSTATUS_BRAKE_OFF:
if (gStmLightstatusBrakeStateNoOff != lightstatus_brake_state) {
- g_crr_state.lightstatus_brake.state = gStmLightstatusBrakeStateNoOff;
- g_crr_state.lightstatus_brake.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoLightstatusBrake].state = gStmLightstatusBrakeStateNoOff;
+ g_crr_state.car_element[gStmCarElementNoLightstatusBrake].changed = STM_TRUE;
}
break;
case STM_EVT_NO_LIGHTSTATUS_BRAKE_ON:
if (gStmLightstatusBrakeStateNoOn != lightstatus_brake_state) {
- g_crr_state.lightstatus_brake.state = gStmLightstatusBrakeStateNoOn;
- g_crr_state.lightstatus_brake.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoLightstatusBrake].state = gStmLightstatusBrakeStateNoOn;
+ g_crr_state.car_element[gStmCarElementNoLightstatusBrake].changed = STM_TRUE;
}
break;
default:
}
#if 1 // FOR ALS
- if (g_crr_state.lightstatus_brake.is_changed
- || g_crr_state.accel_pedal.is_changed) {
- if ((gStmLightstatusBrakeStateNoOff == g_crr_state.lightstatus_brake.state)
- && (gStmAccelPedalStateNoOn == g_crr_state.accel_pedal.state)){
+ if (g_crr_state.car_element[gStmCarElementNoLightstatusBrake].changed
+ || g_crr_state.car_element[gStmCarElementNoAccelPedal].changed) {
+ if ((gStmLightstatusBrakeStateNoOff == g_crr_state.car_element[gStmCarElementNoLightstatusBrake].state)
+ && (gStmAccelPedalStateNoOn == g_crr_state.car_element[gStmCarElementNoAccelPedal].state)){
#else
- if (g_crr_state.parking_brake.is_changed
- || g_crr_state.trans_gear.is_changed) {
- if ((gStmParkingBrakeStateNoOff == g_crr_state.parking_brake.state)
- && (gStmTransGearStateNoNotN == g_crr_state.trans_gear.state)){
+ if (g_crr_state.car_element[gStmCarElementNoParkingBrake].changed
+ || g_crr_state.car_element[gStmCarElementNoTransGear].changed) {
+ if ((gStmParkingBrakeStateNoOff == g_crr_state.car_element[gStmCarElementNoParkingBrake].state)
+ && (gStmTransGearStateNoNotN == g_crr_state.car_element[gStmCarElementNoTransGear].state)){
#endif
- if (gStmCarStateNoRun != car_state) {
+ if (gStmRunningNoRun != car_state) {
// Car state is changed stop -> run
- g_crr_state.car.state = gStmCarStateNoRun;
- g_crr_state.car.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoRunning].state = gStmRunningNoRun;
+ g_crr_state.car_element[gStmCarElementNoRunning].changed = STM_TRUE;
}
}
else {
- if (gStmCarStateNoStop != car_state) {
+ if (gStmRunningNoStop != car_state) {
// Car state is changed run -> stop
- g_crr_state.car.state = gStmCarStateNoStop;
- g_crr_state.car.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoRunning].state = gStmRunningNoStop;
+ g_crr_state.car_element[gStmCarElementNoRunning].changed = STM_TRUE;
}
}
}
HMI_DEBUG("wm:pm:stm", "Restriction mode OFF -> ON");
// Restriction mode is changed OFF -> ON
- g_crr_state.restriction_mode.state = gStmRestrictionModeStateNoOn;
- g_crr_state.restriction_mode.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOn;
+ g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE;
+
+ // Update on screen layer
+ g_prv_on_screen_state_car_stop = on_screen_state;
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
// Update restriction layer
g_prv_restriction_state_car_stop = restriction_state;
- g_crr_state.layer.restriction.state = gStmLayoutNoNone;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
// Update apps layer
g_prv_apps_state_car_stop = apps_state;
- if (STM_TRUE == g_map_is_activated) {
- g_crr_state.layer.apps.state = gStmLayoutNoM1;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ if ((STM_TRUE == g_map_is_activated)
+ && (gStmLayoutNoSystem != apps_state)) {
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM1;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
}
}
else if ((STM_EVT_NO_RESTRICTION_MODE_OFF == event_no)
HMI_DEBUG("wm:pm:stm", "Restriction mode ON -> OFF");
// Restriction mode is changed ON -> OFF
- g_crr_state.restriction_mode.state = gStmRestrictionModeStateNoOff;
- g_crr_state.restriction_mode.is_changed = STM_TRUE;
+ g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOff;
+ g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE;
+
+ // Update on screen layer
+ g_crr_state.layer[gStmLayerNoOnScreen].state = g_prv_on_screen_state_car_stop;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
// Update restriction layer
- g_crr_state.layer.restriction.state = g_prv_restriction_state_car_stop;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoRestriction].state = g_prv_restriction_state_car_stop;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
// Update apps layer
if (STM_TRUE == g_map_is_activated) {
- g_crr_state.layer.apps.state = g_prv_apps_state_car_stop;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = g_prv_apps_state_car_stop;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
}
}
if (gStmRestrictionModeStateNoOff == restriction_mode_state) {
switch (category_no) {
case STM_CTG_NO_HOMESCREEN:
- // Apps layer
- g_crr_state.layer.apps.state = gStmLayoutNoNone;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
-
// Homescreen layer
- g_crr_state.layer.homescreen.state = gStmLayoutNoHs;
- g_crr_state.layer.homescreen.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoHomescreen].state = gStmLayoutNoHs;
+ g_crr_state.layer[gStmLayerNoHomescreen].changed = STM_TRUE;
+
+ // Apps layer
+ if (gStmLayoutNoNone != apps_state) {
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
+ }
break;
case STM_CTG_NO_MAP:
switch (area_no) {
// nop
break;
default:
- g_crr_state.layer.apps.state = gStmLayoutNoMf;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoMf;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
}
break;
// nop
break;
case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
default:
- g_crr_state.layer.apps.state = gStmLayoutNoM1;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM1;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
}
break;
case STM_ARA_NO_SPLIT_MAIN:
switch (apps_state) {
case gStmLayoutNoS1:
case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
default:
// nop
// nop
break;
default:
- g_crr_state.layer.apps.state = gStmLayoutNoG;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoG;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
+ break;
+ }
+ break;
+ default:
+ // nop
+ break;
+ }
+ break;
+ case STM_CTG_NO_SYSTEM:
+ switch (area_no) {
+ case STM_ARA_NO_NORMAL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoMf:
+ // nop
+ break;
+ default:
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoSystem;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
}
break;
// Apps layer
switch (apps_state) {
case gStmLayoutNoM1:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
case gStmLayoutNoMf:
case gStmLayoutNoS1:
// nop
break;
default:
- g_crr_state.layer.apps.state = gStmLayoutNoS1;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS1;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
}
break;
// Apps layer
switch (apps_state) {
case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
default:
// nop
// Apps layer
switch (apps_state) {
case gStmLayoutNoM1:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
case gStmLayoutNoM2:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS2;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
break;
default:
// nop
}
break;
}
+ else { // (gStmRestrictionModeStateNoOn == restriction_mode_state)
+ switch (category_no) {
+ case STM_CTG_NO_MAP:
+ switch (area_no) {
+ case STM_ARA_NO_FULL:
+ case STM_ARA_NO_NORMAL:
+ case STM_ARA_NO_SPLIT_MAIN:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoM1:
+ // nop
+ break;
+ default:
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM1;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
+ }
+ break;
+ }
+ break;
+ case STM_CTG_NO_SYSTEM:
+ switch (area_no) {
+ case STM_ARA_NO_NORMAL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoMf:
+ // nop
+ break;
+ default:
+ g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoSystem;
+ g_crr_state.layer[gStmLayerNoApps].changed = STM_TRUE;
+ break;
+ }
+ break;
+ default:
+ // nop
+ break;
+ }
+ break;
+ }
+ }
case STM_EVT_NO_DEACTIVATE:
switch (category_no) {
default:
// Set restriction layer
if (STM_CTG_NO_RESTRICTION == category_no) {
if (STM_EVT_NO_ACTIVATE == event_no) {
- if (gStmLightstatusBrakeStateNoOff == g_crr_state.lightstatus_brake.state) {
+ if (gStmLightstatusBrakeStateNoOff == g_crr_state.car_element[gStmCarElementNoLightstatusBrake].state) {
switch (area_no) {
case STM_ARA_NO_RESTRICTION_NORMAL:
switch (restriction_state) {
case gStmLayoutNoNone:
- if (g_crr_state.layer.apps.state == gStmLayoutNoS1) {
- g_crr_state.layer.restriction.state = gStmLayoutNoRestriction;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ if (g_crr_state.layer[gStmLayerNoApps].state == gStmLayoutNoS1) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestriction;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
}
break;
default:
case STM_ARA_NO_RESTRICTION_SPLIT_MAIN:
switch (restriction_state) {
case gStmLayoutNoNone:
- g_crr_state.layer.restriction.state = gStmLayoutNoRestrictionSplitMain;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestrictionSplitMain;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
break;
default:
// nop
case STM_ARA_NO_RESTRICTION_SPLIT_SUB:
switch (restriction_state) {
case gStmLayoutNoNone:
- if (g_crr_state.layer.apps.state == gStmLayoutNoM2) {
- g_crr_state.layer.restriction.state = gStmLayoutNoRestrictionSplitSub;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ if (g_crr_state.layer[gStmLayerNoApps].state == gStmLayoutNoM2) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestrictionSplitSub;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
}
break;
default:
case gStmLayoutNoRestriction:
case gStmLayoutNoRestrictionSplitMain:
case gStmLayoutNoRestrictionSplitSub:
- g_crr_state.layer.restriction.state = gStmLayoutNoNone;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
break;
default:
// nop
}
}
}
- else if (g_crr_state.layer.apps.is_changed) {
- if (gStmLightstatusBrakeStateNoOff == g_crr_state.lightstatus_brake.state) {
- if (gStmLayoutNoM2 == g_crr_state.layer.apps.state) {
- g_crr_state.layer.restriction.state = gStmLayoutNoRestrictionSplitSub;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ else if (g_crr_state.layer[gStmLayerNoApps].changed) {
+ if (gStmLightstatusBrakeStateNoOff == g_crr_state.car_element[gStmCarElementNoLightstatusBrake].state) {
+ if (gStmLayoutNoM2 == g_crr_state.layer[gStmLayerNoApps].state) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestrictionSplitSub;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
}
- else if (gStmLayoutNoS1 == g_crr_state.layer.apps.state) {
- g_crr_state.layer.restriction.state = gStmLayoutNoRestriction;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ else if (gStmLayoutNoS1 == g_crr_state.layer[gStmLayerNoApps].state) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestriction;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
}
else {
- if (gStmLayoutNoNone != g_crr_state.layer.restriction.state) {
- g_crr_state.layer.restriction.state = gStmLayoutNoNone;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ if (gStmLayoutNoNone != g_crr_state.layer[gStmLayerNoRestriction].state) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
}
}
}
else {
- if (gStmLayoutNoNone != g_crr_state.layer.restriction.state) {
- g_crr_state.layer.restriction.state = gStmLayoutNoNone;
- g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ if (gStmLayoutNoNone != g_crr_state.layer[gStmLayerNoRestriction].state) {
+ g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
+ }
+ }
+ }
+
+ // Set on screen layer
+ if (STM_CTG_NO_POPUP == category_no) {
+ if (STM_EVT_NO_ACTIVATE == event_no) {
+ switch (on_screen_state) {
+ case gStmLayoutNoNone:
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoPu;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
+ }
+ else if (STM_EVT_NO_DEACTIVATE == event_no) {
+ switch (on_screen_state) {
+ case gStmLayoutNoPu:
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
}
}
}
memcpy(state, &g_crr_state, sizeof(g_crr_state));
if ((STM_FALSE == g_map_is_activated)
- && (STM_TRUE == g_crr_state.layer.apps.is_changed)
- && ((gStmLayoutNoM1 == g_crr_state.layer.apps.state)
- || (gStmLayoutNoM2 == g_crr_state.layer.apps.state)
- || (gStmLayoutNoMf == g_crr_state.layer.apps.state))) {
+ && (STM_TRUE == g_crr_state.layer[gStmLayerNoApps].changed)
+ && ((gStmLayoutNoM1 == g_crr_state.layer[gStmLayerNoApps].state)
+ || (gStmLayoutNoM2 == g_crr_state.layer[gStmLayerNoApps].state)
+ || (gStmLayoutNoMf == g_crr_state.layer[gStmLayerNoApps].state))) {
g_map_is_activated = STM_TRUE;
}
return 0;
}
+
+void stmUndoState() {
+ g_crr_state = g_prv_state;
+}