diff options
Diffstat (limited to 'src/components/application_manager/src/commands/hmi')
5 files changed, 134 insertions, 107 deletions
diff --git a/src/components/application_manager/src/commands/hmi/get_urls.cc b/src/components/application_manager/src/commands/hmi/get_urls.cc index af220051d4..3ac46a74d8 100644 --- a/src/components/application_manager/src/commands/hmi/get_urls.cc +++ b/src/components/application_manager/src/commands/hmi/get_urls.cc @@ -35,18 +35,6 @@ #include "application_manager/application_manager.h" #include "application_manager/policies/policy_handler.h" -namespace { -struct PolicyAppIdComparator { - PolicyAppIdComparator(const std::string& policy_app_id) - : policy_app_id_(policy_app_id) {} - - bool operator()(const policy::EndpointData& data) { - return data.app_id == policy_app_id_; - } - std::string policy_app_id_; -}; -} - namespace application_manager { namespace commands { @@ -58,23 +46,21 @@ GetUrls::~GetUrls() {} void GetUrls::Run() { LOG4CXX_AUTO_TRACE(logger_); - using namespace smart_objects; - using namespace application_manager; - using namespace strings; - using namespace hmi_apis; + namespace Common_Result = hmi_apis::Common_Result; + using policy::EndpointUrls; if (!application_manager_.GetPolicyHandler().PolicyEnabled()) { SendResponseToHMI(Common_Result::DATA_NOT_AVAILABLE); return; } - SmartObject& object = *message_; - const std::string service_to_check = - object[msg_params][hmi_request::service].asString(); + const uint32_t service_to_check = + (*message_)[strings::msg_params][hmi_request::service].asUInt(); + + EndpointUrls endpoints; + application_manager_.GetPolicyHandler().GetUpdateUrls(service_to_check, + endpoints); - policy::EndpointUrls endpoints; - application_manager_.GetPolicyHandler().GetServiceUrls( - object[strings::msg_params][hmi_request::service].asString(), endpoints); if (endpoints.empty()) { LOG4CXX_ERROR(logger_, "No URLs for service " << service_to_check); SendResponseToHMI(Common_Result::DATA_NOT_AVAILABLE); @@ -82,17 +68,88 @@ void GetUrls::Run() { } #ifdef EXTENDED_POLICY - const std::string policy_service = "7"; + const uint32_t policy_service = 7; if (policy_service == service_to_check) { ProcessPolicyServiceURLs(endpoints); return; } -#endif +#endif //EXTENDED_POLICY + ProcessServiceURLs(endpoints); } +void GetUrls::ProcessServiceURLs(const policy::EndpointUrls& endpoints) { + namespace Common_Result = hmi_apis::Common_Result; + using smart_objects::SmartObject; + + (*message_)[strings::msg_params].erase(hmi_request::service); + SmartObject& urls = (*message_)[strings::msg_params][hmi_response::urls]; + + size_t index = 0; + for (size_t e = 0; e < endpoints.size(); ++e) { + for (size_t u = 0; u < endpoints[e].url.size(); ++u, ++index) { + const std::string app_url = endpoints[e].url[u]; + + SmartObject& service_info = urls[index]; + + service_info[strings::url] = app_url; + if (policy::kDefaultId != endpoints[e].app_id) { +#ifndef EXTENDED_PROPRIETARY + service_info[hmi_response::policy_app_id] = endpoints[e].app_id; +#else // EXTENDED_PROPRIETARY + ApplicationSharedPtr app = + application_manager_.application_by_policy_id(endpoints[e].app_id); + + if (!app) { + LOG4CXX_ERROR(logger_, + "Can't find application with policy id " + << endpoints[e].app_id + << " URLs adding for this appliation is skipped."); + continue; + } + + service_info[strings::app_id] = app->hmi_app_id(); +#endif // EXTENDED_PROPRIETARY + } + } + } + SendResponseToHMI(Common_Result::SUCCESS); +} + +void GetUrls::SendResponseToHMI(hmi_apis::Common_Result::eType result) { + (*message_)[strings::params][strings::message_type] = MessageType::kResponse; + (*message_)[strings::params][hmi_response::code] = result; + application_manager_.ManageHMICommand(message_); +} + #ifdef EXTENDED_POLICY +struct PolicyAppIdComparator { + PolicyAppIdComparator(const std::string& policy_app_id) + : policy_app_id_(policy_app_id) {} + + bool operator()(const policy::EndpointData& data) { + return data.app_id == policy_app_id_; + } + std::string policy_app_id_; +}; + +void FillSODefaultUrls(smart_objects::SmartObject& urls, + const policy::EndpointUrls& endpoints) { + using smart_objects::SmartObject; + PolicyAppIdComparator comparator(policy::kDefaultId); + policy::EndpointUrls::const_iterator it = + std::find_if(endpoints.begin(), endpoints.end(), comparator); + if (it == endpoints.end()) { + return; + } + SmartObject service_info = SmartObject(smart_objects::SmartType_Map); + for (size_t i = 0; i < (*it).url.size(); ++i) { + service_info[strings::url] = (*it).url[i]; + urls[i] = service_info; + } +} + void GetUrls::ProcessPolicyServiceURLs(const policy::EndpointUrls& endpoints) { LOG4CXX_AUTO_TRACE(logger_); using namespace smart_objects; @@ -162,58 +219,7 @@ void GetUrls::ProcessPolicyServiceURLs(const policy::EndpointUrls& endpoints) { SendResponseToHMI(Common_Result::SUCCESS); return; } -#endif - -void GetUrls::ProcessServiceURLs(const policy::EndpointUrls& endpoints) { - using namespace smart_objects; - using namespace strings; - using namespace hmi_apis; - - SmartObject& object = *message_; - object[msg_params].erase(hmi_request::service); - object[msg_params][hmi_response::urls] = SmartObject(SmartType_Array); - - SmartObject& urls = object[msg_params][hmi_response::urls]; - - size_t index = 0; - for (size_t e = 0; e < endpoints.size(); ++e) { - for (size_t u = 0; u < endpoints[e].url.size(); ++u, ++index) { - const std::string app_url = endpoints[e].url[u]; - - urls[index] = SmartObject(SmartType_Map); - SmartObject& service_info = urls[index]; - - service_info[url] = app_url; - if (policy::kDefaultId != endpoints[e].app_id) { - service_info[hmi_response::policy_app_id] = endpoints[e].app_id; - } - } - } - SendResponseToHMI(Common_Result::SUCCESS); -} - -void GetUrls::FillSODefaultUrls(smart_objects::SmartObject& urls, - const policy::EndpointUrls& endpoints) { - using namespace smart_objects; - LOG4CXX_AUTO_TRACE(logger_); - PolicyAppIdComparator comparator(policy::kDefaultId); - policy::EndpointUrls::const_iterator it = - std::find_if(endpoints.begin(), endpoints.end(), comparator); - if (it == endpoints.end()) { - return; - } - SmartObject service_info = SmartObject(SmartType_Map); - for (size_t i = 0; i < (*it).url.size(); ++i) { - service_info[strings::url] = (*it).url[i]; - urls[i] = service_info; - } -} - -void GetUrls::SendResponseToHMI(hmi_apis::Common_Result::eType result) { - (*message_)[strings::params][strings::message_type] = MessageType::kResponse; - (*message_)[strings::params][hmi_response::code] = result; - application_manager_.ManageHMICommand(message_); -} +#endif //EXTENDED_POLICY } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/on_received_policy_update.cc b/src/components/application_manager/src/commands/hmi/on_received_policy_update.cc index 03c0bc7378..c67158bab6 100644 --- a/src/components/application_manager/src/commands/hmi/on_received_policy_update.cc +++ b/src/components/application_manager/src/commands/hmi/on_received_policy_update.cc @@ -47,7 +47,7 @@ OnReceivedPolicyUpdate::~OnReceivedPolicyUpdate() {} void OnReceivedPolicyUpdate::Run() { LOG4CXX_AUTO_TRACE(logger_); -#ifdef EXTENDED_POLICY +#if defined(EXTENDED_POLICY) || defined(EXTENDED_PROPRIETARY) const std::string& file_path = (*message_)[strings::msg_params][hmi_notification::policyfile].asString(); policy::BinaryMessage file_content; diff --git a/src/components/application_manager/src/commands/hmi/request_from_hmi.cc b/src/components/application_manager/src/commands/hmi/request_from_hmi.cc index be3cd6314c..815c88d780 100644 --- a/src/components/application_manager/src/commands/hmi/request_from_hmi.cc +++ b/src/components/application_manager/src/commands/hmi/request_from_hmi.cc @@ -76,21 +76,20 @@ void RequestFromHMI::SendResponse( application_manager_.ManageHMICommand(message); } -// void RequestFromHMI::SendErrorResponse(uint32_t correlation_id, -// hmi_apis::FunctionID::eType -// function_id, -// hmi_apis::Common_Result::eType -// result_code) { -// smart_objects::SmartObject* message = new smart_objects::SmartObject( -// smart_objects::SmartType_Map); -// FillCommonParametersOfSO(message, correlation_id, function_id); -// (*message)[strings::params][strings::message_type] = -// MessageType::kErrorResponse; -// (*message)[strings::params][hmi_response::code] = result_code; -// (*message)[strings::params][strings::error_msg] = "HMIDeactivate is active"; - -// application_manager_.ManageHMICommand(message); -//} +void RequestFromHMI::SendErrorResponse( + uint32_t correlation_id, + hmi_apis::FunctionID::eType function_id, + hmi_apis::Common_Result::eType result_code) { + smart_objects::SmartObject* message = + new smart_objects::SmartObject(smart_objects::SmartType_Map); + FillCommonParametersOfSO(message, correlation_id, function_id); + (*message)[strings::params][strings::message_type] = + MessageType::kErrorResponse; + (*message)[strings::params][hmi_response::code] = result_code; + (*message)[strings::params][strings::error_msg] = "HMIDeactivate is active"; + + application_manager_.ManageHMICommand(message); +} void RequestFromHMI::FillCommonParametersOfSO( smart_objects::SmartObject* message, diff --git a/src/components/application_manager/src/commands/hmi/sdl_activate_app_request.cc b/src/components/application_manager/src/commands/hmi/sdl_activate_app_request.cc index 30ea41e0b0..a6dbb2dc71 100644 --- a/src/components/application_manager/src/commands/hmi/sdl_activate_app_request.cc +++ b/src/components/application_manager/src/commands/hmi/sdl_activate_app_request.cc @@ -84,6 +84,41 @@ SDLActivateAppRequest::SDLActivateAppRequest( SDLActivateAppRequest::~SDLActivateAppRequest() {} +uint32_t SDLActivateAppRequest::app_id() const { + using namespace strings; + if (!(*message_).keyExists(msg_params)) { + LOG4CXX_DEBUG(logger_, msg_params << " section is absent in the message."); + return 0; + } + if (!(*message_)[msg_params].keyExists(strings::app_id)) { + LOG4CXX_DEBUG(logger_, + strings::app_id << " section is absent in the message."); + return 0; + } + return (*message_)[msg_params][strings::app_id].asUInt(); +} + +#ifdef EXTENDED_PROPRIETARY +void SDLActivateAppRequest::Run() { + LOG4CXX_AUTO_TRACE(logger_); + using namespace hmi_apis::FunctionID; + + if (application_manager_.state_controller().IsStateActive( + HmiState::STATE_ID_DEACTIVATE_HMI)) { + LOG4CXX_DEBUG(logger_, + "DeactivateHmi state is active. " + "Sends response with result code REJECTED"); + SendErrorResponse(correlation_id(), + static_cast<eType>(function_id()), + hmi_apis::Common_Result::REJECTED); + } else { + const uint32_t application_id = app_id(); + application_manager_.GetPolicyHandler().OnActivateApp(application_id, + correlation_id()); + } +} + +#else // EXTENDED_PROPRIETARY void SDLActivateAppRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); using namespace hmi_apis::FunctionID; @@ -160,6 +195,7 @@ void SDLActivateAppRequest::Run() { subscribe_on_event(BasicCommunication_OnAppRegistered); } +#endif // EXTENDED_PROPRIETARY void SDLActivateAppRequest::onTimeOut() { using namespace hmi_apis::FunctionID; using namespace hmi_apis::Common_Result; @@ -192,20 +228,6 @@ void SDLActivateAppRequest::on_event(const event_engine::Event& event) { correlation_id()); } -uint32_t SDLActivateAppRequest::app_id() const { - using namespace strings; - if (!(*message_).keyExists(msg_params)) { - LOG4CXX_DEBUG(logger_, msg_params << " section is absent in the message."); - return 0; - } - if (!(*message_)[msg_params].keyExists(strings::app_id)) { - LOG4CXX_DEBUG(logger_, - strings::app_id << " section is absent in the message."); - return 0; - } - return (*message_)[msg_params][strings::app_id].asUInt(); -} - uint32_t SDLActivateAppRequest::hmi_app_id( const smart_objects::SmartObject& so) const { using namespace strings; diff --git a/src/components/application_manager/src/commands/hmi/sdl_policy_update.cc b/src/components/application_manager/src/commands/hmi/sdl_policy_update.cc index e79bca14de..a0a42aa1a5 100644 --- a/src/components/application_manager/src/commands/hmi/sdl_policy_update.cc +++ b/src/components/application_manager/src/commands/hmi/sdl_policy_update.cc @@ -44,7 +44,7 @@ SDLPolicyUpdate::~SDLPolicyUpdate() {} void SDLPolicyUpdate::Run() { LOG4CXX_AUTO_TRACE(logger_); -#ifdef EXTENDED_POLICY +#if defined(EXTENDED_POLICY) || defined(EXTENDED_PROPRIETARY) SendRequest(); #else LOG4CXX_WARN(logger_, |