summaryrefslogtreecommitdiff
path: root/src/components/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include')
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h9
-rw-r--r--src/components/include/connection_handler/connection_handler_observer.h6
-rw-r--r--src/components/include/policy/policy_external/policy/policy_manager.h3
-rw-r--r--src/components/include/policy/policy_regular/policy/policy_manager.h3
-rw-r--r--src/components/include/transport_manager/common.h8
-rw-r--r--src/components/include/transport_manager/transport_adapter/device.h28
-rw-r--r--src/components/include/transport_manager/transport_adapter/transport_adapter.h7
-rw-r--r--src/components/include/transport_manager/transport_adapter/transport_adapter_event.h3
-rw-r--r--src/components/include/transport_manager/transport_manager_listener.h7
-rw-r--r--src/components/include/transport_manager/transport_manager_listener_empty.h7
10 files changed, 74 insertions, 7 deletions
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
index d7e9f1cea7..f0859ece38 100644
--- a/src/components/include/application_manager/policies/policy_handler_interface.h
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -427,6 +427,15 @@ class PolicyHandlerInterface {
virtual const PolicySettings& get_settings() const = 0;
virtual const std::string RemoteAppsUrl() const = 0;
+ /**
+ * @brief OnDeviceSwitching Notifies policy manager on device switch event so
+ * policy permissions should be processed accordingly
+ * @param device_id_from Id of device being switched
+ * @param device_id_to Id of device on the new transport
+ */
+ virtual void OnDeviceSwitching(const std::string& device_id_from,
+ const std::string& device_id_to) = 0;
+
#ifdef SDL_REMOTE_CONTROL
/**
* @brief Sets HMI default type for specified application
diff --git a/src/components/include/connection_handler/connection_handler_observer.h b/src/components/include/connection_handler/connection_handler_observer.h
index 7ba2233210..7eb17264eb 100644
--- a/src/components/include/connection_handler/connection_handler_observer.h
+++ b/src/components/include/connection_handler/connection_handler_observer.h
@@ -127,9 +127,11 @@ class ConnectionHandlerObserver {
/**
* @brief OnDeviceSwitchingStart is invoked on device transport switching
* start (e.g. from Bluetooth to USB)
- * @param device_uid UID of device being switched
+ * @param device_from device params being switched to new transport
+ * @param device_to device params on the new transport
*/
- virtual void OnDeviceSwitchingStart(const std::string& device_uid) = 0;
+ virtual void OnDeviceSwitchingStart(const Device& device_from,
+ const Device& device_to) = 0;
/**
* @brief OnDeviceSwitchingFinish is invoked on device trasport switching end
diff --git a/src/components/include/policy/policy_external/policy/policy_manager.h b/src/components/include/policy/policy_external/policy/policy_manager.h
index adf195e3a9..24905671fa 100644
--- a/src/components/include/policy/policy_external/policy/policy_manager.h
+++ b/src/components/include/policy/policy_external/policy/policy_manager.h
@@ -483,6 +483,9 @@ class PolicyManager : public usage_statistics::StatisticsManager {
*/
virtual void OnAppRegisteredOnMobile(const std::string& application_id) = 0;
+ virtual void OnDeviceSwitching(const std::string& device_id_from,
+ const std::string& device_id_to) = 0;
+
/**
* @brief Gets request types for application
* @param policy_app_id Unique application id
diff --git a/src/components/include/policy/policy_regular/policy/policy_manager.h b/src/components/include/policy/policy_regular/policy/policy_manager.h
index 510e35e699..3e90cfc094 100644
--- a/src/components/include/policy/policy_regular/policy/policy_manager.h
+++ b/src/components/include/policy/policy_regular/policy/policy_manager.h
@@ -487,6 +487,9 @@ class PolicyManager : public usage_statistics::StatisticsManager {
*/
virtual void OnAppRegisteredOnMobile(const std::string& application_id) = 0;
+ virtual void OnDeviceSwitching(const std::string& device_id_from,
+ const std::string& device_id_to) = 0;
+
/**
* @brief RetrieveCertificate Allows to obtain certificate in order
* to start secure connection.
diff --git a/src/components/include/transport_manager/common.h b/src/components/include/transport_manager/common.h
index 833a35602a..58bcf6bb17 100644
--- a/src/components/include/transport_manager/common.h
+++ b/src/components/include/transport_manager/common.h
@@ -35,6 +35,7 @@
#include <vector>
#include <string>
+#include <map>
/**
* @brief - transport_manager namespace
@@ -90,5 +91,12 @@ typedef int ApplicationHandle;
* @brief Type definition for vector that contain ApplicationHandle variables.
*/
typedef std::vector<ApplicationHandle> ApplicationList;
+
+/**
+ * @brief SwitchableDevices defines list of devices having transport switch id
+ * i.e. able to switch their transport. Maps unique device id (MAC, serial etc.)
+ * to transport switch id (e.g. connection UUID for iAP2 transport)
+ */
+typedef std::map<DeviceUID, std::string> SwitchableDevices;
} // namespace transport_manager
#endif // SRC_COMPONENTS_INCLUDE_TRANSPORT_MANAGER_COMMON_H_
diff --git a/src/components/include/transport_manager/transport_adapter/device.h b/src/components/include/transport_manager/transport_adapter/device.h
index 3adb6cd2e6..4616a8cfc2 100644
--- a/src/components/include/transport_manager/transport_adapter/device.h
+++ b/src/components/include/transport_manager/transport_adapter/device.h
@@ -58,6 +58,22 @@ class Device {
: name_(name)
, unique_device_id_(unique_device_id)
, keep_on_disconnect_(false) {}
+
+ /**
+ * Constructor for creating device supporting transport switch
+ * @brief Device constructor
+ * @param name Device name
+ * @param unique_device_id Unique device id
+ * @param transport_switch_id Id used for transport switching flow
+ */
+ Device(const std::string& name,
+ const DeviceUID& unique_device_id,
+ std::string transport_switch_id)
+ : name_(name)
+ , unique_device_id_(unique_device_id)
+ , transport_switch_id_(transport_switch_id)
+ , keep_on_disconnect_(false) {}
+
/**
* @brief Destructor.
**/
@@ -114,6 +130,13 @@ class Device {
keep_on_disconnect_ = keep_on_disconnect;
}
+ /**
+ * @brief transport_switch_id Returns id used for transport switching
+ * flow of device. Filled if applicable, otherwise - empty.
+ */
+ inline std::string transport_switch_id() const {
+ return transport_switch_id_;
+ }
private:
/**
* @brief Device user-friendly name.
@@ -124,6 +147,11 @@ class Device {
* @brief Unique device identifier across all devices.
**/
DeviceUID unique_device_id_;
+ /**
+ * @brief transport_switch_id_ ID used to switch device from one to another
+ * transport. Filled if applicable, otherwise - empty
+ */
+ std::string transport_switch_id_;
/**
* @brief If true, device will remain in list even if all its connections
diff --git a/src/components/include/transport_manager/transport_adapter/transport_adapter.h b/src/components/include/transport_manager/transport_adapter/transport_adapter.h
index cd097b698d..66478c60ac 100644
--- a/src/components/include/transport_manager/transport_adapter/transport_adapter.h
+++ b/src/components/include/transport_manager/transport_adapter/transport_adapter.h
@@ -287,6 +287,12 @@ class TransportAdapter {
virtual void StopDevice(const DeviceUID& device_id) const = 0;
/**
+ * @brief DoTransportSwitch notifies listeners of transport adapter events
+ * that transport switching is requested by system
+ */
+ virtual void DoTransportSwitch() const = 0;
+
+ /**
* @brief DeviceSwitched is triggered for adapter to proceed with possible
* further switching steps required on device side. E.g. to notify device
* on end of switching so it can disconnect transport being switched from.
@@ -294,6 +300,7 @@ class TransportAdapter {
*/
virtual void DeviceSwitched(const DeviceUID& device_handle) = 0;
+ virtual SwitchableDevices GetSwitchableDevices() const = 0;
#ifdef TELEMETRY_MONITOR
/**
* @brief Return Time metric observer
diff --git a/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h b/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h
index c277faa339..18f4ccb2d1 100644
--- a/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h
+++ b/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h
@@ -56,7 +56,8 @@ enum class EventTypeEnum {
ON_RECEIVED_DONE,
ON_RECEIVED_FAIL,
ON_COMMUNICATION_ERROR,
- ON_UNEXPECTED_DISCONNECT
+ ON_UNEXPECTED_DISCONNECT,
+ ON_TRANSPORT_SWITCH_REQUESTED
};
class TransportAdapterEvent {
diff --git a/src/components/include/transport_manager/transport_manager_listener.h b/src/components/include/transport_manager/transport_manager_listener.h
index 80994e700e..d336eade45 100644
--- a/src/components/include/transport_manager/transport_manager_listener.h
+++ b/src/components/include/transport_manager/transport_manager_listener.h
@@ -72,9 +72,12 @@ class TransportManagerListener {
/**
* @brief OnDeviceSwitchingStart allows to notify listener that device is
* going to switch its connection.
- * @param device_uid the id of the device which has to be switched.
+ * @param device_uid_from the id of the device which has to switch its
+ * transport
+ * @param device_uid_to the id of the device on new transport
*/
- virtual void OnDeviceSwitchingStart(const DeviceUID& device_uid) = 0;
+ virtual void OnDeviceSwitchingStart(const DeviceUID& device_uid_from,
+ const DeviceUID& device_uid_to) = 0;
/**
* @brief OnDeviceSwitchingFinish notifies listener that device reconnection
diff --git a/src/components/include/transport_manager/transport_manager_listener_empty.h b/src/components/include/transport_manager/transport_manager_listener_empty.h
index f7843c9a68..ca6c573a06 100644
--- a/src/components/include/transport_manager/transport_manager_listener_empty.h
+++ b/src/components/include/transport_manager/transport_manager_listener_empty.h
@@ -71,9 +71,12 @@ class TransportManagerListenerEmpty : public TransportManagerListener {
/**
* @brief OnDeviceSwitchingStart allows to notify listener that device is
* going to switch its connection. This default implementation does nothing.
- * @param device_uid the id of the device which has to be switched.
+ * @param device_uid_from the id of the device which has to switch its
+ * transport
+ * @param device_uid_to the id of the device on new transport
*/
- void OnDeviceSwitchingStart(const DeviceUID& device_uid) OVERRIDE {}
+ void OnDeviceSwitchingStart(const DeviceUID& device_uid_from,
+ const DeviceUID& device_uid_to) OVERRIDE {}
/**
* @brief OnDeviceSwitchingFinish notifies listener that device reconnection