diff options
author | AKalinich-Luxoft <AKalinich@luxoft.com> | 2017-06-09 09:12:46 +0300 |
---|---|---|
committer | AKalinich-Luxoft <AKalinich@luxoft.com> | 2017-12-12 14:11:47 +0200 |
commit | 13c5685d110e2a0c6623e0217a54b4466792657f (patch) | |
tree | 958390e39b02f1cb63aa9654ba96990c1bcb5bc3 | |
parent | e96f33b925b782cab8b515b7afd8d49965506010 (diff) | |
download | sdl_core-13c5685d110e2a0c6623e0217a54b4466792657f.tar.gz |
Added missed implementation of OnAwakeSDLNotification
This notification works in pair with OnExitAllApplications(SUSPEND) notification.
However first one is present in code but second one was ommited. There was just empty file.
File with implementation was added to CMakeLists.
Message broker was subscribed to OnAwake notification from HMI.
Added command creation in HMI Command Factory.
5 files changed, 94 insertions, 2 deletions
diff --git a/src/components/application_manager/CMakeLists.txt b/src/components/application_manager/CMakeLists.txt index 7a49ce6b81..21f92418fe 100644 --- a/src/components/application_manager/CMakeLists.txt +++ b/src/components/application_manager/CMakeLists.txt @@ -324,6 +324,7 @@ set (HMI_COMMANDS_SOURCES ${COMMANDS_SOURCE_DIR}/hmi/on_system_error_notification.cc ${COMMANDS_SOURCE_DIR}/hmi/basic_communication_system_request.cc ${COMMANDS_SOURCE_DIR}/hmi/basic_communication_system_response.cc + ${COMMANDS_SOURCE_DIR}/hmi/basic_communication_on_awake_sdl.cc ${COMMANDS_SOURCE_DIR}/hmi/sdl_policy_update.cc ${COMMANDS_SOURCE_DIR}/hmi/sdl_policy_update_response.cc ${COMMANDS_SOURCE_DIR}/hmi/on_received_policy_update.cc diff --git a/src/components/application_manager/include/application_manager/commands/hmi/basic_communication_on_awake_sdl.h b/src/components/application_manager/include/application_manager/commands/hmi/basic_communication_on_awake_sdl.h index f789a14780..85a093177d 100644 --- a/src/components/application_manager/include/application_manager/commands/hmi/basic_communication_on_awake_sdl.h +++ b/src/components/application_manager/include/application_manager/commands/hmi/basic_communication_on_awake_sdl.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Ford Motor Company + * Copyright (c) 2017, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,3 +29,45 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ + +#ifndef SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_COMMANDS_HMI_BASIC_COMMUNICATION_ON_AWAKE_SDL_H_ +#define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_COMMANDS_HMI_BASIC_COMMUNICATION_ON_AWAKE_SDL_H_ + +#include "application_manager/commands/hmi/notification_from_hmi.h" + +namespace application_manager { + +namespace commands { + +/** + * @brief OnAwakeSDLNotification command class + **/ +class OnAwakeSDLNotification : public NotificationFromHMI { + public: + /** + * @brief OnAwakeSDLNotification class constructor + * @param message Incoming SmartObject message + * @param application_manager reference to ApplicationManager instance + **/ + OnAwakeSDLNotification(const MessageSharedPtr& message, + ApplicationManager& application_manager); + + /** + * @brief OnAwakeSDLNotification class destructor + **/ + virtual ~OnAwakeSDLNotification(); + + /** + * @brief Execute command + **/ + virtual void Run(); + + private: + DISALLOW_COPY_AND_ASSIGN(OnAwakeSDLNotification); +}; + +} // namespace commands + +} // namespace application_manager + +#endif // SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_COMMANDS_HMI_BASIC_COMMUNICATION_ON_AWAKE_SDL_H_ diff --git a/src/components/application_manager/src/commands/hmi/basic_communication_on_awake_sdl.cc b/src/components/application_manager/src/commands/hmi/basic_communication_on_awake_sdl.cc index 80b1edb5bb..3db61cf177 100644 --- a/src/components/application_manager/src/commands/hmi/basic_communication_on_awake_sdl.cc +++ b/src/components/application_manager/src/commands/hmi/basic_communication_on_awake_sdl.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Ford Motor Company + * Copyright (c) 2017, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,3 +29,45 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ + +#include "application_manager/commands/hmi/basic_communication_on_awake_sdl.h" +#include "application_manager/message_helper.h" +#include "application_manager/resumption/resume_ctrl.h" + +namespace application_manager { + +namespace commands { + +OnAwakeSDLNotification::OnAwakeSDLNotification( + const MessageSharedPtr& message, ApplicationManager& application_manager) + : NotificationFromHMI(message, application_manager) {} + +OnAwakeSDLNotification::~OnAwakeSDLNotification() {} + +void OnAwakeSDLNotification::Run() { + LOG4CXX_AUTO_TRACE(logger_); + + if (application_manager_.resume_controller().is_suspended()) { + { + application_manager_.resume_controller().set_is_suspended(false); + DataAccessor<ApplicationSet> accessor = + application_manager_.applications(); + ApplicationSetIt it = accessor.GetData().begin(); + ApplicationSetIt itEnd = accessor.GetData().end(); + for (; it != itEnd; ++it) { + if ((*it).get()) { + if ((*it)->flag_sending_hash_change_after_awake()) { + MessageHelper::SendHashUpdateNotification((*it)->app_id(), + application_manager_); + (*it)->set_flag_sending_hash_change_after_awake(false); + } + } + } + } + application_manager_.resume_controller().OnAwake(); + } +} + +} // namespace commands + +} // namespace application_manager diff --git a/src/components/application_manager/src/hmi_command_factory.cc b/src/components/application_manager/src/hmi_command_factory.cc index ffaa8d9b5f..a7f3ce7e6b 100644 --- a/src/components/application_manager/src/hmi_command_factory.cc +++ b/src/components/application_manager/src/hmi_command_factory.cc @@ -269,6 +269,7 @@ #include "application_manager/commands/hmi/on_system_error_notification.h" #include "application_manager/commands/hmi/basic_communication_system_request.h" #include "application_manager/commands/hmi/basic_communication_system_response.h" +#include "application_manager/commands/hmi/basic_communication_on_awake_sdl.h" #include "application_manager/commands/hmi/sdl_policy_update.h" #include "application_manager/commands/hmi/sdl_policy_update_response.h" #include "application_manager/commands/hmi/on_received_policy_update.h" @@ -781,6 +782,11 @@ CommandSharedPtr HMICommandFactory::CreateCommand( message, application_manager)); break; } + case hmi_apis::FunctionID::BasicCommunication_OnAwakeSDL: { + command.reset( + new commands::OnAwakeSDLNotification(message, application_manager)); + break; + } case hmi_apis::FunctionID::BasicCommunication_OnExitApplication: { command.reset(new commands::OnExitApplicationNotification( message, application_manager)); diff --git a/src/components/hmi_message_handler/src/messagebroker_adapter.cc b/src/components/hmi_message_handler/src/messagebroker_adapter.cc index abefbe3e24..ff5a6d687e 100644 --- a/src/components/hmi_message_handler/src/messagebroker_adapter.cc +++ b/src/components/hmi_message_handler/src/messagebroker_adapter.cc @@ -108,6 +108,7 @@ void MessageBrokerAdapter::SubscribeTo() { MessageBrokerController::subscribeTo("BasicCommunication.OnUpdateDeviceList"); MessageBrokerController::subscribeTo("BasicCommunication.OnFindApplications"); MessageBrokerController::subscribeTo("BasicCommunication.OnAppActivated"); + MessageBrokerController::subscribeTo("BasicCommunication.OnAwakeSDL"); MessageBrokerController::subscribeTo("BasicCommunication.OnExitApplication"); MessageBrokerController::subscribeTo( "BasicCommunication.OnExitAllApplications"); |