aboutsummaryrefslogtreecommitdiffstats
path: root/src/layout_manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout_manager')
-rw-r--r--src/layout_manager/layout.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/layout_manager/layout.cpp b/src/layout_manager/layout.cpp
index c888b0e..cd81d8f 100644
--- a/src/layout_manager/layout.cpp
+++ b/src/layout_manager/layout.cpp
@@ -84,6 +84,21 @@ bool LayoutManager::updateLayout(json_object* obj,
car_state = jh::getStringFromJson(json_car, "state");
}
+ // Check restriction mode change
+ json_object* json_restriction_mode;
+ if (!json_object_object_get_ex(obj, "restriction_mode", &json_restriction_mode)) {
+ HMI_ERROR("wm:lm", "Parse Error!!");
+ return -1;
+ }
+
+ json_bool is_restriction_mode_changed;
+ std::string restriction_mode = "";
+ is_restriction_mode_changed = jh::getBoolFromJson(json_restriction_mode, "is_changed");
+ if (is_restriction_mode_changed) {
+ // If restriction mode is changed, get restriction mode
+ restriction_mode = jh::getStringFromJson(json_restriction_mode, "state");
+ }
+
// Update layout of all layers
json_object* json_layers;
if (!json_object_object_get_ex(obj, "layers", &json_layers)) {
@@ -111,12 +126,21 @@ bool LayoutManager::updateLayout(json_object* obj,
this->prv_layers_[layer] = this->crr_layers_[layer];
std::string prv_layout_name = this->prv_layers_[layer].begin()->first;
+#if 1
+ // If restriction mode is changed off -> on,
+ // store current state for state of restriction mode off
+ if ((is_restriction_mode_changed) && ("restriction_mode_on" == restriction_mode)) {
+ HMI_DEBUG("wm:lm", "Store current state for state of restriction mode off");
+ this->prv_layers_car_stop_[layer] = this->crr_layers_[layer];
+ }
+#else
// If car state is changed car_stop -> car_run,
// store current state for state of car stop
if ((is_car_state_changed) && ("car_run" == car_state)) {
HMI_DEBUG("wm:lm", "Store current state for state of car stop");
this->prv_layers_car_stop_[layer] = this->crr_layers_[layer];
}
+#endif
json_object* json_is_changed;
if (!json_object_object_get_ex(json_layer, "is_changed", &json_is_changed)) {
@@ -139,11 +163,19 @@ bool LayoutManager::updateLayout(json_object* obj,
HMI_DEBUG("wm:lm", "crr state: %s", crr_layout_name);
TypeLayouts crr_layout;
+#if 1
+ if ((is_restriction_mode_changed) && ("restriction_mode_off" == restriction_mode)) {
+ // If restriction mode is changed on -> off,
+ // restore state of restriction mode off
+ HMI_DEBUG("wm:lm", "Restriction mode is changed on -> off, so restore state of restriction mode off");
+ crr_layout = this->prv_layers_car_stop_[layer];
+#else
if ((is_car_state_changed) && ("car_stop" == car_state)) {
// If car state is changed car_run -> car_stop,
// restore state of car stop
HMI_DEBUG("wm:lm", "Car state is changed car_run -> car_stop, so restore state of car stop");
crr_layout = this->prv_layers_car_stop_[layer];
+#endif
}
else if ("none" == std::string(crr_layout_name)) {
// If current layout is "none",
@@ -170,11 +202,19 @@ bool LayoutManager::updateLayout(json_object* obj,
}
// Update role in new area
+#if 1
+ if (is_restriction_mode_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 (is_car_state_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");