X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fpm_wrapper.cpp;h=7cf90f08b6a404bdde9ad6f6db07a66e27c2ca09;hb=refs%2Fheads%2Fsandbox%2Fzheng_wenlong%2Fals2019;hp=8706128100e75455ff9db5d432b2c8299f6ad06e;hpb=7526846697e4485bca995f01a130f5e34a40b690;p=apps%2Fagl-service-windowmanager.git 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 &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 &actions) { // Get displayed roles from previous layout @@ -197,7 +369,8 @@ void PMWrapper::createLayoutChangeAction(json_object *json_out, std::vector