diff options
Diffstat (limited to 'src/components/application_manager/src/commands/hmi')
10 files changed, 255 insertions, 68 deletions
diff --git a/src/components/application_manager/src/commands/hmi/close_popup_request.cc b/src/components/application_manager/src/commands/hmi/close_popup_request.cc index b0ab48dd96..1e71ef7b88 100644 --- a/src/components/application_manager/src/commands/hmi/close_popup_request.cc +++ b/src/components/application_manager/src/commands/hmi/close_popup_request.cc @@ -44,7 +44,11 @@ ClosePopupRequest::~ClosePopupRequest() {} void ClosePopupRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - + if(!CheckAvailabilityHMIInterfaces(application_manager_, + HmiInterfaces::HMI_INTERFACE_UI)) { + LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_UI isn't available"); + return; + } SendRequest(); } diff --git a/src/components/application_manager/src/commands/hmi/request_to_hmi.cc b/src/components/application_manager/src/commands/hmi/request_to_hmi.cc index 2e7d7e9df1..febdeff319 100644 --- a/src/components/application_manager/src/commands/hmi/request_to_hmi.cc +++ b/src/components/application_manager/src/commands/hmi/request_to_hmi.cc @@ -36,6 +36,29 @@ namespace application_manager { namespace commands { +bool CheckAvailabilityHMIInterfaces(ApplicationManager& application_manager, + HmiInterfaces::InterfaceID interface) { + const HmiInterfaces::InterfaceState state = + application_manager.hmi_interfaces().GetInterfaceState(interface); + return HmiInterfaces::STATE_NOT_AVAILABLE != state ? true : false; +} + +bool ChangeInterfaceState(ApplicationManager& application_manager, + const smart_objects::SmartObject& response_from_hmi, + HmiInterfaces::InterfaceID interface) { + bool is_available = false; + if (response_from_hmi[strings::msg_params].keyExists(strings::available)) { + is_available = response_from_hmi[strings::msg_params][strings::available].asBool(); + const HmiInterfaces::InterfaceState interface_state = + is_available ? HmiInterfaces::STATE_AVAILABLE + : HmiInterfaces::STATE_NOT_AVAILABLE; + application_manager.hmi_interfaces().SetInterfaceState( + interface, interface_state); + } + return is_available; +} + + RequestToHMI::RequestToHMI(const MessageSharedPtr& message, ApplicationManager& application_manager) : CommandImpl(message, application_manager) { @@ -56,10 +79,10 @@ bool RequestToHMI::CleanUp() { void RequestToHMI::Run() {} void RequestToHMI::SendRequest() { - (*message_)[strings::params][strings::protocol_type] = hmi_protocol_type_; - (*message_)[strings::params][strings::protocol_version] = protocol_version_; + (*message_)[strings::params][strings::protocol_type] = hmi_protocol_type_; + (*message_)[strings::params][strings::protocol_version] = protocol_version_; + application_manager_.SendMessageToHMI(message_); - application_manager_.SendMessageToHMI(message_); } } // namespace commands diff --git a/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc index e7fd335808..a7e5a95fbb 100644 --- a/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/tts_is_ready_request.cc @@ -31,6 +31,7 @@ */ #include "application_manager/commands/hmi/tts_is_ready_request.h" +#include "application_manager/message_helper.h" namespace application_manager { @@ -38,16 +39,68 @@ namespace commands { TTSIsReadyRequest::TTSIsReadyRequest(const MessageSharedPtr& message, ApplicationManager& application_manager) - : RequestToHMI(message, application_manager) {} + : RequestToHMI(message, application_manager) + , EventObserver(application_manager.event_dispatcher()){} TTSIsReadyRequest::~TTSIsReadyRequest() {} void TTSIsReadyRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - + subscribe_on_event(hmi_apis::FunctionID::TTS_IsReady, + correlation_id()); SendRequest(); } +void TTSIsReadyRequest::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::TTS_IsReady: { + LOG4CXX_DEBUG(logger_, "Received TTS_IsReady event"); + unsubscribe_from_event(hmi_apis::FunctionID::TTS_IsReady); + bool is_available = ChangeInterfaceState( + application_manager_, message, + HmiInterfaces::HMI_INTERFACE_TTS); + HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); + hmi_capabilities.set_is_tts_cooperating(is_available); + if(!CheckAvailabilityHMIInterfaces(application_manager_, + HmiInterfaces::HMI_INTERFACE_TTS)) { + LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_TTS isn't available"); + return; + } + SendMessageToHMI(); + break; + } + default: { + LOG4CXX_ERROR(logger_, "Received unknown event" << event.id()); + return; + } + } +} + +void TTSIsReadyRequest::onTimeOut() { + //According wiht new requirment APPLINK-27956 + SendMessageToHMI(); +} + +void TTSIsReadyRequest::SendMessageToHMI() { + + utils::SharedPtr<smart_objects::SmartObject> get_language( + MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::TTS_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::TTS_GetSupportedLanguages, application_manager_)); + application_manager_.ManageHMICommand(get_all_languages); + utils::SharedPtr<smart_objects::SmartObject> get_capabilities( + MessageHelper::CreateModuleInfoSO( + hmi_apis::FunctionID::TTS_GetCapabilities, application_manager_)); + application_manager_.ManageHMICommand(get_capabilities); +} } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/tts_is_ready_response.cc b/src/components/application_manager/src/commands/hmi/tts_is_ready_response.cc index 91efb293c9..30e2f4816b 100644 --- a/src/components/application_manager/src/commands/hmi/tts_is_ready_response.cc +++ b/src/components/application_manager/src/commands/hmi/tts_is_ready_response.cc @@ -43,15 +43,9 @@ TTSIsReadyResponse::~TTSIsReadyResponse() {} void TTSIsReadyResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - smart_objects::SmartObject& object = *message_; - - bool is_available = false; - if (object[strings::msg_params].keyExists(strings::available)) { - is_available = object[strings::msg_params][strings::available].asBool(); - } - - HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); - hmi_capabilities.set_is_tts_cooperating(is_available); + event_engine::Event event(hmi_apis::FunctionID::TTS_IsReady); + event.set_smart_object(*message_); + event.raise(application_manager_.event_dispatcher()); } } // namespace commands 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 diff --git a/src/components/application_manager/src/commands/hmi/ui_is_ready_response.cc b/src/components/application_manager/src/commands/hmi/ui_is_ready_response.cc index 8ad5d89ba7..088baeb8b2 100644 --- a/src/components/application_manager/src/commands/hmi/ui_is_ready_response.cc +++ b/src/components/application_manager/src/commands/hmi/ui_is_ready_response.cc @@ -43,22 +43,10 @@ UIIsReadyResponse::~UIIsReadyResponse() {} void UIIsReadyResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - smart_objects::SmartObject& object = *message_; - bool is_available = false; - if (object[strings::msg_params].keyExists(strings::available)) { - is_available = object[strings::msg_params][strings::available].asBool(); - } - - HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); - - hmi_capabilities.set_is_ui_cooperating(is_available); - const HmiInterfaces::InterfaceState interface_state = - is_available ? HmiInterfaces::STATE_AVAILABLE - : HmiInterfaces::STATE_NOT_AVAILABLE; - HmiInterfaces& hmi_interfaces = application_manager_.hmi_interfaces(); - hmi_interfaces.SetInterfaceState(HmiInterfaces::HMI_INTERFACE_UI, - interface_state); + event_engine::Event event(hmi_apis::FunctionID::UI_IsReady); + event.set_smart_object(*message_); + event.raise(application_manager_.event_dispatcher()); } } // namespace commands diff --git a/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc index 3ecc2ffe90..5d3cafb2f0 100644 --- a/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/vi_is_ready_request.cc @@ -31,6 +31,7 @@ */ #include "application_manager/commands/hmi/vi_is_ready_request.h" +#include "application_manager/message_helper.h" namespace application_manager { @@ -38,16 +39,61 @@ namespace commands { VIIsReadyRequest::VIIsReadyRequest(const MessageSharedPtr& message, ApplicationManager& application_manager) - : RequestToHMI(message, application_manager) {} + : RequestToHMI(message, application_manager) + , EventObserver(application_manager.event_dispatcher()){} VIIsReadyRequest::~VIIsReadyRequest() {} void VIIsReadyRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - + subscribe_on_event(hmi_apis::FunctionID::VehicleInfo_IsReady, + correlation_id()); SendRequest(); } +void VIIsReadyRequest::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::VehicleInfo_IsReady: { + LOG4CXX_DEBUG(logger_, "VehicleInfo_IsReady event"); + unsubscribe_from_event(hmi_apis::FunctionID::VehicleInfo_IsReady); + bool is_available = ChangeInterfaceState( + application_manager_, message, + HmiInterfaces::HMI_INTERFACE_VehicleInfo); + + HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); + hmi_capabilities.set_is_ivi_cooperating(is_available); + application_manager_.GetPolicyHandler().OnVIIsReady(); + if(!CheckAvailabilityHMIInterfaces(application_manager_, + HmiInterfaces::HMI_INTERFACE_VehicleInfo)) { + LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_VehicleInfo isn't available"); + return; + } + SendMessageToHMI(); + + break; + } + default: { + LOG4CXX_ERROR(logger_, "Received unknown event" << event.id()); + return; + } + } +} + +void VIIsReadyRequest::onTimeOut() { + //According wiht new requirment APPLINK-27958 + SendMessageToHMI(); +} + +void VIIsReadyRequest::SendMessageToHMI() { + utils::SharedPtr<smart_objects::SmartObject> get_type( + MessageHelper::CreateModuleInfoSO( + hmi_apis::FunctionID::VehicleInfo_GetVehicleType, application_manager_)); + application_manager_.ManageHMICommand(get_type); +} + + } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/vi_is_ready_response.cc b/src/components/application_manager/src/commands/hmi/vi_is_ready_response.cc index 0f62b6662a..2f84190494 100644 --- a/src/components/application_manager/src/commands/hmi/vi_is_ready_response.cc +++ b/src/components/application_manager/src/commands/hmi/vi_is_ready_response.cc @@ -43,23 +43,9 @@ VIIsReadyResponse::~VIIsReadyResponse() {} void VIIsReadyResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - smart_objects::SmartObject& object = *message_; - - bool is_available = false; - if (object[strings::msg_params].keyExists(strings::available)) { - is_available = object[strings::msg_params][strings::available].asBool(); - const HmiInterfaces::InterfaceState interface_state = - is_available ? HmiInterfaces::STATE_AVAILABLE - : HmiInterfaces::STATE_NOT_AVAILABLE; - HmiInterfaces& hmi_interfaces = application_manager_.hmi_interfaces(); - hmi_interfaces.SetInterfaceState(HmiInterfaces::HMI_INTERFACE_VehicleInfo, - interface_state); - } - - HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); - hmi_capabilities.set_is_ivi_cooperating(is_available); - - application_manager_.GetPolicyHandler().OnVIIsReady(); + event_engine::Event event(hmi_apis::FunctionID::VehicleInfo_IsReady); + event.set_smart_object(*message_); + event.raise(application_manager_.event_dispatcher()); } } // namespace commands diff --git a/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc b/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc index 8c5e8bd49b..71750e3738 100644 --- a/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc +++ b/src/components/application_manager/src/commands/hmi/vr_is_ready_request.cc @@ -38,16 +38,68 @@ namespace commands { VRIsReadyRequest::VRIsReadyRequest(const MessageSharedPtr& message, ApplicationManager& application_manager) - : RequestToHMI(message, application_manager) {} + : RequestToHMI(message, application_manager) + , EventObserver(application_manager.event_dispatcher()){} VRIsReadyRequest::~VRIsReadyRequest() {} void VRIsReadyRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - + subscribe_on_event(hmi_apis::FunctionID::VR_IsReady, + correlation_id()); SendRequest(); } +void VRIsReadyRequest::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::VR_IsReady: { + LOG4CXX_DEBUG(logger_, "Received VR_IsReady event"); + unsubscribe_from_event(hmi_apis::FunctionID::VR_IsReady); + bool is_available = ChangeInterfaceState( + application_manager_, message, + HmiInterfaces::HMI_INTERFACE_VR); + + HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); + hmi_capabilities.set_is_vr_cooperating(is_available); + if(!CheckAvailabilityHMIInterfaces(application_manager_, + HmiInterfaces::HMI_INTERFACE_VR)) { + LOG4CXX_INFO(logger_, "HmiInterfaces::HMI_INTERFACE_VR isn't available"); + return; + } + SendMessageToHMI(); + break; + } + default: { + LOG4CXX_ERROR(logger_, "Received unknown event" << event.id()); + return; + } + } +} + +void VRIsReadyRequest::onTimeOut() { + //According wiht new requirment APPLINK-27957 + SendMessageToHMI(); +} + +void VRIsReadyRequest::SendMessageToHMI() { + utils::SharedPtr<smart_objects::SmartObject> get_language( + MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::VR_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::VR_GetSupportedLanguages, application_manager_)); + application_manager_.ManageHMICommand(get_all_languages); + utils::SharedPtr<smart_objects::SmartObject> get_capabilities( + MessageHelper::CreateModuleInfoSO( + hmi_apis::FunctionID::VR_GetCapabilities, application_manager_)); + application_manager_.ManageHMICommand(get_capabilities); +} + } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/vr_is_ready_response.cc b/src/components/application_manager/src/commands/hmi/vr_is_ready_response.cc index c523387f1b..78e2dae23b 100644 --- a/src/components/application_manager/src/commands/hmi/vr_is_ready_response.cc +++ b/src/components/application_manager/src/commands/hmi/vr_is_ready_response.cc @@ -43,21 +43,9 @@ VRIsReadyResponse::~VRIsReadyResponse() {} void VRIsReadyResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - smart_objects::SmartObject& object = *message_; - - bool is_available = false; - if (object[strings::msg_params].keyExists(strings::available)) { - is_available = object[strings::msg_params][strings::available].asBool(); - const HmiInterfaces::InterfaceState interface_state = - is_available ? HmiInterfaces::STATE_AVAILABLE - : HmiInterfaces::STATE_NOT_AVAILABLE; - HmiInterfaces& hmi_interfaces = application_manager_.hmi_interfaces(); - hmi_interfaces.SetInterfaceState(HmiInterfaces::HMI_INTERFACE_VR, - interface_state); - } - - HMICapabilities& hmi_capabilities = application_manager_.hmi_capabilities(); - hmi_capabilities.set_is_vr_cooperating(is_available); + event_engine::Event event(hmi_apis::FunctionID::VR_IsReady); + event.set_smart_object(*message_); + event.raise(application_manager_.event_dispatcher()); } } // namespace commands |