diff options
Diffstat (limited to 'src/policy_manager/zipc/dummy_stm.c')
-rw-r--r-- | src/policy_manager/zipc/dummy_stm.c | 118 |
1 files changed, 107 insertions, 11 deletions
diff --git a/src/policy_manager/zipc/dummy_stm.c b/src/policy_manager/zipc/dummy_stm.c index 459f58c..07694cf 100644 --- a/src/policy_manager/zipc/dummy_stm.c +++ b/src/policy_manager/zipc/dummy_stm.c @@ -31,7 +31,8 @@ const char* gStmCategoryName[] = { "general", "splitable", "popup", - "system_alert" + "system_alert", + "restriction", }; const int gStmCategoryNo[] = { @@ -40,7 +41,8 @@ const int gStmCategoryNo[] = { STM_CTG_NO_GENERAL, STM_CTG_NO_SPLITABLE, STM_CTG_NO_POPUP, - STM_CTG_NO_SYSTEM_ALERT + STM_CTG_NO_SYSTEM_ALERT, + STM_CTG_NO_RESTRICTION, }; const char* gStmAreaName[] = { @@ -48,7 +50,10 @@ const char* gStmAreaName[] = { "normal", "split.main", "split.sub", - "onscreen" + "onscreen", + "restriction.normal", + "restriction.split.main", + "restriction.split.sub", }; const int gStmAreaNo[] = { @@ -56,7 +61,10 @@ const int gStmAreaNo[] = { STM_ARA_NO_NORMAL, STM_ARA_NO_SPLIT_MAIN, STM_ARA_NO_SPLIT_SUB, - STM_ARA_NO_ON_SCREEN + 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 @@ -86,15 +94,34 @@ const char* gStmLayoutNo2Name[] = { "s2", "g", "hs", + "restriction", + "restriction.split.main", + "restriction.split.sub", }; -stm_state_t g_crr_state = {0}; -stm_state_t g_prv_state = {0}; +stm_state_t g_crr_state; +stm_state_t g_prv_state; int g_prv_apps_state_car_stop = 0; +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.parking_brake.state = gStmParkingBrakeStateNoOn; + g_prv_state.car.state = gStmCarStateNoStop; + g_prv_state.lamp.state = gStmLampStateNoOff; + + // 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, parking_brake_state, car_state, lamp_state; + int restriction_state, apps_state, parking_brake_state, car_state, lamp_state; event_no = event & STM_MSK_EVT_NO; category_no = event & STM_MSK_CTG_NO; @@ -104,13 +131,20 @@ int stmTransitionState(int event, stm_state_t* state) { 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; parking_brake_state = g_prv_state.parking_brake.state; car_state = g_prv_state.car.state; lamp_state = g_prv_state.lamp.state; - // Clear current state - memset(&g_crr_state, 0, sizeof(g_crr_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.parking_brake.is_changed = STM_FALSE; + g_crr_state.car.is_changed = STM_FALSE; + g_crr_state.lamp.is_changed = STM_FALSE; switch (event_no) { case STM_EVT_NO_ACTIVATE: @@ -250,9 +284,71 @@ int stmTransitionState(int event, stm_state_t* state) { break; } break; + case STM_CTG_NO_RESTRICTION: + switch (area_no) { + case STM_ARA_NO_RESTRICTION_NORMAL: + // restriction Layer + 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: + // restriction Layer + 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: + // restriction Layer + 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; default: - // nop - break; + // nop + break; + } + case STM_EVT_NO_DEACTIVATE: + switch (category_no) { + case STM_CTG_NO_RESTRICTION: + // restriction Layer + 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; + } + default: + // nop + break; } break; case STM_EVT_NO_PARKING_BRAKE_OFF: |