diff options
Diffstat (limited to 'src/components/application_manager/src/message_helper/message_helper.cc')
-rw-r--r-- | src/components/application_manager/src/message_helper/message_helper.cc | 497 |
1 files changed, 170 insertions, 327 deletions
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index b854d83c6e..81491b7bf9 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -53,6 +53,7 @@ #include "application_manager/message_helper.h" #include "application_manager/policies/policy_handler_interface.h" #include "application_manager/resumption/resume_ctrl.h" +#include "application_manager/rpc_service.h" #include "connection_handler/connection_handler_impl.h" #include "transport_manager/common.h" #include "interfaces/MOBILE_API.h" @@ -179,6 +180,8 @@ std::pair<std::string, mobile_apis::VehicleDataType::VEHICLEDATA_FUELRANGE), std::make_pair(strings::external_temp, mobile_apis::VehicleDataType::VEHICLEDATA_EXTERNTEMP), + std::make_pair(strings::turn_signal, + mobile_apis::VehicleDataType::VEHICLEDATA_TURNSIGNAL), std::make_pair(strings::vin, mobile_apis::VehicleDataType::VEHICLEDATA_VIN), std::make_pair(strings::prndl, mobile_apis::VehicleDataType::VEHICLEDATA_PRNDL), @@ -188,6 +191,9 @@ std::pair<std::string, mobile_apis::VehicleDataType::VEHICLEDATA_ODOMETER), std::make_pair(strings::belt_status, mobile_apis::VehicleDataType::VEHICLEDATA_BELTSTATUS), + std::make_pair( + strings::electronic_park_brake_status, + mobile_apis::VehicleDataType::VEHICLEDATA_ELECTRONICPARKBRAKESTATUS), std::make_pair(strings::body_information, mobile_apis::VehicleDataType::VEHICLEDATA_BODYINFO), std::make_pair(strings::device_status, @@ -226,58 +232,44 @@ const VehicleData MessageHelper::vehicle_data_( kVehicleDataInitializer, kVehicleDataInitializer + ARRAYSIZE(kVehicleDataInitializer)); -#ifdef HMI_DBUS_API -namespace { -struct VehicleInfo_Requests { - hmi_apis::FunctionID::eType func_id; - const char* str; -}; -static VehicleInfo_Requests ivi_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}, -}; +smart_objects::SmartObjectSPtr MessageHelper::CreateNotification( + mobile_apis::FunctionID::eType function_id, uint32_t app_id) { + using smart_objects::SmartObject; + LOG4CXX_AUTO_TRACE(logger_); + smart_objects::SmartObjectSPtr object( + new SmartObject(smart_objects::SmartType_Map)); + (*object)[strings::params][strings::message_type] = + static_cast<int>(kNotification); + (*object)[strings::params][strings::function_id] = function_id; + (*object)[strings::params][strings::connection_key] = app_id; + (*object)[strings::params][strings::protocol_version] = + commands::CommandImpl::protocol_version_; + (*object)[strings::params][strings::protocol_type] = + commands::CommandImpl::mobile_protocol_type_; + (*object)[strings::msg_params] = + smart_objects::SmartObject(smart_objects::SmartType_Map); + return object; +} + +NsSmartDeviceLink::NsSmartObjects::SmartObjectSPtr +MessageHelper::CreateHMINotification(hmi_apis::FunctionID::eType function_id) { + using smart_objects::SmartObject; + using smart_objects::SmartObjectSPtr; + using smart_objects::SmartType_Map; + LOG4CXX_AUTO_TRACE(logger_); + SmartObjectSPtr notification_ptr = + utils::MakeShared<SmartObject>(SmartType_Map); + SmartObject& notification = *notification_ptr; + notification[strings::params][strings::message_type] = + static_cast<int32_t>(kNotification); + notification[strings::params][strings::protocol_version] = + commands::CommandImpl::protocol_version_; + notification[strings::params][strings::protocol_type] = + commands::CommandImpl::hmi_protocol_type_; + notification[strings::params][strings::function_id] = function_id; + + return notification_ptr; } -#endif // #ifdef HMI_DBUS_API const uint32_t MessageHelper::GetPriorityCode(const std::string& priority) { CommonAppPriorityMap::const_iterator it = app_priority_values.find(priority); @@ -365,7 +357,7 @@ void MessageHelper::SendDecryptCertificateToHMI(const std::string& file_name, msg_params[hmi_request::file_name] = file_name; object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendGetSystemTimeRequest(const uint32_t correlation_id, @@ -379,7 +371,7 @@ void MessageHelper::SendGetSystemTimeRequest(const uint32_t correlation_id, (*message)[strings::params][strings::function_id] = hmi_apis::FunctionID::BasicCommunication_GetSystemTime; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendHashUpdateNotification(const uint32_t app_id, @@ -392,7 +384,8 @@ void MessageHelper::SendHashUpdateNotification(const uint32_t app_id, } smart_objects::SmartObjectSPtr so = CreateHashUpdateNotification(app_id); PrintSmartObject(*so); - if (!app_mngr.ManageMobileCommand(so, commands::Command::ORIGIN_SDL)) { + if (!app_mngr.GetRPCService().ManageMobileCommand( + so, commands::Command::SOURCE_SDL)) { LOG4CXX_ERROR(logger_, "Failed to send HashUpdate notification."); return; } @@ -444,7 +437,7 @@ void MessageHelper::SendDeleteCommandRequest(smart_objects::SmartObject* cmd, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } if ((*cmd).keyExists(strings::vr_commands)) { @@ -461,7 +454,7 @@ void MessageHelper::SendDeleteCommandRequest(smart_objects::SmartObject* cmd, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } } @@ -487,7 +480,7 @@ void MessageHelper::SendDeleteSubmenuRequest(smart_objects::SmartObject* cmd, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); const DataAccessor<CommandsMap> accessor = application->commands_map(); const CommandsMap& commands = accessor.GetData(); @@ -516,7 +509,7 @@ void MessageHelper::SendDeleteSubmenuRequest(smart_objects::SmartObject* cmd, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } } } @@ -549,7 +542,7 @@ void MessageHelper::SendDeleteChoiceSetRequest(smart_objects::SmartObject* cmd, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } } @@ -586,7 +579,7 @@ void MessageHelper::SendResetPropertiesRequest(ApplicationSharedPtr application, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } { @@ -606,7 +599,7 @@ void MessageHelper::SendResetPropertiesRequest(ApplicationSharedPtr application, object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } } @@ -632,41 +625,7 @@ void MessageHelper::SendUnsubscribeButtonNotification( object[strings::msg_params] = msg_params; - app_mngr.ManageHMICommand(message); -} - -void MessageHelper::SendUnsubscribeIVIRequest(int32_t ivi_id, - ApplicationSharedPtr application, - ApplicationManager& app_mngr) { - using namespace smart_objects; - - std::string key_name; - for (auto item : vehicle_data_) { - if (ivi_id == item.second) { - key_name = item.first; - break; - } - } - - if (key_name.empty()) { - return; - } - - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params[key_name] = true; - - SmartObjectSPtr message = CreateMessageForHMI( - hmi_apis::messageType::request, app_mngr.GetNextHMICorrelationID()); - DCHECK(message); - - SmartObject& object = *message; - object[strings::params][strings::function_id] = - hmi_apis::FunctionID::VehicleInfo_UnsubscribeVehicleData; - - object[strings::msg_params] = msg_params; - - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } const VehicleData& MessageHelper::vehicle_data() { @@ -735,7 +694,6 @@ hmi_apis::Common_Result::eType MessageHelper::MobileToHMIResult( return HMIResultFromString(result); } -#ifdef SDL_REMOTE_CONTROL void MessageHelper::SendHMIStatusNotification( const Application& application_impl, ApplicationManager& application_manager) { @@ -765,8 +723,8 @@ void MessageHelper::SendHMIStatusNotification( message[strings::msg_params][strings::system_context] = static_cast<int32_t>(application_impl.system_context()); - application_manager.ManageMobileCommand(notification, - commands::Command::ORIGIN_SDL); + application_manager.GetRPCService().ManageMobileCommand( + notification, commands::Command::SOURCE_SDL); } void MessageHelper::SendActivateAppToHMI( @@ -820,9 +778,8 @@ void MessageHelper::SendActivateAppToHMI( (*message)[strings::msg_params][strings::activate_app_hmi_level] = level; } - application_manager.ManageHMICommand(message); + application_manager.GetRPCService().ManageHMICommand(message); } -#endif // SDL_REMOTE_CONTROL mobile_apis::HMILevel::eType MessageHelper::StringToHMILevel( const std::string& hmi_level) { @@ -862,101 +819,11 @@ std::string MessageHelper::StringifiedFunctionID( return std::string(); } -#ifdef HMI_DBUS_API -namespace { -const std::map<std::string, uint16_t> create_get_vehicle_data_args() { - std::map<std::string, uint16_t> rc; - rc.insert(std::make_pair(strings::gps, - hmi_apis::FunctionID::VehicleInfo_GetGpsData)); - rc.insert(std::make_pair(strings::speed, - hmi_apis::FunctionID::VehicleInfo_GetSpeed)); - rc.insert( - std::make_pair(strings::rpm, hmi_apis::FunctionID::VehicleInfo_GetRpm)); - rc.insert(std::make_pair(strings::fuel_level, - hmi_apis::FunctionID::VehicleInfo_GetFuelLevel)); - rc.insert( - std::make_pair(strings::fuel_level_state, - hmi_apis::FunctionID::VehicleInfo_GetFuelLevelState)); - rc.insert(std::make_pair( - strings::instant_fuel_consumption, - hmi_apis::FunctionID::VehicleInfo_GetInstantFuelConsumption)); - rc.insert( - std::make_pair(strings::external_temp, - hmi_apis::FunctionID::VehicleInfo_GetExternalTemperature)); - rc.insert( - std::make_pair(strings::vin, hmi_apis::FunctionID::VehicleInfo_GetVin)); - rc.insert(std::make_pair(strings::prndl, - hmi_apis::FunctionID::VehicleInfo_GetPrndl)); - rc.insert(std::make_pair(strings::tire_pressure, - hmi_apis::FunctionID::VehicleInfo_GetTirePressure)); - rc.insert(std::make_pair(strings::odometer, - hmi_apis::FunctionID::VehicleInfo_GetOdometer)); - rc.insert(std::make_pair(strings::belt_status, - hmi_apis::FunctionID::VehicleInfo_GetBeltStatus)); - rc.insert( - std::make_pair(strings::body_information, - hmi_apis::FunctionID::VehicleInfo_GetBodyInformation)); - rc.insert(std::make_pair(strings::device_status, - hmi_apis::FunctionID::VehicleInfo_GetDeviceStatus)); - rc.insert(std::make_pair(strings::driver_braking, - hmi_apis::FunctionID::VehicleInfo_GetDriverBraking)); - rc.insert(std::make_pair(strings::wiper_status, - hmi_apis::FunctionID::VehicleInfo_GetWiperStatus)); - rc.insert( - std::make_pair(strings::head_lamp_status, - hmi_apis::FunctionID::VehicleInfo_GetHeadLampStatus)); - rc.insert(std::make_pair(strings::engine_torque, - hmi_apis::FunctionID::VehicleInfo_GetEngineTorque)); - rc.insert( - std::make_pair(strings::acc_pedal_pos, - hmi_apis::FunctionID::VehicleInfo_GetAccPedalPosition)); - rc.insert( - std::make_pair(strings::steering_wheel_angle, - hmi_apis::FunctionID::VehicleInfo_GetSteeringWheelAngle)); - rc.insert(std::make_pair(strings::e_call_info, - hmi_apis::FunctionID::VehicleInfo_GetECallInfo)); - rc.insert(std::make_pair(strings::airbag_status, - hmi_apis::FunctionID::VehicleInfo_GetAirbagStatus)); - rc.insert( - std::make_pair(strings::emergency_event, - hmi_apis::FunctionID::VehicleInfo_GetEmergencyEvent)); - rc.insert( - std::make_pair(strings::cluster_mode_status, - hmi_apis::FunctionID::VehicleInfo_GetClusterModeStatus)); - rc.insert(std::make_pair(strings::my_key, - hmi_apis::FunctionID::VehicleInfo_GetMyKey)); - return rc; -} -static std::map<std::string, uint16_t> vehicle_data_args = - create_get_vehicle_data_args(); -} -#endif - void MessageHelper::CreateGetVehicleDataRequest( const uint32_t correlation_id, const std::vector<std::string>& params, ApplicationManager& app_mngr) { LOG4CXX_AUTO_TRACE(logger_); -#ifdef HMI_DBUS_API - for (std::vector<std::string>::const_iterator it = params.begin(); - it != params.end(); - it++) { - smart_objects::SmartObjectSPtr request = - utils::MakeShared<smart_objects::SmartObject>(); - - (*request)[strings::params][strings::message_type] = - static_cast<int>(kRequest); - (*request)[strings::params][strings::correlation_id] = correlation_id; - (*request)[strings::params][strings::protocol_version] = - commands::CommandImpl::protocol_version_; - (*request)[strings::params][strings::protocol_type] = - commands::CommandImpl::hmi_protocol_type_; - (*request)[strings::params][strings::function_id] = - static_cast<int>(vehicle_data_args[*it]); - app_mngr.ManageHMICommand(request); - } -#else - smart_objects::SmartObjectSPtr request = utils::MakeShared<smart_objects::SmartObject>(); @@ -976,8 +843,7 @@ void MessageHelper::CreateGetVehicleDataRequest( it++) { (*request)[strings::msg_params][*it] = true; } - app_mngr.ManageHMICommand(request); -#endif + app_mngr.GetRPCService().ManageHMICommand(request); } smart_objects::SmartObjectSPtr MessageHelper::CreateBlockedByPoliciesResponse( @@ -1078,84 +944,6 @@ smart_objects::SmartObjectSPtr MessageHelper::CreateSetAppIcon( return set_icon; } -bool MessageHelper::SendIVISubscribtions(const uint32_t app_id, - ApplicationManager& app_mngr) { - return SendIVISubscriptions(app_id, app_mngr); -} - -bool MessageHelper::SendIVISubscriptions(const uint32_t app_id, - ApplicationManager& app_mngr) { - LOG4CXX_AUTO_TRACE(logger_); - - bool result = true; - ApplicationSharedPtr app = app_mngr.application(app_id); - - if (!app.valid()) { - LOG4CXX_ERROR(logger_, "Invalid application " << app_id); - return result; - } - - smart_objects::SmartObjectList requests = - GetIVISubscriptionRequests(app, app_mngr); - for (smart_objects::SmartObjectList::const_iterator it = requests.begin(); - it != requests.end(); - ++it) { - if (!app_mngr.ManageHMICommand(*it)) { - result = false; - } - } - return result; -} - -smart_objects::SmartObjectList MessageHelper::GetIVISubscriptionRequests( - ApplicationSharedPtr app, ApplicationManager& app_mngr) { - LOG4CXX_AUTO_TRACE(logger_); - - smart_objects::SmartObjectList hmi_requests; - if (!app.valid()) { - LOG4CXX_ERROR(logger_, "Invalid application pointer "); - return hmi_requests; - } - - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params[strings::app_id] = app->app_id(); - const VehicleData& vehicle_data = MessageHelper::vehicle_data_; - VehicleData::const_iterator ivi_it = vehicle_data.begin(); - DataAccessor<VehicleInfoSubscriptions> vi_accessor = app->SubscribedIVI(); - const VehicleInfoSubscriptions& subscriptions = vi_accessor.GetData(); - - for (; vehicle_data.end() != ivi_it; ++ivi_it) { - mobile_apis::VehicleDataType::eType type_id = ivi_it->second; - if (subscriptions.end() != subscriptions.find(type_id)) { - std::string key_name = ivi_it->first; - msg_params[key_name] = true; - } - } - -#ifdef HMI_JSON_API - smart_objects::SmartObjectSPtr request = MessageHelper::CreateModuleInfoSO( - hmi_apis::FunctionID::VehicleInfo_SubscribeVehicleData, app_mngr); - (*request)[strings::msg_params] = msg_params; - hmi_requests.push_back(request); -#endif // #ifdef HMI_JSON_API -#ifdef HMI_DBUS_API - // Generate list of ivi_subrequests - for (size_t i = 0; i < sizeof(ivi_subrequests) / sizeof(ivi_subrequests[0]); - ++i) { - const VehicleInfo_Requests& sr = ivi_subrequests[i]; - if (true == msg_params.keyExists(sr.str) && - true == msg_params[sr.str].asBool()) { - smart_objects::SmartObjectSPtr request = - MessageHelper::CreateModuleInfoSO(sr.func_id, app_mngr); - (*request)[strings::msg_params] = msg_params; - hmi_requests.push_back(request); - } - } -#endif // #ifdef HMI_DBUS_API - return hmi_requests; -} - void MessageHelper::SendOnButtonSubscriptionNotification( uint32_t app_id, hmi_apis::Common_ButtonName::eType button, @@ -1188,7 +976,7 @@ void MessageHelper::SendOnButtonSubscriptionNotification( hmi_apis::FunctionID::Buttons_OnButtonSubscription; notification[strings::msg_params] = msg_params; - if (!app_mngr.ManageHMICommand(notification_ptr)) { + if (!app_mngr.GetRPCService().ManageHMICommand(notification_ptr)) { LOG4CXX_ERROR(logger_, "Unable to send HMI notification"); } } @@ -1240,7 +1028,7 @@ void MessageHelper::SendSetAppIcon( if (msg_params) { so_to_send[strings::msg_params] = *msg_params; } - application_manager.ManageHMICommand(set_app_icon); + application_manager.GetRPCService().ManageHMICommand(set_app_icon); } } @@ -1266,7 +1054,7 @@ void MessageHelper::SendGlobalPropertiesToHMI(ApplicationConstSharedPtr app, for (smart_objects::SmartObjectList::const_iterator it = requests.begin(); it != requests.end(); ++it) { - DCHECK(app_mngr.ManageHMICommand(*it)); + DCHECK(app_mngr.GetRPCService().ManageHMICommand(*it)); } } @@ -1281,9 +1069,19 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI( return requests; } + auto& help_prompt_manager = + const_cast<Application*>(app.get())->help_prompt_manager(); + + const bool can_send_ui = helpers::Compare<HelpPromptManager::SendingType, + helpers::EQ, + helpers::ONE>( + help_prompt_manager.GetSendingType(), + HelpPromptManager::SendingType::kSendVRHelp, + HelpPromptManager::SendingType::kSendBoth); + // UI global properties - if (app->vr_help_title() || app->vr_help()) { + if (can_send_ui && (app->vr_help_title() || app->vr_help())) { smart_objects::SmartObjectSPtr ui_global_properties = CreateMessageForHMI(hmi_apis::messageType::request, correlation_id); if (!ui_global_properties) { @@ -1317,8 +1115,15 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI( requests.push_back(ui_global_properties); } + const bool can_send_vr = helpers::Compare<HelpPromptManager::SendingType, + helpers::EQ, + helpers::ONE>( + help_prompt_manager.GetSendingType(), + HelpPromptManager::SendingType::kSendHelpPrompt, + HelpPromptManager::SendingType::kSendBoth); + // TTS global properties - if (app->help_prompt() || app->timeout_prompt()) { + if (can_send_vr && (app->help_prompt() || app->timeout_prompt())) { smart_objects::SmartObjectSPtr tts_global_properties = CreateMessageForHMI(hmi_apis::messageType::request, correlation_id); if (!tts_global_properties) { @@ -1385,7 +1190,7 @@ void MessageHelper::SendTTSGlobalProperties(ApplicationSharedPtr app, app->set_help_prompt(msg_params[strings::help_prompt]); msg_params[strings::app_id] = app->app_id(); so_to_send[strings::msg_params] = msg_params; - app_man.ManageHMICommand(tts_global_properties); + app_man.GetRPCService().ManageHMICommand(tts_global_properties); } } @@ -1453,7 +1258,7 @@ void MessageHelper::SendShowRequestToHMI(ApplicationConstSharedPtr app, for (smart_objects::SmartObjectList::const_iterator it = shows.begin(); it != shows.end(); ++it) { - DCHECK(app_mngr.ManageHMICommand(*it)); + DCHECK(app_mngr.GetRPCService().ManageHMICommand(*it)); } } @@ -1473,7 +1278,7 @@ void MessageHelper::SendShowConstantTBTRequestToHMI( static_cast<int>(hmi_apis::FunctionID::Navigation_ShowConstantTBT); (*navi_show_tbt)[strings::msg_params] = (*app->tbt_show_command()); - DCHECK(app_man.ManageHMICommand(navi_show_tbt)); + DCHECK(app_man.GetRPCService().ManageHMICommand(navi_show_tbt)); } } @@ -1487,7 +1292,7 @@ void MessageHelper::SendAddCommandRequestToHMI(ApplicationConstSharedPtr app, for (smart_objects::SmartObjectList::iterator it = requests.begin(); it != requests.end(); ++it) { - DCHECK(app_man.ManageHMICommand(*it)); + DCHECK(app_man.GetRPCService().ManageHMICommand(*it)); } } @@ -1629,7 +1434,7 @@ void MessageHelper::SendUIChangeRegistrationRequestToHMI( app_mngr); if (ui_command) { - app_mngr.ManageHMICommand(ui_command); + app_mngr.GetRPCService().ManageHMICommand(ui_command); } } } @@ -1641,7 +1446,7 @@ void MessageHelper::SendAddVRCommandToHMI( ApplicationManager& app_mngr) { smart_objects::SmartObjectSPtr request = CreateAddVRCommandToHMI(cmd_id, vr_commands, app_id, app_mngr); - DCHECK(app_mngr.ManageHMICommand(request)); + DCHECK(app_mngr.GetRPCService().ManageHMICommand(request)); } smart_objects::SmartObjectSPtr MessageHelper::CreateAddVRCommandToHMI( @@ -1676,6 +1481,40 @@ smart_objects::SmartObjectSPtr MessageHelper::CreateAddVRCommandToHMI( return vr_command; } +bool MessageHelper::CreateDeviceInfo( + connection_handler::DeviceHandle device_handle, + const protocol_handler::SessionObserver& session_observer, + const policy::PolicyHandlerInterface& policy_handler, + ApplicationManager& app_mngr, + smart_objects::SmartObject* output) { + DCHECK_OR_RETURN(output, false); + + std::string device_name; + std::string mac_address; + std::string transport_type; + if (-1 == + session_observer.GetDataOnDeviceID( + device_handle, &device_name, NULL, &mac_address, &transport_type)) { + LOG4CXX_ERROR(logger_, + "Failed to extract information for device " << device_handle); + } + + smart_objects::SmartObject& device_info_map = *output; + device_info_map = smart_objects::SmartObject(smart_objects::SmartType_Map); + + device_info_map[strings::name] = device_name; + device_info_map[strings::id] = mac_address; + device_info_map[strings::transport_type] = + app_mngr.GetDeviceTransportType(transport_type); + + const policy::DeviceConsent device_consent = + policy_handler.GetUserConsentForDevice(mac_address); + device_info_map[strings::isSDLAllowed] = + policy::DeviceConsent::kDeviceAllowed == device_consent; + + return true; +} + bool MessageHelper::CreateHMIApplicationStruct( ApplicationConstSharedPtr app, const protocol_handler::SessionObserver& session_observer, @@ -1697,15 +1536,6 @@ bool MessageHelper::CreateHMIApplicationStruct( const smart_objects::SmartObject* day_color_scheme = app->day_color_scheme(); const smart_objects::SmartObject* night_color_scheme = app->night_color_scheme(); - std::string device_name; - std::string mac_address; - std::string transport_type; - if (-1 == - session_observer.GetDataOnDeviceID( - app->device(), &device_name, NULL, &mac_address, &transport_type)) { - LOG4CXX_ERROR(logger_, - "Failed to extract information for device " << app->device()); - } message = smart_objects::SmartObject(smart_objects::SmartType_Map); message[strings::app_name] = app->name(); @@ -1744,15 +1574,22 @@ bool MessageHelper::CreateHMIApplicationStruct( message[strings::device_info] = smart_objects::SmartObject(smart_objects::SmartType_Map); - message[strings::device_info][strings::name] = device_name; - message[strings::device_info][strings::id] = mac_address; - const policy::DeviceConsent device_consent = - policy_handler.GetUserConsentForDevice(mac_address); - message[strings::device_info][strings::isSDLAllowed] = - policy::DeviceConsent::kDeviceAllowed == device_consent; + smart_objects::SmartObject& device_info = message[strings::device_info]; + CreateDeviceInfo( + app->device(), session_observer, policy_handler, app_mngr, &device_info); + + if (app->secondary_device() != 0) { + message[strings::secondary_device_info] = + smart_objects::SmartObject(smart_objects::SmartType_Map); + smart_objects::SmartObject& secondary_device_info = + message[strings::secondary_device_info]; + CreateDeviceInfo(app->secondary_device(), + session_observer, + policy_handler, + app_mngr, + &secondary_device_info); + } - message[strings::device_info][strings::transport_type] = - app_mngr.GetDeviceTransportType(transport_type); return true; } @@ -1768,7 +1605,7 @@ void MessageHelper::SendAddSubMenuRequestToHMI(ApplicationConstSharedPtr app, for (smart_objects::SmartObjectList::iterator it = requests.begin(); it != requests.end(); ++it) { - DCHECK(app_mngr.ManageHMICommand(*it)); + DCHECK(app_mngr.GetRPCService().ManageHMICommand(*it)); } } @@ -1798,6 +1635,12 @@ smart_objects::SmartObjectList MessageHelper::CreateAddSubMenuRequestToHMI( (*i->second)[strings::menu_name]; msg_params[strings::app_id] = app->app_id(); (*ui_sub_menu)[strings::msg_params] = msg_params; + if (((*i->second).keyExists(strings::menu_icon)) && + (0 < (*i->second)[strings::menu_icon][strings::value].length())) { + msg_params[strings::menu_icon] = (*i->second)[strings::menu_icon]; + msg_params[strings::menu_icon][strings::value] = + (*i->second)[strings::menu_icon][strings::value].asString(); + } requsets.push_back(ui_sub_menu); } return requsets; @@ -1824,7 +1667,7 @@ void MessageHelper::SendOnAppUnregNotificationToHMI( message[strings::msg_params][strings::app_id] = app->hmi_app_id(); message[strings::msg_params][strings::unexpected_disconnect] = is_unexpected_disconnect; - app_mngr.ManageHMICommand(notification); + app_mngr.GetRPCService().ManageHMICommand(notification); } smart_objects::SmartObjectSPtr MessageHelper::GetBCActivateAppRequestToHMI( @@ -1893,7 +1736,7 @@ void MessageHelper::SendOnResumeAudioSourceToHMI(const uint32_t app_id, app_mngr.GetNextHMICorrelationID(); (*message)[strings::msg_params][strings::app_id] = app_id; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendSDLActivateAppResponse( @@ -1944,7 +1787,7 @@ void MessageHelper::SendSDLActivateAppResponse( hmi_apis::Common_Result::REJECTED; } - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendOnSDLConsentNeeded( @@ -1962,7 +1805,7 @@ void MessageHelper::SendOnSDLConsentNeeded( device_info.device_mac_address; (*message)[strings::msg_params]["device"]["name"] = device_info.device_name; - app_man.ManageHMICommand(message); + app_man.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendPolicyUpdate(const std::string& file_path, @@ -1982,7 +1825,7 @@ void MessageHelper::SendPolicyUpdate(const std::string& file_path, for (size_t i = 0; i < retries.size(); ++i) { object[strings::msg_params][hmi_request::retry][i] = retries[i]; } - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendGetUserFriendlyMessageResponse( const std::vector<policy::UserFriendlyMessage>& msg, @@ -2003,7 +1846,7 @@ void MessageHelper::SendGetUserFriendlyMessageResponse( // If no any messages found - skip sending of "messages" param if (msg.empty()) { - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); return; } @@ -2048,7 +1891,7 @@ void MessageHelper::SendGetUserFriendlyMessageResponse( #endif // EXTERNAL_PROPRIETARY_MODE } - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } #ifdef EXTERNAL_PROPRIETARY_MODE @@ -2092,7 +1935,7 @@ void MessageHelper::SendGetListOfPermissionsResponse( external_consent_status.end(), external_consent_status_appender); - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } #else void MessageHelper::SendGetListOfPermissionsResponse( @@ -2121,7 +1964,7 @@ void MessageHelper::SendGetListOfPermissionsResponse( GroupsAppender groups_appender(allowed_functions_array); std::for_each(permissions.begin(), permissions.end(), groups_appender); - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } #endif // EXTERNAL_PROPRIETARY_MODE @@ -2163,7 +2006,7 @@ void MessageHelper::SendNaviSetVideoConfig( (*request)[strings::msg_params][strings::app_id] = app_id; (*request)[strings::msg_params][strings::config] = video_params; - app_mngr.ManageHMICommand(request); + app_mngr.GetRPCService().ManageHMICommand(request); } void MessageHelper::SendNaviStartStream(const int32_t app_id, @@ -2202,7 +2045,7 @@ void MessageHelper::SendNaviStartStream(const int32_t app_id, (*start_stream)[strings::msg_params][strings::app_id] = app_id; (*start_stream)[strings::msg_params][strings::url] = url; - app_mngr.ManageHMICommand(start_stream); + app_mngr.GetRPCService().ManageHMICommand(start_stream); } void MessageHelper::SendNaviStopStream(const int32_t app_id, @@ -2219,7 +2062,7 @@ void MessageHelper::SendNaviStopStream(const int32_t app_id, (*stop_stream)[strings::msg_params][strings::app_id] = app_id; - app_mngr.ManageHMICommand(stop_stream); + app_mngr.GetRPCService().ManageHMICommand(stop_stream); } void MessageHelper::SendAudioStartStream(const int32_t app_id, @@ -2259,7 +2102,7 @@ void MessageHelper::SendAudioStartStream(const int32_t app_id, (*start_stream)[strings::msg_params][strings::app_id] = app_id; (*start_stream)[strings::msg_params][strings::url] = url; - DCHECK(app_mngr.ManageHMICommand(start_stream)); + DCHECK(app_mngr.GetRPCService().ManageHMICommand(start_stream)); } void MessageHelper::SendAudioStopStream(const int32_t app_id, @@ -2277,7 +2120,7 @@ void MessageHelper::SendAudioStopStream(const int32_t app_id, (*stop_stream)[strings::msg_params][strings::app_id] = app_id; - app_mngr.ManageHMICommand(stop_stream); + app_mngr.GetRPCService().ManageHMICommand(stop_stream); } void MessageHelper::SendOnDataStreaming( @@ -2309,7 +2152,7 @@ void MessageHelper::SendOnDataStreaming( (*notification)[strings::msg_params]["available"] = available; - app_mngr.ManageHMICommand(notification); + app_mngr.GetRPCService().ManageHMICommand(notification); } bool MessageHelper::SendStopAudioPathThru(ApplicationManager& app_mngr) { @@ -2321,7 +2164,7 @@ bool MessageHelper::SendStopAudioPathThru(ApplicationManager& app_mngr) { (*result)[strings::params][strings::function_id] = hmi_apis::FunctionID::UI_EndAudioPassThru; - return app_mngr.ManageHMICommand(result); + return app_mngr.GetRPCService().ManageHMICommand(result); } bool MessageHelper::SendUnsubscribedWayPoints(ApplicationManager& app_mngr) { @@ -2333,7 +2176,7 @@ bool MessageHelper::SendUnsubscribedWayPoints(ApplicationManager& app_mngr) { (*result)[strings::params][strings::function_id] = hmi_apis::FunctionID::Navigation_UnsubscribeWayPoints; - return app_mngr.ManageHMICommand(result); + return app_mngr.GetRPCService().ManageHMICommand(result); } void MessageHelper::SendPolicySnapshotNotification( @@ -2382,9 +2225,9 @@ void MessageHelper::SendSystemRequestNotification( PrintSmartObject(content); #endif - DCHECK(app_mngr.ManageMobileCommand( + DCHECK(app_mngr.GetRPCService().ManageMobileCommand( utils::MakeShared<smart_objects::SmartObject>(content), - commands::Command::ORIGIN_SDL)); + commands::Command::SOURCE_SDL)); } void MessageHelper::SendLaunchApp(const uint32_t connection_key, @@ -2550,9 +2393,9 @@ void MessageHelper::SendOnPermissionsChangeNotification( } } - app_mngr.ManageMobileCommand( + app_mngr.GetRPCService().ManageMobileCommand( utils::MakeShared<smart_objects::SmartObject>(content), - commands::Command::ORIGIN_SDL); + commands::Command::SOURCE_SDL); } void MessageHelper::FillAppRevokedPermissions( @@ -2635,7 +2478,7 @@ void MessageHelper::SendOnAppPermissionsChangedNotification( request_subtypes_array; } - app_mngr.ManageHMICommand( + app_mngr.GetRPCService().ManageHMICommand( utils::MakeShared<smart_objects::SmartObject>(message)); } @@ -2657,7 +2500,7 @@ void MessageHelper::SendGetStatusUpdateResponse(const std::string& status, (*message)[strings::msg_params]["status"] = status; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendUpdateSDLResponse(const std::string& result, @@ -2676,7 +2519,7 @@ void MessageHelper::SendUpdateSDLResponse(const std::string& result, (*message)[strings::msg_params]["result"] = result; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendOnStatusUpdate(const std::string& status, @@ -2695,7 +2538,7 @@ void MessageHelper::SendOnStatusUpdate(const std::string& status, (*message)[strings::msg_params]["status"] = status; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } void MessageHelper::SendGetSystemInfoRequest(ApplicationManager& app_mngr) { @@ -2708,7 +2551,7 @@ void MessageHelper::SendGetSystemInfoRequest(ApplicationManager& app_mngr) { (*message)[strings::params][strings::function_id] = hmi_apis::FunctionID::BasicCommunication_GetSystemInfo; - app_mngr.ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(message); } mobile_apis::Result::eType MessageHelper::VerifyImageFiles( @@ -3074,4 +2917,4 @@ bool MessageHelper::PrintSmartObject(const smart_objects::SmartObject& object) { return true; } -} // namespace application_manager
\ No newline at end of file +} // namespace application_manager |