diff options
author | Alexander Kutsan <AKutsan@luxoft.com> | 2016-08-26 18:48:22 +0300 |
---|---|---|
committer | Alexander Kutsan <AKutsan@luxoft.com> | 2016-08-26 18:48:57 +0300 |
commit | d73e6dc8724c5799fae14efd4dcb214af74e4904 (patch) | |
tree | 9ebed8b422490c4d669e90e70783e4f5b55b65c9 /src/components/application_manager/include/application_manager/application_impl.h | |
parent | c201c11a35d360c0b96f36b103a2590bfaeb6026 (diff) | |
parent | 61ef8c42badb879216f53d240e1101b9f83a9bb7 (diff) | |
download | sdl_core-d73e6dc8724c5799fae14efd4dcb214af74e4904.tar.gz |
Merge branch 'release/4.1.0'
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 | 245 |
1 files changed, 153 insertions, 92 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 f23b53632f..75496b2761 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -38,6 +38,7 @@ #include <vector> #include <utility> #include <list> +#include <stdint.h> #include "utils/date_time.h" #include "application_manager/application_data_impl.h" @@ -46,8 +47,10 @@ #include "protocol_handler/protocol_handler.h" #include "connection_handler/device.h" -#include "utils/timer_thread.h" #include "utils/lock.h" +#include "utils/atomic_object.h" +#include "utils/custom_string.h" +#include "utils/timer.h" namespace usage_statistics { @@ -59,14 +62,18 @@ using namespace utils; using namespace timer; namespace mobile_api = mobile_apis; +namespace custom_str = custom_string; class ApplicationImpl : public virtual InitialApplicationDataImpl, - public virtual DynamicApplicationDataImpl { + public virtual DynamicApplicationDataImpl { public: - ApplicationImpl(uint32_t application_id, - const std::string& mobile_app_id, - const std::string& app_name, - utils::SharedPtr<usage_statistics::StatisticsManager> statistics_manager); + ApplicationImpl( + uint32_t application_id, + const std::string& policy_app_id, + const std::string& mac_address, + const custom_str::CustomString& app_name, + utils::SharedPtr<usage_statistics::StatisticsManager> statistics_manager, + ApplicationManager& application_manager); ~ApplicationImpl(); @@ -84,7 +91,9 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, */ virtual void ChangeSupportingAppHMIType(); - inline bool is_navi() const { return is_navi_; } + inline bool is_navi() const { + return is_navi_; + } void set_is_navi(bool allow); bool video_streaming_approved() const; @@ -97,15 +106,11 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, 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); + void StartStreaming(protocol_handler::ServiceType service_type); + void StopStreamingForce(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( @@ -118,43 +123,46 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, void set_hmi_application_id(uint32_t hmi_app_id); inline uint32_t hmi_app_id() const; inline uint32_t app_id() const; - const std::string& name() const; + const custom_str::CustomString& name() const; + void set_folder_name(const std::string& folder_name) OVERRIDE; const std::string folder_name() const; bool is_media_application() const; - virtual bool is_foreground() const; - virtual void set_foreground(bool is_foreground); - virtual const mobile_api::HMILevel::eType hmi_level() const; + bool is_foreground() const OVERRIDE; + void set_foreground(const bool is_foreground) OVERRIDE; + const mobile_apis::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_apis::AudioStreamingState::eType audio_streaming_state() const; + inline const mobile_apis::AudioStreamingState::eType audio_streaming_state() + const; const std::string& app_icon_path() const; connection_handler::DeviceHandle device() const; - bool tts_speak_state(); + const std::string& mac_address() const OVERRIDE; void set_tts_properties_in_none(bool active); bool tts_properties_in_none(); void set_tts_properties_in_full(bool active); bool tts_properties_in_full(); void set_version(const Version& ver); - void set_name(const std::string& name); + void set_name(const custom_str::CustomString& name); void set_is_media_application(bool is_media); void increment_put_file_in_none_count(); void increment_delete_file_in_none_count(); void increment_list_files_in_none_count(); bool set_app_icon_path(const std::string& path); - void set_app_allowed(const bool& allowed); + 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; - bool AddFile(AppFile& file); - bool UpdateFile(AppFile& file); + virtual void set_is_resuming(bool is_resuming); + virtual bool is_resuming() const; + bool AddFile(const AppFile& file); + bool UpdateFile(const AppFile& file); bool DeleteFile(const std::string& file_name); virtual const AppFilesMap& getAppFiles() const; @@ -164,24 +172,29 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, bool IsSubscribedToButton(mobile_apis::ButtonName::eType btn_name); bool UnsubscribeFromButton(mobile_apis::ButtonName::eType btn_name); - bool SubscribeToIVI(uint32_t vehicle_info_type_); - bool IsSubscribedToIVI(uint32_t vehicle_info_type_); - bool UnsubscribeFromIVI(uint32_t vehicle_info_type_); + bool SubscribeToIVI(uint32_t vehicle_info_type) OVERRIDE; + bool IsSubscribedToIVI(uint32_t vehicle_info_type) const OVERRIDE; + bool UnsubscribeFromIVI(uint32_t vehicle_info_type) OVERRIDE; + DataAccessor<VehicleInfoSubscriptions> SubscribedIVI() const OVERRIDE; + inline bool IsRegistered() const OVERRIDE; /** * @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 DataAccessor<ButtonSubscriptions> SubscribedButtons() const OVERRIDE; virtual const std::string& curHash() const; - /** - * @brief Change Hash for current application - * and send notification to mobile - * @return updated_hash - */ +#ifdef CUSTOMER_PASA + virtual bool flag_sending_hash_change_after_awake() const; + virtual void set_flag_sending_hash_change_after_awake(bool flag); +#endif // CUSTOMER_PASA + /** + * @brief Change Hash for current application + * and send notification to mobile + * @return updated_hash + */ virtual void UpdateHash(); UsageStatistics& usage_report(); @@ -194,20 +207,36 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, virtual void UnsubscribeFromSoftButtons(int32_t cmd_id); + virtual bool is_application_data_changed() const; + + virtual void set_is_application_data_changed(bool state_application_data); + /** - * @brief Check's if it is media, voice communication or navigation application + * @brief Check's if it is media, voice communication or navigation + * application * * @return true if application is media, voice communication or navigation */ virtual bool IsAudioApplication() const; - /* + /** * @brief SetRegularState set permanent state of application + * * @param state state to setup */ virtual void SetRegularState(HmiStatePtr state); /** + * @brief SetPostponedState sets postponed state to application. + * This state could be set as regular later + * + * @param state state to setup + */ + virtual void SetPostponedState(HmiStatePtr state); + + virtual void RemovePostponedState(); + + /** * @brief AddHMIState the function that will change application's * hmi state. * @@ -239,6 +268,14 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, */ virtual const HmiStatePtr RegularHmiState() const; + /** + * @brief PostponedHmiState returns postponed hmi state of application + * if it's present + * + * @return Postponed hmi state of application + */ + virtual const HmiStatePtr PostponedHmiState() const; + uint32_t audio_stream_retry_number() const; void set_audio_stream_retry_number(const uint32_t& audio_stream_retry_number); @@ -247,21 +284,25 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, void set_video_stream_retry_number(const uint32_t& video_stream_retry_number); - protected: + /** + * @brief Load persistent files from application folder. + */ + void LoadPersistentFiles() OVERRIDE; /** - * @brief Clean up application folder. Persistent files will stay + * @brief Get available app space + * @param name of the app folder(make + mobile app id) + * @return free app space. */ - void CleanupFiles(); + uint32_t GetAvailableDiskSpace() OVERRIDE; + protected: /** - * @brief Load persistent files from application folder. + * @brief Clean up application folder. Persistent files will stay */ - void LoadPersistentFiles(); + void CleanupFiles(); private: - typedef SharedPtr<TimerThread<ApplicationImpl>> ApplicationTimerPtr; - /** * @brief Callback for video streaming suspend timer. * Suspends video streaming process for application @@ -269,55 +310,68 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, void OnVideoStreamSuspend(); /** + * @brief Stops video streaming for application + */ + inline void StopNaviStreaming(); + + /** + * @brief Stops audio streaming for application + */ + inline void StopAudioStreaming(); + + /** * @brief Callback for audio streaming suspend timer. * Suspends audio streaming process for application */ void OnAudioStreamSuspend(); - std::string hash_val_; - uint32_t grammar_id_; + std::string hash_val_; + uint32_t grammar_id_; Version version_; - std::string app_name_; - uint32_t hmi_app_id_; - uint32_t app_id_; - smart_objects::SmartObject* active_message_; - bool is_media_; - 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_properties_in_none_; - bool tts_properties_in_full_; - bool is_foreground_; - uint32_t put_file_in_none_count_; - uint32_t delete_file_in_none_count_; - uint32_t list_files_in_none_count_; - std::string app_icon_path_; - connection_handler::DeviceHandle device_; - - AppFilesMap app_files_; + custom_str::CustomString app_name_; + uint32_t hmi_app_id_; + uint32_t app_id_; + smart_objects::SmartObject* active_message_; + bool is_media_; + 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_properties_in_none_; + bool tts_properties_in_full_; + bool is_foreground_; + bool is_application_data_changed_; + uint32_t put_file_in_none_count_; + uint32_t delete_file_in_none_count_; + uint32_t list_files_in_none_count_; + std::string app_icon_path_; + connection_handler::DeviceHandle device_; + const std::string mac_address_; + + AppFilesMap app_files_; std::set<mobile_apis::ButtonName::eType> subscribed_buttons_; - std::set<uint32_t> subscribed_vehicle_info_; - UsageStatistics usage_report_; - ProtocolVersion protocol_version_; - bool is_voice_communication_application_; - - uint32_t video_stream_retry_number_; - uint32_t audio_stream_retry_number_; - uint32_t video_stream_suspend_timeout_; - uint32_t audio_stream_suspend_timeout_; - ApplicationTimerPtr video_stream_suspend_timer_; - ApplicationTimerPtr audio_stream_suspend_timer_; + VehicleInfoSubscriptions subscribed_vehicle_info_; + UsageStatistics usage_report_; + ProtocolVersion protocol_version_; + bool is_voice_communication_application_; + sync_primitives::atomic_bool is_resuming_; + + uint32_t video_stream_retry_number_; + uint32_t audio_stream_retry_number_; + uint32_t video_stream_suspend_timeout_; + uint32_t audio_stream_suspend_timeout_; + Timer video_stream_suspend_timer_; + Timer audio_stream_suspend_timer_; /** * @brief Defines number per time in seconds limits @@ -328,17 +382,20 @@ class ApplicationImpl : public virtual InitialApplicationDataImpl, * @brief Defines specific command number per time in seconds limits */ typedef std::map<mobile_apis::FunctionID::eType, TimeToNumberLimit> - CommandNumberTimeLimit; + CommandNumberTimeLimit; /** * @brief Defines id of SoftButton which is related from name of command */ - typedef std::map<int32_t, SoftButtonID> - CommandSoftButtonID; + typedef std::map<int32_t, SoftButtonID> CommandSoftButtonID; CommandNumberTimeLimit cmd_number_to_time_limits_; CommandSoftButtonID cmd_softbuttonid_; // Lock for command soft button id sync_primitives::Lock cmd_softbuttonid_lock_; + mutable sync_primitives::Lock vi_lock_; + sync_primitives::Lock button_lock_; + std::string folder_name_; + ApplicationManager& application_manager_; DISALLOW_COPY_AND_ASSIGN(ApplicationImpl); }; @@ -354,14 +411,18 @@ const mobile_api::AudioStreamingState::eType ApplicationImpl::audio_streaming_state() const { using namespace mobile_apis; const HmiStatePtr hmi_state = CurrentHmiState(); - return hmi_state ? hmi_state->audio_streaming_state() : - AudioStreamingState::INVALID_ENUM; + return hmi_state ? hmi_state->audio_streaming_state() + : AudioStreamingState::INVALID_ENUM; } bool ApplicationImpl::app_allowed() const { return is_app_allowed_; } +bool ApplicationImpl::IsRegistered() const { + return app_state_ == kRegistered; +} + } // namespace application_manager #endif // SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_APPLICATION_IMPL_H_ |