diff options
author | dtrunov <dtrunov@luxoft.com> | 2016-09-15 14:14:11 +0300 |
---|---|---|
committer | dtrunov <dtrunov@luxoft.com> | 2016-09-29 11:36:10 +0300 |
commit | ff2bdeaf8a627fc698ff83f4987921b5773a3955 (patch) | |
tree | 7bb833bedf4af9bb8f8cdcaec7f686fbd147b7ca /src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc | |
parent | 85c71b25bde1eaca791e94ee3f16bb37d389efce (diff) | |
download | sdl_core-ff2bdeaf8a627fc698ff83f4987921b5773a3955.tar.gz |
UI interface: SDL behavior in case HMI does not respond to IsReady request or respond with "available" = false
Added logic for processing case when HMI does not respond to IsReady request or respond with "available"=false.
Added logic to UI command in order to process UNSUPPORTED_RESOURCE result code.
Change logic for processing response IsReady for UI, VR, TTS, VI interfaces.
CRQ [APPLINK-25087](https://adc.luxoft.com/jira/browse/APPLINK-25087)
Diffstat (limited to 'src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc')
-rw-r--r-- | src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc | 57 |
1 files changed, 55 insertions, 2 deletions
diff --git a/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc index 463ae9d41d..d39ff001b5 100644 --- a/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/ui_is_ready_request.cc @@ -31,6 +31,7 @@ */ #include "application_manager/commands/hmi/ui_is_ready_request.h" +#include "application_manager/message_helper.h" namespace application_manager { @@ -38,16 +39,68 @@ namespace commands { UIIsReadyRequest::UIIsReadyRequest(const MessageSharedPtr& message, ApplicationManager& application_manager) - : RequestToHMI(message, application_manager) {} + : RequestToHMI(message, application_manager) + , EventObserver(application_manager.event_dispatcher()){} UIIsReadyRequest::~UIIsReadyRequest() {} void UIIsReadyRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - + subscribe_on_event(hmi_apis::FunctionID::UI_IsReady, + correlation_id()); SendRequest(); } +void UIIsReadyRequest::on_event(const event_engine::Event& event) { + LOG4CXX_AUTO_TRACE(logger_); + const smart_objects::SmartObject& message = event.smart_object(); + switch (event.id()) { + case hmi_apis::FunctionID::UI_IsReady: { + LOG4CXX_DEBUG(logger_, "Received UI_IsReady event"); + unsubscribe_from_event(hmi_apis::FunctionID::UI_IsReady); + bool is_available = ChangeInterfaceState( + application_manager_, message, + HmiInterfaces::HMI_INTERFACE_UI); + HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); + hmi_capabilities.set_is_ui_cooperating(is_available); + if(!CheckAvailabilityHMIInterfaces(application_manager_, + HmiInterfaces::HMI_INTERFACE_UI)) { + LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_UI isn't available"); + return; + } + SendMessageToHMI(); + break; + } + default: { + LOG4CXX_ERROR(logger_, "Received unknown event" << event.id()); + return; + } + } +} + +void UIIsReadyRequest::onTimeOut() { + //According wiht new requirment APPLINK-27957 + SendMessageToHMI(); +} + +void UIIsReadyRequest::SendMessageToHMI() { + utils::SharedPtr<smart_objects::SmartObject> get_language( + MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::UI_GetLanguage, + application_manager_)); + HMICapabilities& hmi_capabilities = + application_manager_.hmi_capabilities(); + hmi_capabilities.set_handle_response_for(*get_language); + application_manager_.ManageHMICommand(get_language); + utils::SharedPtr<smart_objects::SmartObject> get_all_languages( + MessageHelper::CreateModuleInfoSO( + hmi_apis::FunctionID::UI_GetSupportedLanguages, application_manager_)); + application_manager_.ManageHMICommand(get_all_languages); + utils::SharedPtr<smart_objects::SmartObject> get_capabilities( + MessageHelper::CreateModuleInfoSO( + hmi_apis::FunctionID::UI_GetCapabilities, application_manager_)); + application_manager_.ManageHMICommand(get_capabilities); +} + } // namespace commands } // namespace application_manager |