diff options
Diffstat (limited to 'src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc')
-rw-r--r-- | src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc | 63 |
1 files changed, 44 insertions, 19 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc index 66ac9c458b..e25ee93400 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc @@ -136,18 +136,10 @@ void SDLActivateAppRequest::Run() { static_cast<eType>(function_id()), hmi_apis::Common_Result::REJECTED, "HMIDeactivate is active"); - } else if (app && !app->IsRegistered() && app->is_cloud_app()) { - SDL_LOG_DEBUG("Starting cloud application."); - const ApplicationManagerSettings& settings = - application_manager_.get_settings(); - uint32_t total_retry_timeout = (settings.cloud_app_retry_timeout() * - settings.cloud_app_max_retry_attempts()); - application_manager_.updateRequestTimeout( - 0, correlation_id(), default_timeout_ + total_retry_timeout); - subscribe_on_event(BasicCommunication_OnAppRegistered); - application_manager_.connection_handler().ConnectToDevice(app->device()); - } else { - const uint32_t application_id = app_id(); + return; + } + + if (app->app_id() > 0 || app->IsRegistered()) { auto main_state = app->CurrentHmiState(mobile_apis::PredefinedWindows::DEFAULT_WINDOW); if (mobile_apis::HMILevel::INVALID_ENUM == main_state->hmi_level()) { @@ -156,12 +148,40 @@ void SDLActivateAppRequest::Run() { "yet, postpone activation"); auto& postponed_activation_ctrl = application_manager_.state_controller() .GetPostponedActivationController(); - postponed_activation_ctrl.AddAppToActivate(application_id, + postponed_activation_ctrl.AddAppToActivate(app->app_id(), correlation_id()); return; } + } + + const uint32_t application_id = app_id(); + if (app->IsRegistered()) { + SDL_LOG_DEBUG("Application is registered. Activating."); policy_handler_.OnActivateApp(application_id, correlation_id()); + return; } + + if (app->is_cloud_app()) { + SDL_LOG_DEBUG("Starting cloud application."); + const ApplicationManagerSettings& settings = + application_manager_.get_settings(); + uint32_t total_retry_timeout = (settings.cloud_app_retry_timeout() * + settings.cloud_app_max_retry_attempts()); + application_manager_.UpdateRequestTimeout( + 0, correlation_id(), default_timeout_ + total_retry_timeout); + subscribe_on_event(BasicCommunication_OnAppRegistered); + application_manager_.connection_handler().ConnectToDevice(app->device()); + return; + } + + connection_handler::DeviceHandle device_handle = app->device(); + SDL_LOG_ERROR( + "Can't find regular foreground app with the same connection id: " + << device_handle); + SendErrorResponse(correlation_id(), + SDL_ActivateApp, + hmi_apis::Common_Result::NO_APPS_REGISTERED, + ""); } #else // EXTERNAL_PROPRIETARY_MODE @@ -205,8 +225,7 @@ void SDLActivateAppRequest::Run() { return; } - if (app_to_activate->IsRegistered()) { - SDL_LOG_DEBUG("Application is registered. Activating."); + if (app_to_activate->app_id() > 0 || app_to_activate->IsRegistered()) { auto main_state = app_to_activate->CurrentHmiState( mobile_apis::PredefinedWindows::DEFAULT_WINDOW); if (mobile_apis::HMILevel::INVALID_ENUM == main_state->hmi_level()) { @@ -215,19 +234,25 @@ void SDLActivateAppRequest::Run() { "yet, postpone activation"); auto& postponed_activation_ctrl = application_manager_.state_controller() .GetPostponedActivationController(); - postponed_activation_ctrl.AddAppToActivate(application_id, + postponed_activation_ctrl.AddAppToActivate(app_to_activate->app_id(), correlation_id()); return; } + } + + if (app_to_activate->IsRegistered()) { + SDL_LOG_DEBUG("Application is registered. Activating."); policy_handler_.OnActivateApp(application_id, correlation_id()); return; - } else if (app_to_activate->is_cloud_app()) { + } + + if (app_to_activate->is_cloud_app()) { SDL_LOG_DEBUG("Starting cloud application."); const ApplicationManagerSettings& settings = application_manager_.get_settings(); uint32_t total_retry_timeout = (settings.cloud_app_retry_timeout() * settings.cloud_app_max_retry_attempts()); - application_manager_.updateRequestTimeout( + application_manager_.UpdateRequestTimeout( 0, correlation_id(), default_timeout_ + total_retry_timeout); subscribe_on_event(BasicCommunication_OnAppRegistered); application_manager_.connection_handler().ConnectToDevice( @@ -272,7 +297,7 @@ void SDLActivateAppRequest::Run() { } #endif // EXTERNAL_PROPRIETARY_MODE -void SDLActivateAppRequest::onTimeOut() { +void SDLActivateAppRequest::OnTimeOut() { using namespace hmi_apis::FunctionID; using namespace hmi_apis::Common_Result; using namespace application_manager; |