diff options
Diffstat (limited to 'src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc')
-rw-r--r-- | src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc index 12608d64c1..376723b964 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc @@ -31,7 +31,9 @@ */ #include "rc_rpc_plugin/commands/rc_command_request.h" + #include <sstream> + #include "application_manager/hmi_interfaces.h" #include "application_manager/message_helper.h" #include "application_manager/policies/policy_handler_interface.h" @@ -49,7 +51,7 @@ namespace commands { RCCommandRequest::RCCommandRequest( const app_mngr::commands::MessageSharedPtr& message, const RCCommandParams& params) - : application_manager::commands::CommandRequestImpl( + : application_manager::commands::RequestFromMobileImpl( message, params.application_manager_, params.rpc_service_, @@ -74,18 +76,18 @@ bool RCCommandRequest::IsInterfaceAvailable( return app_mngr::HmiInterfaces::STATE_NOT_AVAILABLE != state; } -void RCCommandRequest::onTimeOut() { +void RCCommandRequest::OnTimeOut() { SDL_LOG_AUTO_TRACE(); const std::string module_type = ModuleType(); SetResourceState(module_type, ResourceState::FREE); - SendResponse( - false, mobile_apis::Result::GENERIC_ERROR, "Request timeout expired"); + + RequestFromMobileImpl::OnTimeOut(); } bool RCCommandRequest::CheckDriverConsent() { SDL_LOG_AUTO_TRACE(); app_mngr::ApplicationSharedPtr app = - application_manager_.application(CommandRequestImpl::connection_key()); + application_manager_.application(connection_key()); const std::string module_type = ModuleType(); rc_rpc_plugin::TypeAccess access = CheckModule(module_type, app); @@ -131,7 +133,7 @@ void RCCommandRequest::SendDisallowed(rc_rpc_plugin::TypeAccess access) { void RCCommandRequest::Run() { SDL_LOG_AUTO_TRACE(); app_mngr::ApplicationSharedPtr app = - application_manager_.application(CommandRequestImpl::connection_key()); + application_manager_.application(connection_key()); if (!IsInterfaceAvailable(app_mngr::HmiInterfaces::HMI_INTERFACE_RC)) { SDL_LOG_WARN("HMI interface RC is not available"); @@ -224,19 +226,19 @@ void RCCommandRequest::on_event(const app_mngr::event_engine::Event& event) { void RCCommandRequest::ProcessAccessResponse( const app_mngr::event_engine::Event& event) { SDL_LOG_AUTO_TRACE(); - app_mngr::ApplicationSharedPtr app = - application_manager_.application(CommandRequestImpl::connection_key()); + + auto app = application_manager_.application(connection_key()); const std::string module_type = ModuleType(); const std::string module_id = ModuleId(); + if (!app) { SDL_LOG_ERROR("NULL pointer."); SendResponse(false, mobile_apis::Result::APPLICATION_NOT_REGISTERED, ""); return; } - const smart_objects::SmartObject& message = event.smart_object(); - - mobile_apis::Result::eType result_code = + const auto& message = event.smart_object(); + const auto result_code = GetMobileResultCode(static_cast<hmi_apis::Common_Result::eType>( message[app_mngr::strings::params][app_mngr::hmi_response::code] .asUInt())); @@ -278,6 +280,11 @@ void RCCommandRequest::ProcessConsentResult(const bool is_allowed, SDL_LOG_AUTO_TRACE(); if (is_allowed) { SetResourceState(module_type, ResourceState::BUSY); + const auto default_timeout = + application_manager_.get_settings().default_timeout() + + application_manager_.get_settings().default_timeout_compensation(); + application_manager_.UpdateRequestTimeout( + connection_key(), correlation_id(), default_timeout); Execute(); // run child's logic } else { resource_allocation_manager_.OnDriverDisallowed( @@ -323,7 +330,7 @@ void RCCommandRequest::SendGetUserConsent( const smart_objects::SmartObject& module_ids) { SDL_LOG_AUTO_TRACE(); app_mngr::ApplicationSharedPtr app = - application_manager_.application(CommandRequestImpl::connection_key()); + application_manager_.application(connection_key()); DCHECK(app); smart_objects::SmartObject msg_params = smart_objects::SmartObject(smart_objects::SmartType_Map); |