diff options
Diffstat (limited to 'src/policy_manager/zipc/dummy_stm.c')
-rw-r--r-- | src/policy_manager/zipc/dummy_stm.c | 79 |
1 files changed, 55 insertions, 24 deletions
diff --git a/src/policy_manager/zipc/dummy_stm.c b/src/policy_manager/zipc/dummy_stm.c index cc3fe21..3be9964 100644 --- a/src/policy_manager/zipc/dummy_stm.c +++ b/src/policy_manager/zipc/dummy_stm.c @@ -1,5 +1,6 @@ #include <string.h> #include "dummy_stm.h" +#include "hmi-debug.h" const char* gStmEventName[] = { "activate", @@ -15,6 +16,8 @@ const char* gStmEventName[] = { "lamp_on", "lightstatus_brake_off", "lightstatus_brake_on", + "restriction_mode_off", + "restriction_mode_on", }; const int gStmEventNo[] = { @@ -31,6 +34,8 @@ const int gStmEventNo[] = { STM_EVT_NO_LAMP_ON, STM_EVT_NO_LIGHTSTATUS_BRAKE_OFF, STM_EVT_NO_LIGHTSTATUS_BRAKE_ON, + STM_EVT_NO_RESTRICTION_MODE_OFF, + STM_EVT_NO_RESTRICTION_MODE_ON, }; const char* gStmCategoryName[] = { @@ -106,6 +111,11 @@ const char* gStmLightstatusBrakeStateNo2Name[] = { "lightstatus_brake_on" }; +const char* gStmRestrictionModeStateNo2Name[] = { + "restriction_mode_off", + "restriction_mode_on" +}; + const char* gStmLayoutNo2Name[] = { "none", "pu", @@ -142,6 +152,7 @@ void stmInitialize() { 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; // Initialize current state g_crr_state = g_prv_state; @@ -150,7 +161,7 @@ void stmInitialize() { int stmTransitionState(int event, stm_state_t* state) { int event_no, category_no, area_no; int restriction_state, apps_state; - int trans_gear_state, parking_brake_state, lightstatus_brake_state, accel_pedal_state, car_state, lamp_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; category_no = event & STM_MSK_CTG_NO; @@ -168,6 +179,7 @@ int stmTransitionState(int event, stm_state_t* 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; // Clear flags g_crr_state.layer.on_screen.is_changed = STM_FALSE; @@ -180,6 +192,7 @@ int stmTransitionState(int event, stm_state_t* state) { 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; // Set car state @@ -264,18 +277,6 @@ int stmTransitionState(int event, stm_state_t* 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; - } } } else { @@ -283,24 +284,54 @@ int stmTransitionState(int event, stm_state_t* 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; - } } } } + // Set restriction mode + if ((STM_EVT_NO_RESTRICTION_MODE_ON == event_no) + && (gStmRestrictionModeStateNoOn != restriction_mode_state)) { + 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; + + // 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; + } + } + else if ((STM_EVT_NO_RESTRICTION_MODE_OFF == event_no) + && (gStmRestrictionModeStateNoOff != restriction_mode_state)) { + 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; + + // 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; + } + } + // Set apps/homescreen layer switch (event_no) { case STM_EVT_NO_ACTIVATE: - if (gStmCarStateNoStop == car_state) { + if (gStmRestrictionModeStateNoOff == restriction_mode_state) { switch (category_no) { case STM_CTG_NO_HOMESCREEN: // Apps layer |