aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuta Doi <yuta-d@witz-inc.co.jp>2018-06-21 14:40:06 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2018-06-21 14:40:06 +0900
commit79dbd8747e5f2baf2ff274806e3700dd2fbefd99 (patch)
treed1356eb5e01eb648dbfc391e1678eb9f7d4dedfb
parent8f07dc4443bd7dc4a57a80c95003f05ede1fdddc (diff)
OnScreen app can be displayed for pop_up role
Change-Id: I53cdcd010c9e0b87cd4207d8bb81bb5784202f18 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
-rw-r--r--layers.json2
-rw-r--r--src/app.cpp20
-rw-r--r--src/db/app.db6
-rw-r--r--src/layout_manager/db/layout.db2
-rw-r--r--src/policy_manager/db/role.db4
-rw-r--r--src/policy_manager/zipc/dummy_stm.c45
-rw-r--r--src/policy_manager/zipc/dummy_stm.h2
7 files changed, 65 insertions, 16 deletions
diff --git a/layers.json b/layers.json
index 94e34c4..c6c0916 100644
--- a/layers.json
+++ b/layers.json
@@ -43,7 +43,7 @@
"comment": "This layer is for restriction notification. This is used by restriction role"
},
{
- "role": "^OnScreen.*|on_screen.*",
+ "role": "^OnScreen.*|on_screen.*|pop_up|system_alert",
"name": "popups",
"layer_id": 9999,
"area": { "type": "rect", "rect": { "x": 0, "y": 760, "width": -1, "height": 400 } },
diff --git a/src/app.cpp b/src/app.cpp
index db95367..df59714 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -35,6 +35,7 @@
#include <regex>
#include <thread>
#include <string>
+#include <regex>
namespace wm {
@@ -476,16 +477,22 @@ void App::layout_commit() {
}
const char* App::convertDrawingNameToRole(char const *drawing_name) {
- const char* role;
-
- if (this->drawingname2role.find(drawing_name) != this->drawingname2role.end()) {
- // drawing_name is old role. So convert to new role.
- role = this->drawingname2role[drawing_name].c_str();
+ const char* role = nullptr;
+
+ for (auto const &dr : this->drawingname2role) {
+ std::regex regex = std::regex(dr.first);
+ if (std::regex_match(drawing_name, regex)) {
+ // drawing_name is old role. So convert to new role.
+ role = dr.second.c_str();
+ break;
+ }
}
- else {
+
+ if (nullptr == role) {
// drawing_name is new role.
role = drawing_name;
}
+
HMI_DEBUG("wm", "drawing_name:%s -> role: %s", drawing_name, role);
return role;
@@ -499,6 +506,7 @@ void App::allocateWindowResource(char const *event, char const *drawing_name,
// Convert old role to new role
if ((nullptr != drawing_name) && (0 != strcmp("", drawing_name))) {
new_role = this->convertDrawingNameToRole(drawing_name);
+ HMI_DEBUG("wm", "new_role: %s", new_role);
}
if (0 == strcmp("activate", event)) {
diff --git a/src/db/app.db b/src/db/app.db
index 7ec632b..f1f937b 100644
--- a/src/db/app.db
+++ b/src/db/app.db
@@ -67,6 +67,10 @@
{
"name": "Restriction",
"role": "restriction"
+ },
+ {
+ "name": "^OnScreen.*",
+ "role": "pop_up"
}
]
-} \ No newline at end of file
+}
diff --git a/src/layout_manager/db/layout.db b/src/layout_manager/db/layout.db
index aa603f1..70523c5 100644
--- a/src/layout_manager/db/layout.db
+++ b/src/layout_manager/db/layout.db
@@ -6,7 +6,7 @@
"areas": [
{
"name": "pop_up",
- "category": "incomming_call"
+ "category": "pop_up"
}
]
},
diff --git a/src/policy_manager/db/role.db b/src/policy_manager/db/role.db
index fc491b0..5fafd03 100644
--- a/src/policy_manager/db/role.db
+++ b/src/policy_manager/db/role.db
@@ -33,8 +33,8 @@
"description": "For ALS, role:video is included here",
},
{
- "category": "popup",
- "role": "popup",
+ "category": "pop_up",
+ "role": "pop_up",
"area": "on_screen",
},
{
diff --git a/src/policy_manager/zipc/dummy_stm.c b/src/policy_manager/zipc/dummy_stm.c
index 146176f..0b2120a 100644
--- a/src/policy_manager/zipc/dummy_stm.c
+++ b/src/policy_manager/zipc/dummy_stm.c
@@ -43,7 +43,7 @@ const char* gStmCategoryName[] = {
"map",
"general",
"splitable",
- "popup",
+ "pop_up",
"system_alert",
"restriction",
"system",
@@ -66,7 +66,7 @@ const char* gStmAreaName[] = {
"normal",
"split.main",
"split.sub",
- "onscreen",
+ "pop_up",
"restriction.normal",
"restriction.split.main",
"restriction.split.sub",
@@ -78,7 +78,7 @@ 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_POP_UP,
STM_ARA_NO_RESTRICTION_NORMAL,
STM_ARA_NO_RESTRICTION_SPLIT_MAIN,
STM_ARA_NO_RESTRICTION_SPLIT_SUB,
@@ -166,6 +166,7 @@ const char** gStmCarStateNameList[] = {
stm_state_t g_crr_state;
stm_state_t g_prv_state;
+int g_prv_on_screen_state_car_stop = 0;
int g_prv_restriction_state_car_stop = 0;
int g_prv_apps_state_car_stop = 0;
int g_map_is_activated = STM_FALSE;
@@ -192,7 +193,7 @@ void stmInitialize() {
int stmTransitionState(int event, stm_state_t* state) {
int event_no, category_no, area_no;
- int restriction_state, apps_state;
+ int on_screen_state, restriction_state, apps_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;
@@ -203,6 +204,7 @@ int stmTransitionState(int event, stm_state_t* state) {
g_prv_state = g_crr_state;
// Get previous state
+ on_screen_state = g_prv_state.layer[gStmLayerNoOnScreen].state;
restriction_state = g_prv_state.layer[gStmLayerNoRestriction].state;
apps_state = g_prv_state.layer[gStmLayerNoApps].state;
trans_gear_state = g_prv_state.car_element[gStmCarElementNoTransGear].state;
@@ -329,6 +331,11 @@ int stmTransitionState(int event, stm_state_t* state) {
g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOn;
g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE;
+ // Update on screen layer
+ g_prv_on_screen_state_car_stop = on_screen_state;
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+
// Update restriction layer
g_prv_restriction_state_car_stop = restriction_state;
g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone;
@@ -350,6 +357,10 @@ int stmTransitionState(int event, stm_state_t* state) {
g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOff;
g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE;
+ // Update on screen layer
+ g_crr_state.layer[gStmLayerNoOnScreen].state = g_prv_on_screen_state_car_stop;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+
// Update restriction layer
g_crr_state.layer[gStmLayerNoRestriction].state = g_prv_restriction_state_car_stop;
g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE;
@@ -669,6 +680,32 @@ int stmTransitionState(int event, stm_state_t* state) {
}
}
+ // Set on screen layer
+ if (STM_CTG_NO_POPUP == category_no) {
+ if (STM_EVT_NO_ACTIVATE == event_no) {
+ switch (on_screen_state) {
+ case gStmLayoutNoNone:
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoPu;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
+ }
+ else if (STM_EVT_NO_DEACTIVATE == event_no) {
+ switch (on_screen_state) {
+ case gStmLayoutNoPu:
+ g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone;
+ g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE;
+ break;
+ default:
+ // nop
+ break;
+ }
+ }
+ }
+
// Copy current state for return
memcpy(state, &g_crr_state, sizeof(g_crr_state));
diff --git a/src/policy_manager/zipc/dummy_stm.h b/src/policy_manager/zipc/dummy_stm.h
index 3c80310..d2893ca 100644
--- a/src/policy_manager/zipc/dummy_stm.h
+++ b/src/policy_manager/zipc/dummy_stm.h
@@ -56,7 +56,7 @@
#define STM_ARA_NO_NORMAL 0x030000
#define STM_ARA_NO_SPLIT_MAIN 0x040000
#define STM_ARA_NO_SPLIT_SUB 0x050000
-#define STM_ARA_NO_ON_SCREEN 0x060000
+#define STM_ARA_NO_POP_UP 0x060000
#define STM_ARA_NO_RESTRICTION_NORMAL 0x070000
#define STM_ARA_NO_RESTRICTION_SPLIT_MAIN 0x080000
#define STM_ARA_NO_RESTRICTION_SPLIT_SUB 0x090000