diff options
Diffstat (limited to 'src/components/application_manager/include/application_manager/application_impl.h')
-rw-r--r-- | src/components/application_manager/include/application_manager/application_impl.h | 185 |
1 files changed, 133 insertions, 52 deletions
diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h index dadfce092..f23b53632 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -1,5 +1,5 @@ -/** - * Copyright (c) 2013, Ford Motor Company +/* + * Copyright (c) 2015, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,19 +37,27 @@ #include <set> #include <vector> #include <utility> +#include <list> #include "utils/date_time.h" #include "application_manager/application_data_impl.h" #include "application_manager/usage_statistics.h" +#include "application_manager/hmi_state.h" +#include "protocol_handler/protocol_handler.h" + #include "connection_handler/device.h" #include "utils/timer_thread.h" #include "utils/lock.h" namespace usage_statistics { + class StatisticsManager; } // namespace usage_statistics namespace application_manager { +using namespace utils; +using namespace timer; + namespace mobile_api = mobile_apis; class ApplicationImpl : public virtual InitialApplicationDataImpl, @@ -70,23 +78,41 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, const smart_objects::SmartObject* active_message() const; void CloseActiveMessage(); bool IsFullscreen() const; - bool MakeFullscreen(); - bool IsAudible() const; - void MakeNotAudible(); - - // navi - bool allowed_support_navigation() const; - void set_allowed_support_navigation(bool allow); - bool hmi_supports_navi_video_streaming() const; - void set_hmi_supports_navi_video_streaming(bool supports); - bool hmi_supports_navi_audio_streaming() const; - void set_hmi_supports_navi_audio_streaming(bool supports); + + /** + * @brief change supporting COMMUNICATION NAVIGATION + */ + virtual void ChangeSupportingAppHMIType(); + + inline bool is_navi() const { return is_navi_; } + void set_is_navi(bool allow); + + bool video_streaming_approved() const; + void set_video_streaming_approved(bool state); + bool audio_streaming_approved() const; + void set_audio_streaming_approved(bool state); + + bool video_streaming_allowed() const; + void set_video_streaming_allowed(bool state); + bool audio_streaming_allowed() const; + void set_audio_streaming_allowed(bool state); + + void StartStreaming( + protocol_handler::ServiceType service_type); + void StopStreaming( + protocol_handler::ServiceType service_type); + + void SuspendStreaming( + protocol_handler::ServiceType service_type); + void WakeUpStreaming( + protocol_handler::ServiceType service_type); virtual bool is_voice_communication_supported() const; virtual void set_voice_communication_supported( bool is_voice_communication_supported); inline bool app_allowed() const; bool has_been_activated() const; + bool set_activated(bool is_active); const Version& version() const; void set_hmi_application_id(uint32_t hmi_app_id); @@ -95,16 +121,16 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, const std::string& name() const; const std::string folder_name() const; bool is_media_application() const; - const mobile_api::HMILevel::eType& hmi_level() const; + virtual bool is_foreground() const; + virtual void set_foreground(bool is_foreground); + virtual const mobile_api::HMILevel::eType hmi_level() const; const uint32_t put_file_in_none_count() const; const uint32_t delete_file_in_none_count() const; const uint32_t list_files_in_none_count() const; - const mobile_api::SystemContext::eType& system_context() const; - inline const mobile_api::AudioStreamingState::eType& - audio_streaming_state() const; + const mobile_api::SystemContext::eType system_context() const; + inline const mobile_apis::AudioStreamingState::eType audio_streaming_state() const; const std::string& app_icon_path() const; connection_handler::DeviceHandle device() const; - void set_tts_speak_state(bool state_tts_speak); bool tts_speak_state(); void set_tts_properties_in_none(bool active); bool tts_properties_in_none(); @@ -113,20 +139,16 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, void set_version(const Version& ver); void set_name(const std::string& name); void set_is_media_application(bool is_media); - void set_hmi_level(const mobile_api::HMILevel::eType& hmi_level); void increment_put_file_in_none_count(); void increment_delete_file_in_none_count(); void increment_list_files_in_none_count(); - void set_system_context( - const mobile_api::SystemContext::eType& system_context); - void set_audio_streaming_state( - const mobile_api::AudioStreamingState::eType& state); bool set_app_icon_path(const std::string& path); void set_app_allowed(const bool& allowed); void set_device(connection_handler::DeviceHandle device); virtual uint32_t get_grammar_id() const; virtual void set_grammar_id(uint32_t value); + virtual void set_protocol_version(const ProtocolVersion& protocol_version); virtual ProtocolVersion protocol_version() const; @@ -146,18 +168,21 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, bool IsSubscribedToIVI(uint32_t vehicle_info_type_); bool UnsubscribeFromIVI(uint32_t vehicle_info_type_); + /** + * @brief ResetDataInNone reset data counters in NONE + */ + virtual void ResetDataInNone(); + virtual const std::set<mobile_apis::ButtonName::eType>& SubscribedButtons() const; virtual const std::set<uint32_t>& SubscribesIVI() const; - virtual uint32_t nextHash(); - virtual uint32_t curHash() const; - + virtual const std::string& curHash() const; /** * @brief Change Hash for current application * and send notification to mobile * @return updated_hash */ - virtual uint32_t UpdateHash(); + virtual void UpdateHash(); UsageStatistics& usage_report(); @@ -176,7 +201,53 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, */ virtual bool IsAudioApplication() const; - protected: + /* + * @brief SetRegularState set permanent state of application + * @param state state to setup + */ + virtual void SetRegularState(HmiStatePtr state); + + /** + * @brief AddHMIState the function that will change application's + * hmi state. + * + * @param app_id id of the application whose hmi level should be changed. + * + * @param state new hmi state for certain application. + */ + virtual void AddHMIState(HmiStatePtr state); + + /** + * @brief RemoveHMIState the function that will turn back hmi_level after end + * of some event + * + * @param app_id id of the application whose hmi level should be changed. + * + * @param state_id that should be removed + */ + virtual void RemoveHMIState(HmiState::StateID state_id); + + /** + * @brief HmiState of application within active events PhoneCall, TTS< etc ... + * @return Active HmiState of application + */ + virtual const HmiStatePtr CurrentHmiState() const; + + /** + * @brief RegularHmiState of application without active events VR, TTS etc ... + * @return HmiState of application + */ + virtual const HmiStatePtr RegularHmiState() const; + + uint32_t audio_stream_retry_number() const; + + void set_audio_stream_retry_number(const uint32_t& audio_stream_retry_number); + + uint32_t video_stream_retry_number() const; + + void set_video_stream_retry_number(const uint32_t& video_stream_retry_number); + + protected: /** * @brief Clean up application folder. Persistent files will stay @@ -189,18 +260,22 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, void LoadPersistentFiles(); private: + typedef SharedPtr<TimerThread<ApplicationImpl>> ApplicationTimerPtr; - // interfaces for NAVI retry sequence - bool video_stream_retry_active() const; - void set_video_stream_retry_active(bool active); - bool audio_stream_retry_active() const; - void set_audio_stream_retry_active(bool active); - void OnVideoStreamRetry(); - void OnAudioStreamRetry(); + /** + * @brief Callback for video streaming suspend timer. + * Suspends video streaming process for application + */ + void OnVideoStreamSuspend(); - uint32_t hash_val_; - uint32_t grammar_id_; + /** + * @brief Callback for audio streaming suspend timer. + * Suspends audio streaming process for application + */ + void OnAudioStreamSuspend(); + std::string hash_val_; + uint32_t grammar_id_; Version version_; std::string app_name_; @@ -208,20 +283,25 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, uint32_t app_id_; smart_objects::SmartObject* active_message_; bool is_media_; - bool allowed_support_navigation_; - bool hmi_supports_navi_video_streaming_; - bool hmi_supports_navi_audio_streaming_; + bool is_navi_; + + bool video_streaming_approved_; + bool audio_streaming_approved_; + bool video_streaming_allowed_; + bool audio_streaming_allowed_; + bool video_streaming_suspended_; + bool audio_streaming_suspended_; + sync_primitives::Lock video_streaming_suspended_lock_; + sync_primitives::Lock audio_streaming_suspended_lock_; + bool is_app_allowed_; bool has_been_activated_; - bool tts_speak_state_; bool tts_properties_in_none_; bool tts_properties_in_full_; - mobile_api::HMILevel::eType hmi_level_; + bool is_foreground_; uint32_t put_file_in_none_count_; uint32_t delete_file_in_none_count_; uint32_t list_files_in_none_count_; - mobile_api::SystemContext::eType system_context_; - mobile_api::AudioStreamingState::eType audio_streaming_state_; std::string app_icon_path_; connection_handler::DeviceHandle device_; @@ -232,14 +312,12 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, ProtocolVersion protocol_version_; bool is_voice_communication_application_; - // NAVI retry stream - volatile bool is_video_stream_retry_active_; - volatile bool is_audio_stream_retry_active_; uint32_t video_stream_retry_number_; uint32_t audio_stream_retry_number_; - utils::SharedPtr<timer::TimerThread<ApplicationImpl>> video_stream_retry_timer_; - utils::SharedPtr<timer::TimerThread<ApplicationImpl>> audio_stream_retry_timer_; - + uint32_t video_stream_suspend_timeout_; + uint32_t audio_stream_suspend_timeout_; + ApplicationTimerPtr video_stream_suspend_timer_; + ApplicationTimerPtr audio_stream_suspend_timer_; /** * @brief Defines number per time in seconds limits @@ -272,9 +350,12 @@ uint32_t ApplicationImpl::app_id() const { return app_id_; } -const mobile_api::AudioStreamingState::eType& +const mobile_api::AudioStreamingState::eType ApplicationImpl::audio_streaming_state() const { - return audio_streaming_state_; + using namespace mobile_apis; + const HmiStatePtr hmi_state = CurrentHmiState(); + return hmi_state ? hmi_state->audio_streaming_state() : + AudioStreamingState::INVALID_ENUM; } bool ApplicationImpl::app_allowed() const { |