X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fapp.cpp;h=4ce9df6018ee40d1a582a0b0625e7f444305bdaa;hb=ac6a264383ea7846433057450242b126f2b459db;hp=a30a963fbce3fad97fa255392f12c201c13f1af8;hpb=188dd5b8dab02573e2006f42d6c14eea0f4becef;p=apps%2Fagl-service-windowmanager.git diff --git a/src/app.cpp b/src/app.cpp index a30a963..4ce9df6 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -95,148 +95,106 @@ struct result load_layer_map(char const *filename) { namespace rm { App *context; -static void eventHandler(json_object* json_out) { +static void onStateTransitioned(json_object* json_out) { context->updateWindowResources(json_out); } + +static void onError(json_object* json_out) { + HMI_DEBUG("wm", "error message from PolicyManager:%s", + json_object_get_string(json_out)); +} } // namespace rm -void App::updateCarStates(json_object* json_out) { - // Check parking brake state - json_object* json_parking_brake; - if (!json_object_object_get_ex(json_out, "parking_brake", &json_parking_brake)) { - HMI_DEBUG("wm", "Not found key \"parking_brake\""); +void App::updateCarElements(json_object* json_out) { + json_object* json_car_ele; + if (!json_object_object_get_ex(json_out, "car_elements", &json_car_ele)) { + HMI_DEBUG("wm", "Not found key \"car_elements\""); return; } - json_bool is_changed; - is_changed = jh::getBoolFromJson(json_parking_brake, "is_changed"); - if (is_changed) { - std::string parking_brake_state = jh::getStringFromJson(json_parking_brake, "state"); - HMI_DEBUG("wm", "parking_brake_state: %s", parking_brake_state.c_str()); + int len = json_object_array_length(json_car_ele); + HMI_DEBUG("wm", "json_car_ele len:%d", len); + + for (int i=0; icrr_car_info_.parking_brake_stt = false; + if (changed) { + if ("parking_brake" == car_ele_name) { + if ("off" == state) { + this->crr_car_info.parking_brake_stt = false; #if 0 // FOR ALS: using lightstatus brake, so do not emit parking brake event - this->emitParkingBrakeOff(); + this->emitParkingBrakeOff(); #endif - } - else if ("parking_brake_on" == parking_brake_state) { - this->crr_car_info_.parking_brake_stt = true; + } + else if ("on" == state) { + this->crr_car_info.parking_brake_stt = true; #if 0 // FOR ALS: using lightstatus brake, so do not emit parking brake event - this->emitParkingBrakeOn(); + this->emitParkingBrakeOn(); #endif - } - else { - HMI_DEBUG("wm", "Unknown parking brake state"); - return; - } - } - - // Check accelerator pedal state - json_object* json_accel_pedal; - if (!json_object_object_get_ex(json_out, "accel_pedal", &json_accel_pedal)) { - HMI_DEBUG("wm", "Not found key \"accel_pedal\""); - return; - } - - is_changed = jh::getBoolFromJson(json_accel_pedal, "is_changed"); - if (is_changed) { - std::string accel_pedal_state = jh::getStringFromJson(json_accel_pedal, "state"); - HMI_DEBUG("wm", "accel_pedal_state: %s", accel_pedal_state.c_str()); - - // Update state - if ("accel_pedal_off" == accel_pedal_state) { - this->crr_car_info_.accel_pedal_stt = false; - } - else if ("accel_pedal_on" == accel_pedal_state) { - this->crr_car_info_.accel_pedal_stt = true; - } - else { - HMI_DEBUG("wm", "Unknown accel pedal state"); - return; - } - } - - // Check lightstatus brake state - json_object* json_lightstatus_brake; - if (!json_object_object_get_ex(json_out, "lightstatus_brake", &json_lightstatus_brake)) { - HMI_DEBUG("wm", "Not found key \"lightstatus_brake\""); - return; - } - - is_changed = jh::getBoolFromJson(json_lightstatus_brake, "is_changed"); - if (is_changed) { - std::string lightstatus_brake_state = jh::getStringFromJson(json_lightstatus_brake, "state"); - HMI_DEBUG("wm", "lightstatus_brake_state: %s", lightstatus_brake_state.c_str()); - - // Update state and emit event - if ("lightstatus_brake_off" == lightstatus_brake_state) { - this->crr_car_info_.lightstatus_brake_stt = false; - this->emitLightstatusBrakeOff(); - } - else if ("lightstatus_brake_on" == lightstatus_brake_state) { - this->crr_car_info_.lightstatus_brake_stt = true; - this->emitLightstatusBrakeOn(); - } - else { - HMI_DEBUG("wm", "Unknown lightstatus brake state"); - return; - } - } - - // Check car state - json_object* json_car; - if (!json_object_object_get_ex(json_out, "car", &json_car)) { - HMI_DEBUG("wm", "Not found key \"car\""); - return; - } - - is_changed = jh::getBoolFromJson(json_car, "is_changed"); - if (is_changed) { - std::string car_state = jh::getStringFromJson(json_car, "state"); - HMI_DEBUG("wm", "car_state: %s", car_state.c_str()); - - // Emit car event - if ("car_stop" == car_state) { - this->crr_car_info_.car_stt = "stop"; - this->emitCarStop(); - } - else if ("car_run" == car_state) { - this->crr_car_info_.car_stt = "run"; - this->emitCarRun(); - } - else { - HMI_DEBUG("wm", "Unknown car state"); - return; - } - } - - // Check lamp state - json_object* json_lamp; - if (!json_object_object_get_ex(json_out, "lamp", &json_lamp)) { - HMI_DEBUG("wm", "Not found key \"lamp\""); - return; - } - - is_changed = jh::getBoolFromJson(json_lamp, "is_changed"); - if (is_changed) { - std::string lamp_state = jh::getStringFromJson(json_lamp, "state"); - HMI_DEBUG("wm", "lamp_state: %s", lamp_state.c_str()); - - // Update state and emit event - if ("lamp_off" == lamp_state) { - this->crr_car_info_.headlamp_stt = false; - this->emitHeadlampOff(); - } - else if ("lamp_on" == lamp_state) { - this->crr_car_info_.headlamp_stt = true; - this->emitHeadlampOn(); - } - else { - HMI_DEBUG("wm", "Unknown lamp state"); - return; + } + else { + HMI_DEBUG("wm", "Unknown parking brake state: %s", state.c_str()); + } + } + else if ("accel_pedal" == car_ele_name) { + if ("off" == state) { + this->crr_car_info.accel_pedal_stt = false; + } + else if ("on" == state) { + this->crr_car_info.accel_pedal_stt = true; + } + else { + HMI_DEBUG("wm", "Unknown accel pedal state: %s", state.c_str()); + } + } + else if ("lightstatus_brake" == car_ele_name) { + if ("off" == state) { + this->crr_car_info.lightstatus_brake_stt = false; + this->emitLightstatusBrakeOff(); + } + else if ("on" == state) { + this->crr_car_info.lightstatus_brake_stt = true; + this->emitLightstatusBrakeOn(); + } + else { + HMI_DEBUG("wm", "Unknown lightstatus brake state: %s", state.c_str()); + } + } + else if ("running" == car_ele_name) { + if ("stop" == state) { + this->crr_car_info.car_stt = "stop"; + this->emitCarStop(); + } + else if ("run" == state) { + this->crr_car_info.car_stt = "run"; + this->emitCarRun(); + } + else { + HMI_DEBUG("wm", "Unknown car state: %s", state.c_str()); + } + } + else if ("lamp" == car_ele_name) { + if ("off" == state) { + this->crr_car_info.headlamp_stt = false; + this->emitHeadlampOff(); + } + else if ("on" == state) { + this->crr_car_info.headlamp_stt = true; + this->emitHeadlampOn(); + } + else { + HMI_DEBUG("wm", "Unknown lamp state: %s", state.c_str()); + } + } + else { + HMI_DEBUG("wm", "Unknown car element: %s", car_ele_name.c_str()); + } } } } @@ -251,7 +209,6 @@ void App::updateLayers(json_object* json_out) { int len = json_object_array_length(json_layers); HMI_DEBUG("wm", "json_layers len:%d", len); - HMI_DEBUG("wm", "json_layers dump:%s", json_object_get_string(json_layers)); for (int i=0; iupdateCarStates(json_out); + HMI_DEBUG("wm", "json_out dump:%s", json_object_get_string(json_out)); + + // Update car elements + this->updateCarElements(json_out); // Update layers this->updateLayers(json_out); @@ -359,11 +318,11 @@ App::App(wl::display *d) } // Initialize current car info - this->crr_car_info_.parking_brake_stt = true; - this->crr_car_info_.accel_pedal_stt = false; - this->crr_car_info_.accel_pedal_pos = 0; - this->crr_car_info_.car_stt = "stop"; - this->crr_car_info_.headlamp_stt = false; + this->crr_car_info.parking_brake_stt = true; + this->crr_car_info.accel_pedal_stt = false; + this->crr_car_info.accel_pedal_pos = 0; + this->crr_car_info.car_stt = "stop"; + this->crr_car_info.headlamp_stt = false; } int App::init() { @@ -385,16 +344,16 @@ int App::init() { #endif // Initialize PolicyManager - this->pm_.initialize(); + this->pm.initialize(); // Register callback to PolicyManager PolicyManager::CallbackTable callback; - callback.onStateTransitioned = rm::eventHandler; - callback.onError = nullptr; - this->pm_.registerCallback(callback); + callback.onStateTransitioned = rm::onStateTransitioned; + callback.onError = rm::onError; + this->pm.registerCallback(callback); // Initialize LayoutManager - this->lm_.initialize(); + this->lm.initialize(); // Make afb event for (int i=Event_Val_Min; i<=Event_Val_Max; i++) { @@ -519,9 +478,9 @@ void App::layout_commit() { const char* App::convertDrawingNameToRole(char const *drawing_name) { const char* role; - if (this->drawingname2role_.find(drawing_name) != this->drawingname2role_.end()) { + if (this->drawingname2role.find(drawing_name) != this->drawingname2role.end()) { // drawing_name is old role. So convert to new role. - role = this->drawingname2role_[drawing_name].c_str(); + role = this->drawingname2role[drawing_name].c_str(); } else { // drawing_name is new role. @@ -593,10 +552,10 @@ void App::allocateWindowResource(char const *event, char const *drawing_name, } // Set input event data - this->pm_.setInputEventData(json_in); + this->pm.setInputEventData(json_in); // Execute state transition - this->pm_.executeStateTransition(); + this->pm.executeStateTransition(); // Release json_object json_object_put(json_in); @@ -826,7 +785,7 @@ result App::api_request_surface(char const *drawing_name) { } // Set map of (role, drawing_name) - this->role2drawingname_[role] = std::string(drawing_name); + this->role2drawingname[role] = std::string(drawing_name); return Ok(id); } @@ -1015,7 +974,7 @@ void App::deactivate(std::string role) { HMI_ERROR("wm", "Surface does not exist"); return; } - std::string drawing_name = this->role2drawingname_[role]; + std::string drawing_name = this->role2drawingname[role]; HMI_DEBUG("wm", "Deactivate role:%s (drawing_name:%s)", role.c_str(), drawing_name.c_str()); @@ -1053,7 +1012,7 @@ void App::setSurfaceSize(const char* role, const char* area) { HMI_DEBUG("wm", "role:%s area:%s", role, area); // Get size of current area - compositor::rect size = this->lm_.getAreaSize(area); + compositor::rect size = this->lm.getAreaSize(area); // Set destination to the display rectangle auto const &surface_id = this->lookup_id(role); @@ -1075,7 +1034,7 @@ void App::setSurfaceSize(const char* role, const char* area) { size.x, size.y, size.w, size.h); // Emit syncDraw event - const char* drawing_name = this->role2drawingname_[role].c_str(); + const char* drawing_name = this->role2drawingname[role].c_str(); this->emit_syncdraw(drawing_name, area, size.x, size.y, size.w, size.h); @@ -1084,7 +1043,7 @@ void App::setSurfaceSize(const char* role, const char* area) { } void App::setAccelPedalPos(double val) { - this->crr_car_info_.accel_pedal_pos = val; + this->crr_car_info.accel_pedal_pos = val; } extern const char* kDefaultAppDb; @@ -1142,12 +1101,12 @@ int App::loadAppDb() { } HMI_DEBUG("wm", "> role:%s", role); - this->drawingname2role_[app] = std::string(role); + this->drawingname2role[app] = std::string(role); } // Check - for(auto itr = this->drawingname2role_.begin(); - itr != this->drawingname2role_.end(); ++itr) { + for(auto itr = this->drawingname2role.begin(); + itr != this->drawingname2role.end(); ++itr) { HMI_DEBUG("wm", "app:%s role:%s", itr->first.c_str(), itr->second.c_str()); }