summaryrefslogtreecommitdiff
path: root/src/components/application_manager/include/application_manager/application_impl.h
diff options
context:
space:
mode:
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.h245
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_