diff options
author | Artem Nosach <ANosach@luxoft.com> | 2015-04-06 22:25:10 +0300 |
---|---|---|
committer | Artem Nosach <ANosach@luxoft.com> | 2015-04-23 15:33:23 +0300 |
commit | 28d88105cdfdcaff75688483f3bd89f046f42b68 (patch) | |
tree | 4733ce0af8121385e4ffc3c876394252674a5421 | |
parent | 81208d859b07241abe8706d51eccbb74db72140b (diff) | |
download | sdl_core-28d88105cdfdcaff75688483f3bd89f046f42b68.tar.gz |
Rework stream HMI requests and responses.
6 files changed, 107 insertions, 52 deletions
diff --git a/src/components/application_manager/include/application_manager/commands/hmi/navi_audio_start_stream_request.h b/src/components/application_manager/include/application_manager/commands/hmi/navi_audio_start_stream_request.h index 97de7102f7..61f3680f89 100644 --- a/src/components/application_manager/include/application_manager/commands/hmi/navi_audio_start_stream_request.h +++ b/src/components/application_manager/include/application_manager/commands/hmi/navi_audio_start_stream_request.h @@ -34,6 +34,7 @@ #define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_COMMANDS_HMI_NAVI_AUDIO_START_STREAM_REQUEST_H_ #include "application_manager/commands/hmi/request_to_hmi.h" +#include "application_manager/event_engine/event_observer.h" namespace application_manager { @@ -42,7 +43,8 @@ namespace commands { /** * @brief AudioStartStreamRequest command class **/ -class AudioStartStreamRequest : public RequestToHMI { +class AudioStartStreamRequest : public RequestToHMI, + public event_engine::EventObserver { public: /** * @brief AudioStartStreamRequest class constructor @@ -61,6 +63,11 @@ class AudioStartStreamRequest : public RequestToHMI { **/ virtual void Run(); + /** + * @brief On event callback + **/ + virtual void on_event(const event_engine::Event& event); + private: DISALLOW_COPY_AND_ASSIGN(AudioStartStreamRequest); }; diff --git a/src/components/application_manager/include/application_manager/commands/hmi/navi_start_stream_request.h b/src/components/application_manager/include/application_manager/commands/hmi/navi_start_stream_request.h index 5b73e2dbab..eb5624c0ef 100644 --- a/src/components/application_manager/include/application_manager/commands/hmi/navi_start_stream_request.h +++ b/src/components/application_manager/include/application_manager/commands/hmi/navi_start_stream_request.h @@ -34,6 +34,7 @@ #define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_COMMANDS_HMI_NAVI_START_STREAM_REQUEST_H_ #include "application_manager/commands/hmi/request_to_hmi.h" +#include "application_manager/event_engine/event_observer.h" namespace application_manager { @@ -42,7 +43,8 @@ namespace commands { /** * @brief NaviStartStreamRequest command class **/ -class NaviStartStreamRequest : public RequestToHMI { +class NaviStartStreamRequest : public RequestToHMI, + public event_engine::EventObserver { public: /** * @brief NaviStartStreamRequest class constructor @@ -61,6 +63,11 @@ class NaviStartStreamRequest : public RequestToHMI { **/ virtual void Run(); + /** + * @brief On event callback + **/ + virtual void on_event(const event_engine::Event& event); + private: DISALLOW_COPY_AND_ASSIGN(NaviStartStreamRequest); }; diff --git a/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_request.cc b/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_request.cc index 140a5bcc63..1e0d69f3e1 100644 --- a/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_request.cc +++ b/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_request.cc @@ -32,7 +32,6 @@ #include "application_manager/commands/hmi/navi_audio_start_stream_request.h" #include "application_manager/application_manager_impl.h" -#include "application_manager/application_impl.h" namespace application_manager { @@ -49,19 +48,54 @@ AudioStartStreamRequest::~AudioStartStreamRequest() { void AudioStartStreamRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - ApplicationSharedPtr app = - ApplicationManagerImpl::instance()->active_application(); + subscribe_on_event(hmi_apis::FunctionID::Navigation_StartAudioStream, + correlation_id()); + SendRequest(); +} + +void AudioStartStreamRequest::on_event(const event_engine::Event& event) { + LOG4CXX_AUTO_TRACE(logger_); + + ApplicationManagerImpl* app_mgr = ApplicationManagerImpl::instance(); + if (!app_mgr) { + LOG4CXX_ERROR_EXT(logger_, "Application manager not found"); + return; + } + ApplicationSharedPtr app = app_mgr->application_by_hmi_app(application_id()); if (!app) { - LOG4CXX_ERROR_EXT(logger_, "AudioStartStreamRequest no active app!"); + LOG4CXX_ERROR_EXT(logger_, + "StartAudioStreamRequest aborted. Application not found"); return; } - SendRequest(); - app->StartAudioStartStreamRetryTimer(); + const smart_objects::SmartObject& message = event.smart_object(); + switch (event.id()) { + case hmi_apis::FunctionID::Navigation_StartAudioStream: { + LOG4CXX_INFO(logger_, "Received StartStream event"); + + const hmi_apis::Common_Result::eType code = + static_cast<hmi_apis::Common_Result::eType>( + message[strings::params][hmi_response::code].asInt()); + + if (hmi_apis::Common_Result::SUCCESS == code) { + LOG4CXX_INFO(logger_, "StartAudioStreamResponse SUCCESS"); + if (app_mgr->IsStreamingAllowed(app->app_id(), ServiceType::kAudio)) { + app->set_audio_streaming_started(true); + } else { + LOG4CXX_INFO(logger_, + "StartAudioStreamRequest aborted. Application can not stream"); + } + } + break; + } + default: { + LOG4CXX_ERROR(logger_,"Received unknown event" << event.id()); + return; + } + } } } // namespace commands } // namespace application_manager - diff --git a/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_response.cc b/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_response.cc index b294616c43..9f9a3e0ec0 100644 --- a/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_response.cc +++ b/src/components/application_manager/src/commands/hmi/navi_audio_start_stream_response.cc @@ -30,8 +30,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include "application_manager/commands/hmi/navi_audio_start_stream_response.h" -#include "application_manager/application_manager_impl.h" -#include "application_manager/application_impl.h" +#include "application_manager/event_engine/event_dispatcher.h" namespace application_manager { @@ -46,22 +45,10 @@ AudioStartStreamResponse::~AudioStartStreamResponse() { void AudioStartStreamResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - ApplicationSharedPtr app = - ApplicationManagerImpl::instance()->active_application(); - if (!app) { - LOG4CXX_ERROR_EXT(logger_, "NaviStartStreamResponse no active app!"); - return; - } - - const hmi_apis::Common_Result::eType code = - static_cast<hmi_apis::Common_Result::eType>( - (*message_)[strings::params][hmi_response::code].asInt()); - - if (hmi_apis::Common_Result::SUCCESS == code) { - LOG4CXX_INFO(logger_, "AudioStartStreamResponse SUCCESS"); - app->set_hmi_supports_navi_audio_streaming(true); - } + event_engine::Event event(hmi_apis::FunctionID::Navigation_StartAudioStream); + event.set_smart_object(*message_); + event.raise(); } } // namespace commands diff --git a/src/components/application_manager/src/commands/hmi/navi_start_stream_request.cc b/src/components/application_manager/src/commands/hmi/navi_start_stream_request.cc index 338f03c739..ef6c6a41bd 100644 --- a/src/components/application_manager/src/commands/hmi/navi_start_stream_request.cc +++ b/src/components/application_manager/src/commands/hmi/navi_start_stream_request.cc @@ -32,7 +32,6 @@ #include "application_manager/commands/hmi/navi_start_stream_request.h" #include "application_manager/application_manager_impl.h" -#include "application_manager/application_impl.h" namespace application_manager { @@ -44,25 +43,60 @@ NaviStartStreamRequest::NaviStartStreamRequest( } NaviStartStreamRequest::~NaviStartStreamRequest() { + LOG4CXX_AUTO_TRACE(logger_); } void NaviStartStreamRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); - ApplicationSharedPtr app = - ApplicationManagerImpl::instance()->active_application(); + subscribe_on_event(hmi_apis::FunctionID::Navigation_StartStream, + correlation_id()); + SendRequest(); +} + +void NaviStartStreamRequest::on_event(const event_engine::Event& event) { + LOG4CXX_AUTO_TRACE(logger_); + + ApplicationManagerImpl* app_mgr = ApplicationManagerImpl::instance(); + if (!app_mgr) { + LOG4CXX_ERROR_EXT(logger_, "Application manager not found"); + return; + } + ApplicationSharedPtr app = app_mgr->application_by_hmi_app(application_id()); if (!app) { - LOG4CXX_ERROR_EXT(logger_, "NaviStartStreamRequest no active app!"); + LOG4CXX_ERROR_EXT(logger_, + "NaviStartStreamRequest aborted. Application not found"); return; } - SendRequest(); - app->StartVideoStartStreamRetryTimer(); + const smart_objects::SmartObject& message = event.smart_object(); + switch (event.id()) { + case hmi_apis::FunctionID::Navigation_StartStream: { + LOG4CXX_INFO(logger_, "Received StartStream event"); + + const hmi_apis::Common_Result::eType code = + static_cast<hmi_apis::Common_Result::eType>( + message[strings::params][hmi_response::code].asInt()); + + if (hmi_apis::Common_Result::SUCCESS == code) { + LOG4CXX_INFO(logger_, "NaviStartStreamResponse SUCCESS"); + if (app_mgr->IsStreamingAllowed(app->app_id(), ServiceType::kMobileNav)) { + app->set_video_streaming_started(true); + } else { + LOG4CXX_INFO(logger_, + "NaviStartStreamRequest aborted. Application can not stream"); + } + } + break; + } + default: { + LOG4CXX_ERROR(logger_,"Received unknown event" << event.id()); + return; + } + } } } // namespace commands } // namespace application_manager - - diff --git a/src/components/application_manager/src/commands/hmi/navi_start_stream_response.cc b/src/components/application_manager/src/commands/hmi/navi_start_stream_response.cc index e8da6e1276..a65e116796 100644 --- a/src/components/application_manager/src/commands/hmi/navi_start_stream_response.cc +++ b/src/components/application_manager/src/commands/hmi/navi_start_stream_response.cc @@ -30,8 +30,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include "application_manager/commands/hmi/navi_start_stream_response.h" -#include "application_manager/application_manager_impl.h" -#include "application_manager/application_impl.h" +#include "application_manager/event_engine/event_dispatcher.h" namespace application_manager { @@ -47,22 +46,9 @@ NaviStartStreamResponse::~NaviStartStreamResponse() { void NaviStartStreamResponse::Run() { LOG4CXX_AUTO_TRACE(logger_); - ApplicationSharedPtr app = - ApplicationManagerImpl::instance()->active_application(); - - if (!app) { - LOG4CXX_ERROR_EXT(logger_, "NaviStartStreamResponse no active app!"); - return; - } - - const hmi_apis::Common_Result::eType code = - static_cast<hmi_apis::Common_Result::eType>( - (*message_)[strings::params][hmi_response::code].asInt()); - - if (hmi_apis::Common_Result::SUCCESS == code) { - LOG4CXX_INFO(logger_, "NaviStartStreamResponse SUCCESS"); - app->set_hmi_supports_navi_video_streaming(true); - } + event_engine::Event event(hmi_apis::FunctionID::Navigation_StartStream); + event.set_smart_object(*message_); + event.raise(); } } // namespace commands |