summaryrefslogtreecommitdiff
path: root/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi
diff options
context:
space:
mode:
authormked-luxoft <mked@luxoft.com>2019-07-26 21:36:08 +0300
committerAndriy Byzhynar (GitHub) <AByzhynar@luxoft.com>2019-08-20 21:17:13 +0300
commite53e40eecc9a851d129d068887f9918b226a67fd (patch)
tree60af5e7c260fe24d93bc15c356f7e38e13887e03 /src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi
parent65c409e08f50d2c6743448897bd793d9402e4463 (diff)
downloadsdl_core-e53e40eecc9a851d129d068887f9918b226a67fd.tar.gz
Send one OnSystemCapabilitiesUpdated on resumption
Diffstat (limited to 'src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi')
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc
index d9bb20ceef..863e31bae6 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.cc
@@ -32,6 +32,7 @@
#include "sdl_rpc_plugin/commands/hmi/on_bc_system_capability_updated_notification_from_hmi.h"
+#include "application_manager/display_capabilities_builder.h"
#include "application_manager/message_helper.h"
#include "interfaces/HMI_API.h"
#include "interfaces/MOBILE_API.h"
@@ -57,15 +58,17 @@ OnBCSystemCapabilityUpdatedNotificationFromHMI::
OnBCSystemCapabilityUpdatedNotificationFromHMI::
~OnBCSystemCapabilityUpdatedNotificationFromHMI() {}
-bool OnBCSystemCapabilityUpdatedNotificationFromHMI::
- ProcessSystemDisplayCapabilities(
- const smart_objects::SmartObject& display_capabilities) {
+OnBCSystemCapabilityUpdatedNotificationFromHMI::
+ ProcessSystemDisplayCapabilitiesResult
+ OnBCSystemCapabilityUpdatedNotificationFromHMI::
+ ProcessSystemDisplayCapabilities(
+ const smart_objects::SmartObject& display_capabilities) {
LOG4CXX_AUTO_TRACE(logger_);
if (!(*message_)[strings::msg_params].keyExists(strings::app_id)) {
LOG4CXX_DEBUG(logger_, "Updating general display capabilities");
hmi_capabilities_.set_system_display_capabilities(display_capabilities);
- return true;
+ return ProcessSystemDisplayCapabilitiesResult::SUCCESS;
}
const auto app_id =
@@ -74,7 +77,7 @@ bool OnBCSystemCapabilityUpdatedNotificationFromHMI::
if (!app) {
LOG4CXX_ERROR(logger_,
"Application with app_id " << app_id << " is not registered");
- return false;
+ return ProcessSystemDisplayCapabilitiesResult::FAIL;
}
LOG4CXX_DEBUG(logger_, "Updating display capabilities for app " << app_id);
@@ -84,8 +87,14 @@ bool OnBCSystemCapabilityUpdatedNotificationFromHMI::
(*message_)[strings::params][strings::connection_key] =
(*message_)[strings::msg_params][strings::app_id];
(*message_)[strings::msg_params].erase(strings::app_id);
+ if (app->is_resuming()) {
+ LOG4CXX_DEBUG(logger_, "Application is resuming");
+ app->display_capabilities_builder().UpdateDisplayCapabilities(
+ display_capabilities);
+ return ProcessSystemDisplayCapabilitiesResult::CAPABILITIES_CACHED;
+ }
- return true;
+ return ProcessSystemDisplayCapabilitiesResult::SUCCESS;
}
void OnBCSystemCapabilityUpdatedNotificationFromHMI::Run() {
@@ -100,12 +109,17 @@ void OnBCSystemCapabilityUpdatedNotificationFromHMI::Run() {
if (mobile_apis::SystemCapabilityType::DISPLAY ==
system_capability[strings::system_capability_type].asInt() &&
system_capability.keyExists(strings::display_capabilities)) {
- if (!ProcessSystemDisplayCapabilities(
- system_capability[strings::display_capabilities])) {
+ const auto result = ProcessSystemDisplayCapabilities(
+ system_capability[strings::display_capabilities]);
+ if (ProcessSystemDisplayCapabilitiesResult::FAIL == result) {
LOG4CXX_ERROR(logger_,
"Failed to process display capabilities. Notification will "
"be ignored");
return;
+ } else if (ProcessSystemDisplayCapabilitiesResult::CAPABILITIES_CACHED ==
+ result) {
+ LOG4CXX_TRACE(logger_, "Capabilities are being cached for resuming app");
+ return;
}
}