summaryrefslogtreecommitdiff
path: root/src/components/include/application_manager/application_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include/application_manager/application_manager.h')
-rw-r--r--src/components/include/application_manager/application_manager.h103
1 files changed, 57 insertions, 46 deletions
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index e8f646c1e5..fa2e8941b8 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -34,23 +34,20 @@
#define SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_APPLICATION_MANAGER_H_
#include <ctime>
+#include <set>
#include <string>
#include <vector>
-#include <set>
#include "application_manager/application.h"
-#include "application_manager/hmi_capabilities.h"
#include "application_manager/commands/command.h"
-#include "application_manager/command_factory.h"
#include "connection_handler/connection_handler.h"
#include "utils/data_accessor.h"
-#include "telemetry_monitor/telemetry_observable.h"
-#include "application_manager/policies/policy_handler_interface.h"
#include "application_manager/application_manager_settings.h"
-#include "application_manager/state_controller.h"
#include "application_manager/hmi_interfaces.h"
-#include "policy/policy_types.h"
#include "application_manager/plugin_manager/rpc_plugin_manager.h"
+#include "application_manager/state_controller.h"
+#include "policy/policy_types.h"
+#include "telemetry_monitor/telemetry_observable.h"
namespace resumption {
class LastState;
@@ -77,6 +74,10 @@ namespace resumption {
class ResumeCtrl;
}
+namespace policy {
+class PolicyHandlerInterface;
+}
+
namespace application_manager {
namespace event_engine {
@@ -95,9 +96,12 @@ class StateControllerImpl;
struct CommandParametersPermissions;
using policy::RPCParams;
typedef std::vector<ApplicationSharedPtr> AppSharedPtrs;
-struct ApplicationsAppIdSorter {
+struct ApplicationsSorter {
bool operator()(const ApplicationSharedPtr lhs,
const ApplicationSharedPtr rhs) const {
+ if (lhs->app_id() == rhs->app_id()) {
+ return lhs->device() < rhs->device();
+ }
return lhs->app_id() < rhs->app_id();
}
};
@@ -111,11 +115,17 @@ struct ApplicationsPolicyAppIdSorter {
}
};
-typedef std::set<ApplicationSharedPtr, ApplicationsAppIdSorter> ApplicationSet;
+typedef std::set<ApplicationSharedPtr, ApplicationsSorter> ApplicationSet;
typedef std::set<ApplicationSharedPtr, ApplicationsPolicyAppIdSorter>
AppsWaitRegistrationSet;
+/**
+ * @brief ReregisterWaitList is list of applications expected to be
+ * re-registered after transport switching is complete
+ */
+typedef std::vector<ApplicationSharedPtr> ReregisterWaitList;
+
// typedef for Applications list iterator
typedef ApplicationSet::iterator ApplicationSetIt;
@@ -156,6 +166,7 @@ class ApplicationManager {
virtual DataAccessor<ApplicationSet> applications() const = 0;
virtual DataAccessor<AppsWaitRegistrationSet> pending_applications()
const = 0;
+ virtual DataAccessor<ReregisterWaitList> reregister_applications() const = 0;
virtual ApplicationSharedPtr application(uint32_t app_id) const = 0;
virtual ApplicationSharedPtr active_application() const = 0;
@@ -177,16 +188,19 @@ class ApplicationManager {
virtual ApplicationSharedPtr pending_application_by_policy_id(
const std::string& policy_app_id) const = 0;
+ virtual ApplicationSharedPtr reregister_application_by_policy_id(
+ const std::string& policy_app_id) const = 0;
+
virtual AppSharedPtrs applications_by_button(uint32_t button) = 0;
virtual AppSharedPtrs applications_with_navi() = 0;
/**
- * @brief application find application by device and policy identifier
- * @param device_id device id
- * @param policy_app_id poilcy identifier
- * @return pointer to application in case if application exist, in other case
- * return empty shared pointer
- */
+ * @brief application find application by device and policy identifier
+ * @param device_id device id
+ * @param policy_app_id poilcy identifier
+ * @return pointer to application in case if application exist, in other case
+ * return empty shared pointer
+ */
virtual ApplicationSharedPtr application(
const std::string& device_id, const std::string& policy_app_id) const = 0;
@@ -279,15 +293,6 @@ class ApplicationManager {
mobile_apis::HMILevel::eType to) = 0;
/**
- * @brief Sends HMI status notification to mobile
- *
- * @param application_impl application with changed HMI status
- *
- **/
- virtual void SendHMIStatusNotification(
- const std::shared_ptr<Application> app) = 0;
-
- /**
* @brief Checks if driver distraction state is valid, creates message
* which is sent to the application if allowed, otherwise it is added
* to a list of postponed messages.
@@ -467,11 +472,11 @@ class ApplicationManager {
* @param vehicle_info Enum value of type of vehicle data
* @param new value (for integer values currently) of vehicle data
*/
- virtual void IviInfoUpdated(mobile_apis::VehicleDataType::eType vehicle_info,
- int value) = 0;
+ virtual void IviInfoUpdated(const std::string& vehicle_info, int value) = 0;
- virtual ApplicationSharedPtr RegisterApplication(const std::shared_ptr<
- smart_objects::SmartObject>& request_for_registration) = 0;
+ virtual ApplicationSharedPtr RegisterApplication(
+ const std::shared_ptr<smart_objects::SmartObject>&
+ request_for_registration) = 0;
virtual void SendUpdateAppList() = 0;
@@ -606,8 +611,8 @@ class ApplicationManager {
/**
* @brief Checks, if given RPC is allowed at current HMI level for specific
* application in policy table
- * @param policy_app_id Application id
- * @param hmi_level Current HMI level of application
+ * @param app Application
+ * @param window_id id of application's window
* @param function_id FunctionID of RPC
* @param params_permissions Permissions for RPC parameters (e.g.
* SubscribeVehicleData) defined in policy table
@@ -615,6 +620,7 @@ class ApplicationManager {
*/
virtual mobile_apis::Result::eType CheckPolicyPermissions(
const ApplicationSharedPtr app,
+ const WindowID window_id,
const std::string& function_id,
const RPCParams& rpc_params,
CommandParametersPermissions* params_permissions = NULL) = 0;
@@ -635,19 +641,22 @@ class ApplicationManager {
/**
* @brief IsAppInReconnectMode check if application belongs to session
* affected by transport switching at the moment
+ * @param device_id device indentifier
* @param policy_app_id Application id
* @return True if application is registered within session being switched,
* otherwise - false
*/
- virtual bool IsAppInReconnectMode(const std::string& policy_app_id) const = 0;
+ virtual bool IsAppInReconnectMode(
+ const connection_handler::DeviceHandle& device_id,
+ const std::string& policy_app_id) const = 0;
virtual resumption::ResumeCtrl& resume_controller() = 0;
/**
- * @brief hmi_interfaces getter for hmi_interfaces component, that handle
- * hmi_instrfaces state
- * @return reference to hmi_interfaces component
- */
+ * @brief hmi_interfaces getter for hmi_interfaces component, that handle
+ * hmi_instrfaces state
+ * @return reference to hmi_interfaces component
+ */
virtual HmiInterfaces& hmi_interfaces() = 0;
virtual app_launch::AppLaunchCtrl& app_launch_ctrl() = 0;
@@ -675,19 +684,19 @@ class ApplicationManager {
virtual void AddAppToTTSGlobalPropertiesList(const uint32_t app_id) = 0;
/**
- * Generate grammar ID
- *
- * @return New grammar ID
- */
+ * Generate grammar ID
+ *
+ * @return New grammar ID
+ */
virtual uint32_t GenerateGrammarID() = 0;
virtual policy::DeviceConsent GetUserConsentForDevice(
const std::string& device_id) const = 0;
/**
- * @brief Handle sequence for unauthorized application
- * @param app_id Application id
- */
+ * @brief Handle sequence for unauthorized application
+ * @param app_id Application id
+ */
virtual void OnAppUnauthorized(const uint32_t& app_id) = 0;
virtual bool ActivateApplication(ApplicationSharedPtr app) = 0;
@@ -705,6 +714,7 @@ class ApplicationManager {
/**
* @brief CreateRegularState create regular HMI state for application
* @param app Application
+ * @param window_type type of window
* @param hmi_level of returned state
* @param audio_state of returned state
* @param system_context of returned state
@@ -712,10 +722,11 @@ class ApplicationManager {
*/
virtual HmiStatePtr CreateRegularState(
std::shared_ptr<Application> app,
- mobile_apis::HMILevel::eType hmi_level,
- mobile_apis::AudioStreamingState::eType audio_state,
- mobile_apis::VideoStreamingState::eType video_state,
- mobile_apis::SystemContext::eType system_context) const = 0;
+ const mobile_apis::WindowType::eType window_type,
+ const mobile_apis::HMILevel::eType hmi_level,
+ const mobile_apis::AudioStreamingState::eType audio_state,
+ const mobile_apis::VideoStreamingState::eType video_state,
+ const mobile_apis::SystemContext::eType system_context) const = 0;
/**
* @brief Checks if application can stream (streaming service is started and