-
#include <string.h>
#include "dummy_stm.h"
-stm_state_t g_crr_state = {0};
-stm_state_t g_prv_state = {0};
+const char* gStmEventName[] = {
+ "activate",
+ "deactivate",
+ "trans_gear_neutral",
+ "trans_gear_not_neutral",
+ "parking_brake_off",
+ "parking_brake_on",
+ "accel_pedal_off",
+ "accel_pedal_on",
+ "timer_expired",
+ "lamp_off",
+ "lamp_on",
+ "lightstatus_brake_off",
+ "lightstatus_brake_on",
+};
+
+const int gStmEventNo[] = {
+ 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,
+};
+
+const char* gStmCategoryName[] = {
+ "homescreen",
+ "map",
+ "general",
+ "splitable",
+ "popup",
+ "system_alert",
+ "restriction",
+};
+
+const int gStmCategoryNo[] = {
+ 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,
+};
+
+const char* gStmAreaName[] = {
+ "full",
+ "normal",
+ "split.main",
+ "split.sub",
+ "onscreen",
+ "restriction.normal",
+ "restriction.split.main",
+ "restriction.split.sub",
+};
+
+const int gStmAreaNo[] = {
+ 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_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* gStmParkingBrakeStateNo2Name[] = {
+ "parking_brake_off",
+ "parking_brake_on"
+};
+
+const char* gStmAccelPedalStateNo2Name[] = {
+ "accel_pedal_off",
+ "accel_pedal_on"
+};
+
+const char* gStmCarStateNo2Name[] = {
+ "car_stop",
+ "car_run"
+};
+
+const char* gStmLampStateNo2Name[] = {
+ "lamp_off",
+ "lamp_on"
+};
+
+const char* gStmLightstatusBrakeStateNo2Name[] = {
+ "lightstatus_brake_off",
+ "lightstatus_brake_on"
+};
+
+const char* gStmLayoutNo2Name[] = {
+ "none",
+ "pu",
+ "sa",
+ "m1",
+ "m2",
+ "mf",
+ "s1",
+ "s2",
+ "g",
+ "hs",
+ "restriction",
+ "restriction.split.main",
+ "restriction.split.sub",
+};
+
+stm_state_t g_crr_state;
+stm_state_t g_prv_state;
+int g_prv_restriction_state_car_stop = 0;
int g_prv_apps_state_car_stop = 0;
+int g_map_is_activated = STM_FALSE;
+
+void stmInitialize() {
+ // 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;
+
+ // 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 apps_state, car_state, lamp_state;
+ int restriction_state, apps_state;
+ int trans_gear_state, parking_brake_state, lightstatus_brake_state, accel_pedal_state, car_state, lamp_state;
event_no = event & STM_MSK_EVT_NO;
category_no = event & STM_MSK_CTG_NO;
g_prv_state = g_crr_state;
// Get previous state
- apps_state = g_prv_state.layer.apps.state;
- car_state = g_prv_state.car.state;
- lamp_state = g_prv_state.lamp.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;
+
+ // 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;
- // Clear current state
- memset(&g_crr_state, 0, sizeof(g_crr_state));
+ // Set car state
switch (event_no) {
- case STM_EVT_NO_ACTIVATE:
- 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;
- break;
- case STM_CTG_NO_MAP:
- switch (area_no) {
- case STM_ARA_NO_FULL:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoMf:
- // nop
- break;
- default:
- g_crr_state.layer.apps.state = gStmLayoutNoMf;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
- break;
- }
- break;
- case STM_ARA_NO_NORMAL:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoM1:
- // nop
- break;
- case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
- break;
- default:
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ 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;
+ }
+ break;
+ default:
+ // nop
+ break;
+ }
+
+#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)){
+#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)){
+#endif
+ if (gStmCarStateNoRun != car_state) {
+ // Car state is changed stop -> run
+ g_crr_state.car.state = gStmCarStateNoRun;
+ g_crr_state.car.is_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;
+
+ // 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;
}
- break;
- case STM_ARA_NO_SPLIT_MAIN:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoS1:
- case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
- break;
- default:
- // nop
- break;
- }
- break;
}
- break;
- case STM_CTG_NO_GENERAL:
- switch (area_no) {
- case STM_ARA_NO_NORMAL:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoMf:
- // nop
- break;
- default:
- g_crr_state.layer.apps.state = gStmLayoutNoG;
+ }
+ else {
+ if (gStmCarStateNoStop != car_state) {
+ // Car state is changed run -> stop
+ g_crr_state.car.state = gStmCarStateNoStop;
+ g_crr_state.car.is_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;
+
+ // 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;
- break;
}
- break;
- default:
- // nop
- break;
}
- break;
- case STM_CTG_NO_SPLITABLE:
- switch (area_no) {
- case STM_ARA_NO_NORMAL:
+ }
+ }
+
+ // Set apps/homescreen layer
+ switch (event_no) {
+ case STM_EVT_NO_ACTIVATE:
+ if (gStmCarStateNoStop == car_state) {
+ switch (category_no) {
+ case STM_CTG_NO_HOMESCREEN:
// Apps layer
- switch (apps_state) {
- case gStmLayoutNoMf:
- // nop
+ 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;
+ break;
+ case STM_CTG_NO_MAP:
+ switch (area_no) {
+ case STM_ARA_NO_FULL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoMf:
+ // nop
+ break;
+ default:
+ g_crr_state.layer.apps.state = gStmLayoutNoMf;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ }
break;
- case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_ARA_NO_NORMAL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoM1:
+ // nop
+ break;
+ case gStmLayoutNoS1:
+ g_crr_state.layer.apps.state = gStmLayoutNoM2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ default:
+ g_crr_state.layer.apps.state = gStmLayoutNoM1;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ }
break;
- default:
- g_crr_state.layer.apps.state = gStmLayoutNoS1;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_ARA_NO_SPLIT_MAIN:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoS1:
+ case gStmLayoutNoS2:
+ g_crr_state.layer.apps.state = gStmLayoutNoS2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
break;
}
break;
- case STM_ARA_NO_SPLIT_MAIN:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
- break;
- case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_CTG_NO_GENERAL:
+ switch (area_no) {
+ case STM_ARA_NO_NORMAL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoMf:
+ // nop
+ break;
+ default:
+ g_crr_state.layer.apps.state = gStmLayoutNoG;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ }
break;
default:
// nop
break;
}
break;
- case STM_ARA_NO_SPLIT_SUB:
- // Apps layer
- switch (apps_state) {
- case gStmLayoutNoM1:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_CTG_NO_SPLITABLE:
+ switch (area_no) {
+ case STM_ARA_NO_NORMAL:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoM1:
+ g_crr_state.layer.apps.state = gStmLayoutNoM2;
+ g_crr_state.layer.apps.is_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;
+ break;
+ }
break;
- case gStmLayoutNoM2:
- g_crr_state.layer.apps.state = gStmLayoutNoM2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_ARA_NO_SPLIT_MAIN:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoS1:
+ g_crr_state.layer.apps.state = gStmLayoutNoS2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ case gStmLayoutNoS2:
+ g_crr_state.layer.apps.state = gStmLayoutNoS2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
break;
- case gStmLayoutNoS1:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
- break;
- case gStmLayoutNoS2:
- g_crr_state.layer.apps.state = gStmLayoutNoS2;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ case STM_ARA_NO_SPLIT_SUB:
+ // Apps layer
+ switch (apps_state) {
+ case gStmLayoutNoM1:
+ g_crr_state.layer.apps.state = gStmLayoutNoM2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ case gStmLayoutNoM2:
+ g_crr_state.layer.apps.state = gStmLayoutNoM2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ case gStmLayoutNoS1:
+ g_crr_state.layer.apps.state = gStmLayoutNoS2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ case gStmLayoutNoS2:
+ g_crr_state.layer.apps.state = gStmLayoutNoS2;
+ g_crr_state.layer.apps.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
break;
default:
// nop
break;
}
break;
+ }
+ case STM_EVT_NO_DEACTIVATE:
+ switch (category_no) {
default:
- // nop
- break;
+ // nop
+ break;
}
break;
- case STM_EVT_NO_CAR_STOP:
- if (gStmCarStateNoStop != car_state) {
- g_crr_state.layer.apps.state = g_prv_apps_state_car_stop;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
-
- g_crr_state.car.state = gStmCarStateNoStop;
- g_crr_state.car.is_changed = STM_TRUE;
- }
+ default:
+ // nop
break;
- case STM_EVT_NO_CAR_RUN:
- if (gStmCarStateNoRun != car_state) {
- g_prv_apps_state_car_stop = apps_state;
- g_crr_state.layer.apps.state = gStmLayoutNoM1;
- g_crr_state.layer.apps.is_changed = STM_TRUE;
+ }
+
- g_crr_state.car.state = gStmCarStateNoRun;
- g_crr_state.car.is_changed = STM_TRUE;
+ // 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) {
+ switch (area_no) {
+ case STM_ARA_NO_RESTRICTION_NORMAL:
+ switch (restriction_state) {
+ case gStmLayoutNoNone:
+ g_crr_state.layer.restriction.state = gStmLayoutNoRestriction;
+ g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
+ break;
+ 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;
+ break;
+ default:
+ // nop
+ break;
+ }
+ break;
+ case STM_ARA_NO_RESTRICTION_SPLIT_SUB:
+ switch (restriction_state) {
+ case gStmLayoutNoNone:
+ g_crr_state.layer.restriction.state = gStmLayoutNoRestrictionSplitSub;
+ g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
+ break;
+ default:
+ // nop
+ break;
+ }
+ }
}
- 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;
+ else if (STM_EVT_NO_DEACTIVATE == event_no) {
+ switch (restriction_state) {
+ case gStmLayoutNoRestriction:
+ case gStmLayoutNoRestrictionSplitMain:
+ case gStmLayoutNoRestrictionSplitSub:
+ g_crr_state.layer.restriction.state = gStmLayoutNoNone;
+ g_crr_state.layer.restriction.is_changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
}
- 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;
+ }
+ 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 (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 (gStmLayoutNoNone != g_crr_state.layer.restriction.state) {
+ g_crr_state.layer.restriction.state = gStmLayoutNoNone;
+ g_crr_state.layer.restriction.is_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;
+ }
}
- break;
- default:
- // nop
- break;
}
// Copy current state for return
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))) {
+ g_map_is_activated = STM_TRUE;
+ }
+
return 0;
}
-