diff options
Diffstat (limited to 'src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc')
-rw-r--r-- | src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc | 247 |
1 files changed, 135 insertions, 112 deletions
diff --git a/src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc b/src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc index eab1ccbf26..485c5d0009 100644 --- a/src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc +++ b/src/components/application_manager/src/commands/mobile/subscribe_vehicle_data_request.cc @@ -42,53 +42,67 @@ namespace commands { SubscribeVehicleDataRequest::SubscribeVehicleDataRequest( const MessageSharedPtr& message, ApplicationManager& application_manager) - : CommandRequestImpl(message, application_manager) { -} + : CommandRequestImpl(message, application_manager) {} -SubscribeVehicleDataRequest::~SubscribeVehicleDataRequest() { -} +SubscribeVehicleDataRequest::~SubscribeVehicleDataRequest() {} #ifdef HMI_DBUS_API namespace { - struct Subrequest { - hmi_apis::FunctionID::eType func_id; - const char* str; - }; - Subrequest subrequests[] = { - { hmi_apis::FunctionID::VehicleInfo_SubscribeGps, strings::gps}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeSpeed, strings::speed}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeRpm, strings::rpm}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeFuelLevel, strings::fuel_level}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeFuelLevel_State, strings::fuel_level_state}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeInstantFuelConsumption, strings::instant_fuel_consumption}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeExternalTemperature, strings::external_temp}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeVin, strings::vin}, - { hmi_apis::FunctionID::VehicleInfo_SubscribePrndl, strings::prndl}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeTirePressure, strings::tire_pressure}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeOdometer, strings::odometer}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeBeltStatus, strings::belt_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeBodyInformation, strings::body_information}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeDeviceStatus, strings::device_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeDriverBraking, strings::driver_braking}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeWiperStatus, strings::wiper_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeHeadLampStatus, strings::head_lamp_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeEngineTorque, strings::engine_torque}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeAccPedalPosition, strings::acc_pedal_pos}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeSteeringWheelAngle, strings::steering_wheel_angle}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeECallInfo, strings::e_call_info}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeAirbagStatus, strings::airbag_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeEmergencyEvent, strings::emergency_event}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeClusterModeStatus, strings::cluster_mode_status}, - { hmi_apis::FunctionID::VehicleInfo_SubscribeMyKey, strings::my_key}, - }; +struct Subrequest { + hmi_apis::FunctionID::eType func_id; + const char* str; +}; +Subrequest subrequests[] = { + {hmi_apis::FunctionID::VehicleInfo_SubscribeGps, strings::gps}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeSpeed, strings::speed}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeRpm, strings::rpm}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeFuelLevel, strings::fuel_level}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeFuelLevel_State, + strings::fuel_level_state}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeInstantFuelConsumption, + strings::instant_fuel_consumption}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeExternalTemperature, + strings::external_temp}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeVin, strings::vin}, + {hmi_apis::FunctionID::VehicleInfo_SubscribePrndl, strings::prndl}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeTirePressure, + strings::tire_pressure}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeOdometer, strings::odometer}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeBeltStatus, + strings::belt_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeBodyInformation, + strings::body_information}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeDeviceStatus, + strings::device_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeDriverBraking, + strings::driver_braking}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeWiperStatus, + strings::wiper_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeHeadLampStatus, + strings::head_lamp_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeEngineTorque, + strings::engine_torque}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeAccPedalPosition, + strings::acc_pedal_pos}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeSteeringWheelAngle, + strings::steering_wheel_angle}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeECallInfo, + strings::e_call_info}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeAirbagStatus, + strings::airbag_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeEmergencyEvent, + strings::emergency_event}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeClusterModeStatus, + strings::cluster_mode_status}, + {hmi_apis::FunctionID::VehicleInfo_SubscribeMyKey, strings::my_key}, +}; } -#endif // #ifdef HMI_DBUS_API +#endif // #ifdef HMI_DBUS_API void SubscribeVehicleDataRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - ApplicationSharedPtr app = application_manager_.application( - connection_key()); + ApplicationSharedPtr app = application_manager_.application(connection_key()); if (!app) { LOG4CXX_ERROR(logger_, "NULL pointer"); @@ -104,11 +118,11 @@ void SubscribeVehicleDataRequest::Run() { const VehicleData& vehicle_data = MessageHelper::vehicle_data(); VehicleData::const_iterator it = vehicle_data.begin(); - smart_objects::SmartObject msg_params = smart_objects::SmartObject( - smart_objects::SmartType_Map); + smart_objects::SmartObject msg_params = + smart_objects::SmartObject(smart_objects::SmartType_Map); - smart_objects::SmartObject response_params = smart_objects::SmartObject( - smart_objects::SmartType_Map); + smart_objects::SmartObject response_params = + smart_objects::SmartObject(smart_objects::SmartType_Map); for (; vehicle_data.end() != it; ++it) { const std::string& key_name = it->first; @@ -119,9 +133,11 @@ void SubscribeVehicleDataRequest::Run() { VehicleDataType key_type = it->second; if (app->IsSubscribedToIVI(key_type)) { - LOG4CXX_DEBUG(logger_, "App with connection key " << connection_key() - << " is subscribed already for VehicleDataType: " - << key_type); + LOG4CXX_DEBUG(logger_, + "App with connection key " + << connection_key() + << " is subscribed already for VehicleDataType: " + << key_type); ++subscribed_items; vi_already_subscribed_by_this_app_.insert(key_type); response_params[key_name][strings::data_type] = key_type; @@ -131,16 +147,21 @@ void SubscribeVehicleDataRequest::Run() { } if (IsSomeoneSubscribedFor(key_type)) { - LOG4CXX_DEBUG(logger_, "There are apps subscribed already for " - "VehicleDataType: " << key_type); + LOG4CXX_DEBUG(logger_, + "There are apps subscribed already for " + "VehicleDataType: " + << key_type); if (!app->SubscribeToIVI(static_cast<uint32_t>(key_type))) { - LOG4CXX_ERROR(logger_, "Unable to subscribe for VehicleDataType: " - << key_type); + LOG4CXX_ERROR( + logger_, + "Unable to subscribe for VehicleDataType: " << key_type); continue; } - LOG4CXX_DEBUG(logger_, "App with connection key " << connection_key() - << " have been subscribed for VehicleDataType: " - << key_type); + LOG4CXX_DEBUG( + logger_, + "App with connection key " + << connection_key() + << " have been subscribed for VehicleDataType: " << key_type); ++subscribed_items; vi_already_subscribed_by_another_apps_.insert(key_type); response_params[key_name][strings::data_type] = key_type; @@ -152,9 +173,11 @@ void SubscribeVehicleDataRequest::Run() { msg_params[key_name] = is_key_enabled; if (app->SubscribeToIVI(static_cast<uint32_t>(key_type))) { - LOG4CXX_DEBUG(logger_, "App with connection key " << connection_key() - << " have been subscribed for VehicleDataType: " - << key_type); + LOG4CXX_DEBUG( + logger_, + "App with connection key " + << connection_key() + << " have been subscribed for VehicleDataType: " << key_type); ++subscribed_items; } } @@ -164,14 +187,14 @@ void SubscribeVehicleDataRequest::Run() { bool is_everything_already_subscribed = static_cast<uint32_t>(items_to_subscribe) == vi_already_subscribed_by_another_apps_.size() + - vi_already_subscribed_by_this_app_.size(); + vi_already_subscribed_by_this_app_.size(); if (0 == items_to_subscribe) { if (HasDisallowedParams()) { SendResponse(false, mobile_apis::Result::DISALLOWED); } else { - SendResponse(false, mobile_apis::Result::INVALID_DATA, - "No data in the request"); + SendResponse( + false, mobile_apis::Result::INVALID_DATA, "No data in the request"); } return; } @@ -187,27 +210,23 @@ void SubscribeVehicleDataRequest::Run() { if (is_everything_already_subscribed) { mobile_apis::Result::eType result_code = vi_already_subscribed_by_this_app_.size() - ? mobile_apis::Result::IGNORED - : mobile_apis::Result::SUCCESS; + ? mobile_apis::Result::IGNORED + : mobile_apis::Result::SUCCESS; - const char* info = - vi_already_subscribed_by_this_app_.size() - ? "Already subscribed on some provided VehicleData." - : NULL; + const char* info = vi_already_subscribed_by_this_app_.size() + ? "Already subscribed on some provided VehicleData." + : NULL; - SendResponse(true, - result_code, - info, - &response_params); + SendResponse(true, result_code, info, &response_params); return; } #ifdef HMI_DBUS_API - //Generate list of subrequests + // Generate list of subrequests for (size_t i = 0; i < sizeof(subrequests) / sizeof(subrequests[0]); ++i) { const Subrequest& sr = subrequests[i]; - if (true == (*message_)[strings::msg_params].keyExists(sr.str) - && true == (*message_)[strings::msg_params][sr.str].asBool()) { + if (true == (*message_)[strings::msg_params].keyExists(sr.str) && + true == (*message_)[strings::msg_params][sr.str].asBool()) { HmiRequest hmi_request; hmi_request.str = sr.str; hmi_request.func_id = sr.func_id; @@ -215,17 +234,19 @@ void SubscribeVehicleDataRequest::Run() { hmi_requests_.push_back(hmi_request); } } - LOG4CXX_DEBUG(logger_, hmi_requests_.size() << - " requests are going to be sent to HMI"); + LOG4CXX_DEBUG( + logger_, hmi_requests_.size() << " requests are going to be sent to HMI"); - //Send subrequests + // Send subrequests for (HmiRequests::const_iterator it = hmi_requests_.begin(); - it != hmi_requests_.end(); ++it) + it != hmi_requests_.end(); + ++it) SendHMIRequest(it->func_id, &msg_params, true); #else SendHMIRequest(hmi_apis::FunctionID::VehicleInfo_SubscribeVehicleData, - &msg_params, true); -#endif // #ifdef HMI_DBUS_API + &msg_params, + true); +#endif // #ifdef HMI_DBUS_API } void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { @@ -239,8 +260,8 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { return; } - ApplicationSharedPtr app = application_manager_.application( - CommandRequestImpl::connection_key()); + ApplicationSharedPtr app = + application_manager_.application(CommandRequestImpl::connection_key()); if (!app) { LOG4CXX_ERROR(logger_, "NULL pointer."); @@ -249,23 +270,24 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { #ifdef HMI_DBUS_API for (HmiRequests::iterator it = hmi_requests_.begin(); - it != hmi_requests_.end(); ++it) { - HmiRequest & hmi_request = *it; + it != hmi_requests_.end(); + ++it) { + HmiRequest& hmi_request = *it; if (hmi_request.func_id == event.id()) { - hmi_request.status = - static_cast<hmi_apis::Common_Result::eType>( - message[strings::params][hmi_response::code].asInt()); + hmi_request.status = static_cast<hmi_apis::Common_Result::eType>( + message[strings::params][hmi_response::code].asInt()); if (hmi_apis::Common_Result::SUCCESS == hmi_request.status) hmi_request.value = message[strings::msg_params][hmi_request.str]; hmi_request.complete = true; break; } } - bool all_complete = true; + bool all_complete = true; bool any_arg_success = false; mobile_api::Result::eType status = mobile_api::Result::eType::SUCCESS; for (HmiRequests::const_iterator it = hmi_requests_.begin(); - it != hmi_requests_.end(); ++it) { + it != hmi_requests_.end(); + ++it) { if (!it->complete) { all_complete = false; break; @@ -273,12 +295,14 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { if (hmi_apis::Common_Result::SUCCESS != it->status) { if (mobile_api::Result::SUCCESS == status) { status = static_cast<mobile_apis::Result::eType>(it->status); - } else if (status - != static_cast<mobile_apis::Result::eType>(it->status)) { + } else if (status != + static_cast<mobile_apis::Result::eType>(it->status)) { status = mobile_api::Result::eType::GENERIC_ERROR; } - LOG4CXX_TRACE(logger_, "Status from HMI: " << it->status << - ", so response status become " << status); + LOG4CXX_TRACE(logger_, + "Status from HMI: " << it->status + << ", so response status become " + << status); } else { any_arg_success = true; } @@ -288,7 +312,8 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { smart_objects::SmartObject response_params(smart_objects::SmartType_Map); if (any_arg_success) { for (HmiRequests::const_iterator it = hmi_requests_.begin(); - it != hmi_requests_.end(); ++it) { + it != hmi_requests_.end(); + ++it) { response_params[it->str] = it->value; } } @@ -306,12 +331,12 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { const bool is_result_no_error = Compare<hmi_apis::Common_Result::eType, EQ, ONE>( - hmi_result, - hmi_apis::Common_Result::SUCCESS, - hmi_apis::Common_Result::WARNINGS); + hmi_result, + hmi_apis::Common_Result::SUCCESS, + hmi_apis::Common_Result::WARNINGS); - bool is_succeeded = is_result_no_error || - !vi_already_subscribed_by_another_apps_.empty(); + bool is_succeeded = + is_result_no_error || !vi_already_subscribed_by_another_apps_.empty(); mobile_apis::Result::eType result_code = MessageHelper::HMIToMobileResult(hmi_result); @@ -328,19 +353,17 @@ void SubscribeVehicleDataRequest::on_event(const event_engine::Event& event) { if (!vi_already_subscribed_by_another_apps_.empty() || !vi_already_subscribed_by_this_app_.empty()) { - AddAlreadySubscribedVI(const_cast<smart_objects::SmartObject&>( - message[strings::msg_params])); + AddAlreadySubscribedVI( + const_cast<smart_objects::SmartObject&>(message[strings::msg_params])); } - SendResponse(is_succeeded, - result_code, - return_info, - &(message[strings::msg_params])); + SendResponse( + is_succeeded, result_code, return_info, &(message[strings::msg_params])); if (is_succeeded) { app->UpdateHash(); } -#endif // #ifdef HMI_DBUS_API +#endif // #ifdef HMI_DBUS_API } void SubscribeVehicleDataRequest::AddAlreadySubscribedVI( @@ -349,7 +372,7 @@ void SubscribeVehicleDataRequest::AddAlreadySubscribedVI( using namespace mobile_apis; VehicleInfoSubscriptions::const_iterator it_same_app = vi_already_subscribed_by_this_app_.begin(); - for (;vi_already_subscribed_by_this_app_.end() != it_same_app; + for (; vi_already_subscribed_by_this_app_.end() != it_same_app; ++it_same_app) { msg_params[*it_same_app][strings::result_code] = VehicleDataResultCode::VDRC_DATA_ALREADY_SUBSCRIBED; @@ -357,7 +380,7 @@ void SubscribeVehicleDataRequest::AddAlreadySubscribedVI( VehicleInfoSubscriptions::const_iterator it_another_app = vi_already_subscribed_by_another_apps_.begin(); - for (;vi_already_subscribed_by_another_apps_.end() != it_another_app; + for (; vi_already_subscribed_by_another_apps_.end() != it_another_app; ++it_another_app) { msg_params[*it_another_app][strings::result_code] = VehicleDataResultCode::VDRC_SUCCESS; @@ -374,13 +397,13 @@ void SubscribeVehicleDataRequest::UnsubscribeFailedSubscriptions( for (; vehicle_data.end() != it; ++it) { if (msg_params.keyExists(it->first)) { if (msg_params[it->first][strings::result_code].asInt() != - hmi_apis::Common_VehicleDataResultCode::VDRC_SUCCESS) { - LOG4CXX_DEBUG(logger_, "Subscription for VehicleDataType " - << it->first - << " is unsuccessfull. " - "Unsubscribing app with connection key " - << connection_key() - << " from it."); + hmi_apis::Common_VehicleDataResultCode::VDRC_SUCCESS) { + LOG4CXX_DEBUG(logger_, + "Subscription for VehicleDataType " + << it->first + << " is unsuccessfull. " + "Unsubscribing app with connection key " + << connection_key() << " from it."); app->UnsubscribeFromIVI(it->second); } } |