aboutsummaryrefslogtreecommitdiffstats
path: root/src/pm_wrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pm_wrapper.cpp')
-rw-r--r--src/pm_wrapper.cpp193
1 files changed, 184 insertions, 9 deletions
diff --git a/src/pm_wrapper.cpp b/src/pm_wrapper.cpp
index 8706128..7cf90f0 100644
--- a/src/pm_wrapper.cpp
+++ b/src/pm_wrapper.cpp
@@ -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);
}