fix for als2019 8.0.0
[apps/agl-service-windowmanager.git] / src / pm_wrapper.cpp
index 8706128..7cf90f0 100644 (file)
@@ -43,14 +43,14 @@ static void onError(json_object *json_out)
 
 PMWrapper::PMWrapper() {}
 
-int PMWrapper::initialize()
+int PMWrapper::initialize(std::string ecu_name)
 {
     int ret = 0;
 
-    ret = this->pm.initialize();
+    ret = this->pm.initialize(ecu_name);
     if (0 > ret)
     {
-        HMI_ERROR("Faild to initialize PolicyManager");
+        HMI_ERROR("wm:pmw", "Faild to initialize PolicyManager");
     }
 
     g_context = this;
@@ -81,7 +81,39 @@ int PMWrapper::setInputEventData(Task task, std::string role, std::string area)
     {
         event = "deactivate";
     }
-    else
+    else if (Task::TASK_PARKING_BRAKE_OFF == task)
+    {
+        event = "parking_brake_off";
+    }
+    else if (Task::TASK_PARKING_BRAKE_ON == task)
+    {
+        event = "parking_brake_on";
+    }
+    else if (Task::TASK_ACCEL_PEDAL_OFF == task)
+    {
+        event = "accel_pedal_off";
+    }
+    else if (Task::TASK_ACCEL_PEDAL_ON == task)
+    {
+        event = "accel_pedal_on";
+    }
+    else if (Task::TASK_HEDLAMP_OFF == task)
+    {
+        event = "headlamp_off";
+    }
+    else if (Task::TASK_HEDLAMP_ON == task)
+    {
+        event = "headlamp_on";
+    }
+    else if (Task::TASK_LIGHTSTATUS_BRAKE_OFF == task)
+    {
+        event = "lightstatus_brake_off";
+    }
+    else if (Task::TASK_LIGHTSTATUS_BRAKE_ON == task)
+    {
+        event = "lightstatus_brake_on";
+    }
+   else
     {
         event = "";
     }
@@ -95,7 +127,7 @@ int PMWrapper::setInputEventData(Task task, std::string role, std::string area)
     ret = this->pm.setInputEventData(json_in);
     if (0 > ret)
     {
-        HMI_ERROR("Faild to set input event data to PolicyManager");
+        HMI_ERROR("wm:pmw", "Faild to set input event data to PolicyManager");
     }
     json_object_put(json_in);
 
@@ -108,7 +140,7 @@ int PMWrapper::executeStateTransition()
     ret = this->pm.executeStateTransition();
     if (0 > ret)
     {
-        HMI_ERROR("Failed to execute state transition for PolicyManager");
+        HMI_ERROR("wm:pmw", "Failed to execute state transition for PolicyManager");
     }
 
     return ret;
@@ -127,11 +159,151 @@ void PMWrapper::updateStates(json_object *json_out)
 
     HMI_DEBUG("json_out dump:%s", json_object_get_string(json_out));
 
+    this->createCarStateChangeAction(json_out, actions);
     this->createLayoutChangeAction(json_out, actions);
 
     this->on_state_transitioned(actions);
 }
 
+void PMWrapper::createCarStateChangeAction(json_object *json_out, std::vector<WMAction> &actions)
+{
+    json_object *json_car_ele;
+    if (!json_object_object_get_ex(json_out, "car_elements", &json_car_ele))
+    {
+        HMI_DEBUG("Not found key \"car_elements\"");
+        return;
+    }
+
+    int len = json_object_array_length(json_car_ele);
+    HMI_DEBUG("json_car_ele len:%d", len);
+
+    for (int i = 0; i < len; i++)
+    {
+        json_object *json_tmp = json_object_array_get_idx(json_car_ele, i);
+
+        std::string car_ele_name = jh::getStringFromJson(json_tmp, "name");
+        std::string state = jh::getStringFromJson(json_tmp, "state");
+        json_bool changed = jh::getBoolFromJson(json_tmp, "changed");
+        HMI_DEBUG("car_element:%s changed:%d", car_ele_name.c_str(), changed);
+
+        if (changed)
+        {
+            TaskCarState task = TaskCarState::NO_TASK;
+            if ("parking_brake" == car_ele_name)
+            {
+                if ("off" == state)
+                {
+                    task = TaskCarState::PARKING_BRAKE_OFF;
+                }
+                else if ("on" == state)
+                {
+                    task = TaskCarState::PARKING_BRAKE_ON;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown parking brake state: %s", state.c_str());
+                }
+            }
+            else if ("accel_pedal" == car_ele_name)
+            {
+                if ("off" == state)
+                {
+                    task = TaskCarState::ACCEL_PEDAL_OFF;
+                }
+                else if ("on" == state)
+                {
+                    task = TaskCarState::ACCEL_PEDAL_ON;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown accel pedal state: %s", state.c_str());
+                }
+            }
+            else if ("lamp" == car_ele_name)
+            {
+                if ("off" == state)
+                {
+                    task = TaskCarState::HEDLAMP_OFF;
+                }
+                else if ("on" == state)
+                {
+                    task = TaskCarState::HEDLAMP_ON;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown lamp state: %s", state.c_str());
+                }
+            }
+            else if ("lightstatus_brake" == car_ele_name)
+            {
+                if ("off" == state)
+                {
+                    task = TaskCarState::LIGHTSTATUS_BRAKE_OFF;
+                }
+                else if ("on" == state)
+                {
+                    task = TaskCarState::LIGHTSTATUS_BRAKE_ON;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown lightstatus brake state: %s", state.c_str());
+                }
+            }
+            else if ("running" == car_ele_name)
+            {
+                if ("stop" == state)
+                {
+                    task = TaskCarState::CAR_STOP;
+                }
+                else if ("run" == state)
+                {
+                    task = TaskCarState::CAR_RUN;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown car state: %s", state.c_str());
+                }
+            }
+            else if ("restriction_mode" == car_ele_name)
+            {
+                if ("off" == state)
+                {
+                    task = TaskCarState::RESTRICTION_MODE_OFF;
+                }
+                else if ("on" == state)
+                {
+                    task = TaskCarState::RESTRICTION_MODE_ON;
+                }
+                else
+                {
+                    HMI_DEBUG("Unknown car state: %s", state.c_str());
+                }
+            }
+            else
+            {
+                HMI_DEBUG("Unknown car element: %s", car_ele_name.c_str());
+            }
+
+            // Set action
+            if (TaskCarState::NO_TASK != task)
+            {
+                bool end_draw_finished = true;
+                WMAction act
+                {
+                    0,
+                    nullptr,
+                    "",
+                    "",
+                    TaskVisible::NO_CHANGE,
+                    end_draw_finished,
+                    task
+                };
+                actions.push_back(act);
+            }
+        }
+    }
+}
+
 void PMWrapper::createLayoutChangeAction(json_object *json_out, std::vector<WMAction> &actions)
 {
     // Get displayed roles from previous layout
@@ -197,7 +369,8 @@ void PMWrapper::createLayoutChangeAction(json_object *json_out, std::vector<WMAc
                         role_name,
                         area_name,
                         TaskVisible::VISIBLE,
-                        end_draw_finished
+                        end_draw_finished,
+                        TaskCarState::NO_TASK
                     };
                     actions.push_back(act);
                 }
@@ -220,7 +393,8 @@ void PMWrapper::createLayoutChangeAction(json_object *json_out, std::vector<WMAc
                             role_name,
                             area_name,
                             TaskVisible::VISIBLE,
-                            end_draw_finished
+                            end_draw_finished,
+                            TaskCarState::NO_TASK
                         };
                         actions.push_back(act);
                     }
@@ -245,7 +419,8 @@ void PMWrapper::createLayoutChangeAction(json_object *json_out, std::vector<WMAc
                     i_prv.first,
                     "",
                     TaskVisible::INVISIBLE,
-                    end_draw_finished
+                    end_draw_finished,
+                    TaskCarState::NO_TASK
                 };
                 actions.push_back(act);
             }