summaryrefslogtreecommitdiff
path: root/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc
diff options
context:
space:
mode:
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.cc63
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;