diff options
Diffstat (limited to 'src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h')
-rw-r--r-- | src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h | 135 |
1 files changed, 125 insertions, 10 deletions
diff --git a/src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h b/src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h index b7512df28b..e749118140 100644 --- a/src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h +++ b/src/components/application_manager/include/application_manager/resumption/resume_ctrl_impl.h @@ -33,6 +33,8 @@ #ifndef SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_RESUMPTION_RESUME_CTRL_IMPL_H_ #define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_RESUMPTION_RESUME_CTRL_IMPL_H_ +#include "application_manager/resumption/resume_ctrl.h" + #include <stdint.h> #include <vector> #include <map> @@ -46,7 +48,6 @@ #include "smart_objects/smart_object.h" #include "application_manager/application.h" #include "application_manager/resumption/resumption_data.h" -#include "application_manager/resumption/resume_ctrl.h" #include "utils/timer.h" namespace resumption { @@ -129,10 +130,28 @@ class ResumeCtrlImpl : public ResumeCtrl, void OnSuspend() OVERRIDE; /** + * @brief Processes resumption data after receiving signal "Ignition Off" + */ + void OnIgnitionOff() OVERRIDE; + + /** * @brief Processes resumption data after receiving signal "Awake" */ void OnAwake() OVERRIDE; + void SaveLowVoltageTime() OVERRIDE; + + void SaveWakeUpTime() OVERRIDE; + + /** + * @brief Checks if SDL has already received OnExitAllApplication notification + * with "SUSPEND" reason + * + * @return Returns TRUE if SDL has received OnExitAllApplication notification + * with reason "SUSPEND" otherwise returns FALSE + */ + bool is_suspended() const OVERRIDE; + /** * @brief Method stops timer "RsmCtrlPercist" when SDL * receives OnExitAllApplication notification @@ -141,6 +160,13 @@ class ResumeCtrlImpl : public ResumeCtrl, void StopSavePersistentDataTimer() OVERRIDE; /** + * @brief Check if all IGNITION OFF and IGNITION ON records + * saved in resumption data base + * @return True if all records saved, otherwise False + */ + bool CheckIgnCyclesData() const; + + /** * @brief Method stops restore_hmi_level_timer_ "RsmCtrlRstore" in OnSuspend() */ void StopRestoreHmiLevelTimer(); @@ -164,6 +190,13 @@ class ResumeCtrlImpl : public ResumeCtrl, app_mngr::ApplicationSharedPtr application) OVERRIDE; /** + * @brief Retry resumption of an app if it has been disabled or limited + * due to absence of high-bandwidth transport. + * @param app_id ID of the app to resume + */ + void RetryResumption(const uint32_t app_id) OVERRIDE; + + /** * @brief Check if there are all files need for resumption * @param application that is need to be restored * @return true if it all files exist, otherwise return false @@ -279,14 +312,30 @@ class ResumeCtrlImpl : public ResumeCtrl, * @brief Method starts timer "RsmCtrlPercist" when * SDL receives onAwakeSDL notification */ - void StartSavePersistentDataTimer(); + void StartSavePersistentDataTimer() OVERRIDE; #ifdef BUILD_TESTS void set_resumption_storage( - utils::SharedPtr<ResumptionData> mock_storage) OVERRIDE; + std::shared_ptr<ResumptionData> mock_storage) OVERRIDE; + + bool get_resumption_active() const OVERRIDE; #endif // BUILD_TESTS private: /** + * @brief Returns Low Voltage signal timestamp + * @return Low Voltage event timestamp if event LOW VOLTAGE event occures + * otherwise 0 + */ + time_t LowVoltageTime() const; + + /** + * @brief Returns Wake Up signal timestamp + * @return Wake Up timestamp if Wake Up signal occures + * otherwise 0 + */ + time_t WakeUpTime() const; + + /** * @brief restores saved data of application * @param application contains application for which restores data * @return true if success, otherwise return false @@ -301,6 +350,12 @@ class ResumeCtrlImpl : public ResumeCtrl, void SaveDataOnTimer(); /** + * @brief FinalPersistData persists ResumptionData last time and stops + * persistent data timer to avoid further persisting + */ + void FinalPersistData(); + + /** * @brief AddFiles allows to add files for the application * which should be resumed * @param application application which will be resumed @@ -361,11 +416,27 @@ class ResumeCtrlImpl : public ResumeCtrl, void AddWayPointsSubscription(app_mngr::ApplicationSharedPtr application, const smart_objects::SmartObject& saved_app); + /** + * @brief Checks if saved HMI level is allowed for resumption + * by Ignition Cycle restrictions + * @param saved_app application specific section from backup file + * @return True if allowed , otherwise - False + */ bool CheckIgnCycleRestrictions(const smart_objects::SmartObject& saved_app); - bool DisconnectedJustBeforeIgnOff( - const smart_objects::SmartObject& saved_app); + /** + * @brief Checks if saved HMI level is allowed for resumption + * by Low Voltage restrictions + * @param saved_app application specific section from backup file + * @return True if allowed , otherwise - False + */ + bool CheckLowVoltageRestrictions(const smart_objects::SmartObject& saved_app); + /** + * @brief Checks if saved HMI level is applicable for resumption + * @param saved_app application specific section from backup file + * @return True fs allowed , otherwise - False + */ bool CheckAppRestrictions(app_mngr::ApplicationConstSharedPtr application, const smart_objects::SmartObject& saved_app); @@ -380,10 +451,38 @@ class ResumeCtrlImpl : public ResumeCtrl, /** * @brief CheckDelayAfterIgnOn should check if SDL was started less - * then N secconds ago. N will be readed from profile. - * @return true if SDL started N secconds ago, otherwise return false + * than N seconds ago. N will be read from profile. + * @return true if SDL started N seconds ago, otherwise return false */ - bool CheckDelayAfterIgnOn(); + bool CheckDelayAfterIgnOn() const; + + /** + * @brief CheckDelayBeforeIgnOff checks if app was unregistered less + * than N seconds before Ignition OFF. N will be read from profile. + * @return true if app was disconnected within timeframe of N seconds before + * Ignition Off, + * otherwise return false + */ + bool CheckDelayBeforeIgnOff( + const smart_objects::SmartObject& saved_app) const; + + /** + * @brief CheckDelayAfterWakeUp should check if app was registered + * during the first N seconds after WakeUp signal. N will be read from + * profile. + * @return true if app registered within N seconds after WakeUp, otherwise + * return false + */ + bool CheckDelayAfterWakeUp() const; + + /** + * @brief CheckDelayBeforeLowVoltage checks if app was unregistered within + * N seconds before Low Voltage signal. N will be read from profile. + * @return true if app was disconnected within timeframe of N seconds before + * Low Voltage , otherwise return false + */ + bool CheckDelayBeforeLowVoltage( + const smart_objects::SmartObject& saved_app) const; typedef std::pair<uint32_t, uint32_t> application_timestamp; @@ -418,7 +517,7 @@ class ResumeCtrlImpl : public ResumeCtrl, * @brief Get the last ignition off time from LastState * @return the last ignition off time from LastState */ - time_t GetIgnOffTime(); + time_t GetIgnOffTime() const; /** * @brief Setup IgnOff time to LastState @@ -480,6 +579,19 @@ class ResumeCtrlImpl : public ResumeCtrl, const application_manager::ApplicationSharedPtr application) const; /** + * @brief Retrieve the HMI level of the app when high-bandwidth transport + *isn't available + * + * The value is configured through smartDeviceLink.ini file + * + * @param application an instance of the app + * @return HMI level that the app is allowed when high-bandwidth transport + *isn't available + */ + mobile_apis::HMILevel::eType GetHmiLevelOnLowBandwidthTransport( + app_mngr::ApplicationConstSharedPtr application) const; + + /** *@brief Mapping applications to time_stamps * wait for timer to resume HMI Level * @@ -491,8 +603,11 @@ class ResumeCtrlImpl : public ResumeCtrl, WaitingForTimerList waiting_for_timer_; bool is_resumption_active_; bool is_data_saved_; + bool is_suspended_; time_t launch_time_; - utils::SharedPtr<ResumptionData> resumption_storage_; + time_t low_voltage_time_; + time_t wake_up_time_; + std::shared_ptr<ResumptionData> resumption_storage_; application_manager::ApplicationManager& application_manager_; }; |