From 758f292ad413bf8a6a328ffc81a58f5bbb3d172e Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Thu, 7 Jun 2018 18:09:45 +0900 Subject: Modify struct stm_state_t Change-Id: I4f9861d22439270200e202b1c365bbd1d055e900 Signed-off-by: Yuta Doi --- src/policy_manager/policy_manager.cpp | 150 +++++++++++++++++++++++++++----- src/policy_manager/policy_manager.hpp | 17 ++++ src/policy_manager/zipc/dummy_stm.c | 157 ++++++++++++++++++---------------- src/policy_manager/zipc/dummy_stm.h | 13 ++- 4 files changed, 241 insertions(+), 96 deletions(-) diff --git a/src/policy_manager/policy_manager.cpp b/src/policy_manager/policy_manager.cpp index a91d98e..6d25574 100644 --- a/src/policy_manager/policy_manager.cpp +++ b/src/policy_manager/policy_manager.cpp @@ -33,9 +33,16 @@ extern "C" { namespace pm { +typedef std::unordered_map AppAttribute; +typedef std::unordered_map AreasState; +typedef std::unordered_map LayoutState; +typedef std::unordered_map LayersState; + struct sd_event* event_loop; std::map event_source_list; PolicyManager::CallbackTable callback; +LayersState g_prv_layers; +LayersState g_crr_layers; } // namespace pm @@ -78,6 +85,20 @@ int PolicyManager::initialize() { return ret; } + // Initialize current/previous state of layers + pm::AppAttribute init_app; + pm::AreasState init_area; + pm::LayoutState init_layout; + init_app["role"] = "none"; + init_area["none"] = init_app; + init_layout["none"] = init_area; + + pm::g_crr_layers["homescreen"] = init_layout; + pm::g_crr_layers["apps"] = init_layout; + pm::g_crr_layers["restriction"] = init_layout; + pm::g_crr_layers["on_screen"] = init_layout; + pm::g_prv_layers = pm::g_crr_layers; + // Initialize StateTransitioner stm::stmInitialize(); @@ -175,21 +196,110 @@ static int checkPolicy(sd_event_source *source, void *data) { crr_state.restriction_mode.state, stm::gStmRestrictionModeStateNo2Name[crr_state.restriction_mode.state]); HMI_DEBUG("wm:pm", "homescreen state (is_changed:%d state:%d:%s)", - crr_state.layer.homescreen.is_changed, - crr_state.layer.homescreen.state, - stm::gStmLayoutNo2Name[crr_state.layer.homescreen.state]); + crr_state.layer[stm::gStmLayerNoHomescreen].is_changed, + crr_state.layer[stm::gStmLayerNoHomescreen].state, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoHomescreen].state]); HMI_DEBUG("wm:pm", "apps state (is_changed:%d state:%d:%s)", - crr_state.layer.apps.is_changed, - crr_state.layer.apps.state, - stm::gStmLayoutNo2Name[crr_state.layer.apps.state]); + crr_state.layer[stm::gStmLayerNoApps].is_changed, + crr_state.layer[stm::gStmLayerNoApps].state, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoApps].state]); HMI_DEBUG("wm:pm", "restriction state (is_changed:%d state:%d:%s)", - crr_state.layer.restriction.is_changed, - crr_state.layer.restriction.state, - stm::gStmLayoutNo2Name[crr_state.layer.restriction.state]); + crr_state.layer[stm::gStmLayerNoRestriction].is_changed, + crr_state.layer[stm::gStmLayerNoRestriction].state, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoRestriction].state]); HMI_DEBUG("wm:pm", "on_screen state (is_changed:%d state:%d:%s)", - crr_state.layer.on_screen.is_changed, - crr_state.layer.on_screen.state, - stm::gStmLayoutNo2Name[crr_state.layer.on_screen.state]); + crr_state.layer[stm::gStmLayerNoOnScreen].is_changed, + crr_state.layer[stm::gStmLayerNoOnScreen].state, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoOnScreen].state]); + +#if 0 // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + // Store previous layers + pm::g_prv_layers = pm::g_crr_layers; + + std::string layer_name = "homescreen"; + + // changed? + if (crr_state.layer[stm::gStmLayerNoHomescreen].is_changed) { + // Get previous layout name of this layer + pm::LayoutState prv_layout_state = pm::g_prv_layers[layer_name]; + std::string prv_layout_name = prv_homescreen_layout_state.first(); + + // Get current layout name of this layer + std::string crr_layout_name = std::string(stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoHomescreen].state]); + + // Compare layout name + pm::LayoutState crr_layout_state; + if ("none" == crr_layout_name) { + // If current layout is "none", + // current areas is set with "none" + HMI_DEBUG("wm:pm", "Current layout is \"none\""); + HMI_DEBUG("wm:lm", "Current layout is \"none\""); + pm::AppAttribute crr_app_attribute; + pm::AreasState crr_areas_state; + crr_app_attribute["role"] = "none"; + crr_areas_state["none"] = "none"; + crr_layout_state["none"] = crr_areas_state; + } + else { + if (prv_layout_name == crr_layout_name) { + // If previous layout is same with current, + // previous areas are copied to current + crr_layout_state[crr_layout_name] = pm::g_prv_layers[layer_name][crr_layout_name]; + } + else { + // If previous layout is same with current, + // previous areas are copied to current + crr_layout_state[crr_layout_name] = this->default_layout_state[crr_layout_name]; + } + + // Update role in new area +#if 1 + if (crr_state.restriction_mode.is_changed) { + // Updating role is not necessary + // because new_role is not specified + // when restriction mode is changed + HMI_DEBUG("wm:lm", "Updating role is not necessary because new_role is not specified when restriction mode is changed"); +#else + if (crr_state.car.is_changed) { + // Updating role is not necessary + // because new_role is not specified + // when car state is changed + HMI_DEBUG("wm:lm", "Updating role is not necessary because new_role is not specified when car state is changed"); +#endif + } + else { + HMI_DEBUG("wm:lm", "Get new_area for new role"); + // Get new_area for new role + std::string new_area = this->getAreaName(this->layout_define_[crr_layout_name], + new_role, category); + + if ("none" == new_area) { + HMI_DEBUG("wm:lm", "It is not necessary to update role of areas in this layer, because new_role is not specified for this layer"); + } + else { + // Is there new_area? + // if there is new_area, set new role there + + // if NOT, find same category of new_role + // pop old role and shift area + // push new role and set area + + + // Update role in new area + // because new_role is specified for this layer + TypeRolCtg crr_role; + crr_role["role"] = std::string(new_role); + crr_layout[crr_layout_name][new_area] = crr_role; + } + } + } + } + + // Update current layout of this layer + pm::g_crr_layers[layer_name] = crr_layout_state; + + } +#endif // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ json_object* json_out = json_object_new_object(); @@ -263,8 +373,8 @@ static int checkPolicy(sd_event_source *source, void *data) { // } json_tmp = json_object_new_object(); addStateToJson("homescreen", - crr_state.layer.homescreen.is_changed, - stm::gStmLayoutNo2Name[crr_state.layer.homescreen.state], + crr_state.layer[stm::gStmLayerNoHomescreen].is_changed, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoHomescreen].state], &json_tmp); json_object_array_add(json_layer, json_tmp); @@ -276,8 +386,8 @@ static int checkPolicy(sd_event_source *source, void *data) { // }, json_tmp = json_object_new_object(); addStateToJson("apps", - crr_state.layer.apps.is_changed, - stm::gStmLayoutNo2Name[crr_state.layer.apps.state], + crr_state.layer[stm::gStmLayerNoApps].is_changed, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoApps].state], &json_tmp); json_object_array_add(json_layer, json_tmp); @@ -289,8 +399,8 @@ static int checkPolicy(sd_event_source *source, void *data) { // }, json_tmp = json_object_new_object(); addStateToJson("restriction", - crr_state.layer.restriction.is_changed, - stm::gStmLayoutNo2Name[crr_state.layer.restriction.state], + crr_state.layer[stm::gStmLayerNoRestriction].is_changed, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoRestriction].state], &json_tmp); json_object_array_add(json_layer, json_tmp); @@ -302,8 +412,8 @@ static int checkPolicy(sd_event_source *source, void *data) { // }, json_tmp = json_object_new_object(); addStateToJson("on_screen", - crr_state.layer.on_screen.is_changed, - stm::gStmLayoutNo2Name[crr_state.layer.on_screen.state], + crr_state.layer[stm::gStmLayerNoOnScreen].is_changed, + stm::gStmLayoutNo2Name[crr_state.layer[stm::gStmLayerNoOnScreen].state], &json_tmp); json_object_array_add(json_layer, json_tmp); diff --git a/src/policy_manager/policy_manager.hpp b/src/policy_manager/policy_manager.hpp index aa5f206..9a40d7c 100644 --- a/src/policy_manager/policy_manager.hpp +++ b/src/policy_manager/policy_manager.hpp @@ -60,6 +60,23 @@ private: std::unordered_map category2role_; std::unordered_map role2defaultarea_; +#if 0 + struct AreaState { + std::string name; + std::string role; + } AreaState; + + struct LayoutState { + std::string name; + std::vector areas; + } LayoutState; + + struct LayerState { + std::string name; + LayoutState layout; + } LayerState; +#endif + int initializeSdEventLoop(); // Load role.db diff --git a/src/policy_manager/zipc/dummy_stm.c b/src/policy_manager/zipc/dummy_stm.c index 3be9964..4d8b057 100644 --- a/src/policy_manager/zipc/dummy_stm.c +++ b/src/policy_manager/zipc/dummy_stm.c @@ -132,6 +132,13 @@ const char* gStmLayoutNo2Name[] = { "restriction.split.sub", }; +const char* gStmLayerNo2Name[] = { + "homescreen", + "apps", + "restriction", + "on_screen", +}; + stm_state_t g_crr_state; stm_state_t g_prv_state; int g_prv_restriction_state_car_stop = 0; @@ -142,10 +149,10 @@ 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.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.trans_gear.state = gStmTransGearStateNoN; g_prv_state.lightstatus_brake.state = gStmLightstatusBrakeStateNoOn; g_prv_state.accel_pedal.state = gStmAccelPedalStateNoOff; @@ -171,8 +178,8 @@ 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; + restriction_state = g_prv_state.layer[gStmLayerNoRestriction].state; + apps_state = g_prv_state.layer[gStmLayerNoApps].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; @@ -182,10 +189,10 @@ int stmTransitionState(int event, stm_state_t* state) { restriction_mode_state = g_prv_state.restriction_mode.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.layer[gStmLayerNoOnScreen].is_changed = STM_FALSE; + g_crr_state.layer[gStmLayerNoRestriction].is_changed = STM_FALSE; + g_crr_state.layer[gStmLayerNoApps].is_changed = STM_FALSE; + g_crr_state.layer[gStmLayerNoHomescreen].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; @@ -299,14 +306,14 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].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; + g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoM1; + g_crr_state.layer[gStmLayerNoApps].is_changed = STM_TRUE; } } else if ((STM_EVT_NO_RESTRICTION_MODE_OFF == event_no) @@ -318,13 +325,13 @@ int stmTransitionState(int event, stm_state_t* state) { 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; + g_crr_state.layer[gStmLayerNoRestriction].state = g_prv_restriction_state_car_stop; + g_crr_state.layer[gStmLayerNoRestriction].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; + g_crr_state.layer[gStmLayerNoApps].state = g_prv_apps_state_car_stop; + g_crr_state.layer[gStmLayerNoApps].is_changed = STM_TRUE; } } @@ -335,12 +342,12 @@ int stmTransitionState(int event, stm_state_t* 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; + g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoNone; + g_crr_state.layer[gStmLayerNoApps].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].is_changed = STM_TRUE; break; case STM_CTG_NO_MAP: switch (area_no) { @@ -351,8 +358,8 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].is_changed = STM_TRUE; break; } break; @@ -363,12 +370,12 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].is_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].is_changed = STM_TRUE; } break; case STM_ARA_NO_SPLIT_MAIN: @@ -376,8 +383,8 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_changed = STM_TRUE; break; default: // nop @@ -395,8 +402,8 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].is_changed = STM_TRUE; break; } break; @@ -411,16 +418,16 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].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; + g_crr_state.layer[gStmLayerNoApps].state = gStmLayoutNoS1; + g_crr_state.layer[gStmLayerNoApps].is_changed = STM_TRUE; break; } break; @@ -428,12 +435,12 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].is_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].is_changed = STM_TRUE; break; default: // nop @@ -444,20 +451,20 @@ int stmTransitionState(int event, stm_state_t* state) { // 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].is_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].is_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].is_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].is_changed = STM_TRUE; break; default: // nop @@ -496,9 +503,9 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_changed = STM_TRUE; } break; default: @@ -509,8 +516,8 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_changed = STM_TRUE; break; default: // nop @@ -520,9 +527,9 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_changed = STM_TRUE; } break; default: @@ -541,8 +548,8 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_changed = STM_TRUE; break; default: // nop @@ -550,27 +557,27 @@ int stmTransitionState(int event, stm_state_t* state) { } } } - else if (g_crr_state.layer.apps.is_changed) { + else if (g_crr_state.layer[gStmLayerNoApps].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; + if (gStmLayoutNoM2 == g_crr_state.layer[gStmLayerNoApps].state) { + g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestrictionSplitSub; + g_crr_state.layer[gStmLayerNoRestriction].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 (gStmLayoutNoS1 == g_crr_state.layer[gStmLayerNoApps].state) { + g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoRestriction; + g_crr_state.layer[gStmLayerNoRestriction].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; + if (gStmLayoutNoNone != g_crr_state.layer[gStmLayerNoRestriction].state) { + g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone; + g_crr_state.layer[gStmLayerNoRestriction].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; + if (gStmLayoutNoNone != g_crr_state.layer[gStmLayerNoRestriction].state) { + g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone; + g_crr_state.layer[gStmLayerNoRestriction].is_changed = STM_TRUE; } } } @@ -579,10 +586,10 @@ int stmTransitionState(int event, stm_state_t* state) { 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].is_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; } diff --git a/src/policy_manager/zipc/dummy_stm.h b/src/policy_manager/zipc/dummy_stm.h index e848628..c0011f3 100644 --- a/src/policy_manager/zipc/dummy_stm.h +++ b/src/policy_manager/zipc/dummy_stm.h @@ -121,6 +121,14 @@ enum stm_layout_ { gStmLayoutNoRestrictionSplitSub, }; +enum stm_layer_ { + gStmLayerNoHomescreen = 0, + gStmLayerNoApps, + gStmLayerNoRestriction, + gStmLayerNoOnScreen, + + gStmLayerNoNum, +}; extern const char* gStmEventName[]; extern const int gStmEventNo[]; @@ -128,6 +136,8 @@ extern const char* gStmCategoryName[]; extern const int gStmCategoryNo[]; extern const char* gStmAreaName[]; extern const int gStmAreaNo[]; +extern const char* gStmLayerName[]; +extern const int gStmLayerNo[]; // String for state extern const char* gStmParkingBrakeStateNo2Name[]; @@ -159,7 +169,8 @@ typedef struct { stm_base_state lamp; stm_base_state lightstatus_brake; stm_base_state restriction_mode; - stm_layer_state layer; + stm_base_state layer[gStmLayerNoNum]; +// stm_layer_state layer; } stm_state_t; -- cgit 1.2.3-korg