aboutsummaryrefslogtreecommitdiffstats
path: root/src/policy_manager/zipc/dummy_stm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/policy_manager/zipc/dummy_stm.c')
-rw-r--r--src/policy_manager/zipc/dummy_stm.c79
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