aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuta Doi <yuta-d@witz-inc.co.jp>2018-06-07 18:09:45 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2018-06-07 18:09:45 +0900
commit758f292ad413bf8a6a328ffc81a58f5bbb3d172e (patch)
tree1ffd2c3e03f8f89071bc0d32eebf6d5bb342e6bc
parentd1fbf20ba98bcb935d75c7a13ab5d5b9450a7837 (diff)
Modify struct stm_state_t
Change-Id: I4f9861d22439270200e202b1c365bbd1d055e900 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
-rw-r--r--src/policy_manager/policy_manager.cpp150
-rw-r--r--src/policy_manager/policy_manager.hpp17
-rw-r--r--src/policy_manager/zipc/dummy_stm.c157
-rw-r--r--src/policy_manager/zipc/dummy_stm.h13
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<std::string, std::string> AppAttribute;
+typedef std::unordered_map<std::string, AppAttribute> AreasState;
+typedef std::unordered_map<std::string, AreasState> LayoutState;
+typedef std::unordered_map<std::string, LayoutState> LayersState;
+
struct sd_event* event_loop;
std::map<int, struct sd_event_source*> 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<std::string, std::string> category2role_;
std::unordered_map<std::string, std::string> role2defaultarea_;
+#if 0
+ struct AreaState {
+ std::string name;
+ std::string role;
+ } AreaState;
+
+ struct LayoutState {
+ std::string name;
+ std::vector<AreaState> 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;