From 681bb3f7b1618a083ac07878d9513e56e9279967 Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Tue, 29 May 2018 23:14:11 +0900 Subject: Add timer for restriction mode When car state is changed stop -> run, the timer for switching restriction mode off -> on is set. When car state is changed run -> stop, restriction mode is changed on -> off. Change-Id: I6a8af9b45c7631db59cb78c41d07af118346a331 Signed-off-by: Yuta Doi --- src/layout_manager/layout.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/layout_manager') 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"); -- cgit