diff options
Diffstat (limited to 'src/components/include')
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 |