summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/include
diff options
context:
space:
mode:
authorAndrey Oleynik (GitHub) <aoleynik@luxoft.com>2017-11-07 08:50:53 +0200
committerAndriy Byzhynar <AByzhynar@luxoft.com>2018-01-18 12:03:51 +0200
commit33b6a331bf7c22e662b995069e7106f09940eb1f (patch)
treed94264571f82d583d3606f4601e0b19353e21e9d /src/components/transport_manager/include
parent1d2fa24c81b8910ef533fbedf777f627e220e10e (diff)
downloadsdl_core-33b6a331bf7c22e662b995069e7106f09940eb1f.tar.gz
Adds iAP2 BT/USB connection emulation over TCP transport
To be able to check iAP2 transport switch feature these adapters are implemented. Implementation is done in the way of emulating iAP transport over TCP since there is no available iAP library for open source. Since it is just emulation not a real transport is will be built only with other unit tests i.e. with BUILD_TESTS = ON
Diffstat (limited to 'src/components/transport_manager/include')
-rw-r--r--src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h110
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h4
2 files changed, 112 insertions, 2 deletions
diff --git a/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h b/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h
new file mode 100644
index 0000000000..de8a3c0080
--- /dev/null
+++ b/src/components/transport_manager/include/transport_manager/iap2_emulation/iap2_transport_adapter.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2017, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "transport_manager/tcp/tcp_transport_adapter.h"
+#include "transport_manager/transport_manager_settings.h"
+#include "resumption/last_state.h"
+#include "utils/macro.h"
+
+namespace transport_manager {
+namespace transport_adapter {
+
+/**
+ * @brief The IAP2BluetoothEmulationTransportAdapter class implements iAP2
+ * Bluetooth transport over TCP
+ */
+class IAP2BluetoothEmulationTransportAdapter : public TcpTransportAdapter {
+ public:
+ /**
+ * @brief IAP2BluetoothEmulationTransportAdapter constructor
+ * @param port TCP port to listen on
+ * @param last_state LastState instance reference
+ * @param settings Settings reference
+ */
+ IAP2BluetoothEmulationTransportAdapter(
+ const uint16_t port,
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
+
+ /**
+ * @brief DeviceSwitched is called during switching from iAP2 Bluetooth to
+ * iAP2 USB transport.
+ * Currently there is no logic to switch back from iAP2 USB to iAP2 Bluetooth
+ * due to Bluetooth reconnection takes much time and this violates some Apple
+ * restrictions for iAP2 protocol, so if this method will be called - assert
+ * will be called
+ * @param device_handle Device handle of switched device
+ */
+ void DeviceSwitched(const DeviceUID& device_handle) OVERRIDE;
+
+ protected:
+ /**
+ * @brief GetDeviceType Provides SDL device type for transport adapter
+ * @return Device type
+ */
+ DeviceType GetDeviceType() const OVERRIDE;
+};
+
+/**
+ * @brief The IAP2USBEmulationTransportAdapter class implements emulation of
+ * iAP2 USB transport over TCP
+ */
+class IAP2USBEmulationTransportAdapter : public TcpTransportAdapter {
+ public:
+ /**
+ * @brief IAP2USBEmulationTransportAdapter constructor
+ * @param port TCP port to listen on
+ * @param last_state LastState instance reference
+ * @param settings Settings reference
+ */
+ IAP2USBEmulationTransportAdapter(const uint16_t port,
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
+
+ /**
+ * @brief DeviceSwitched is called during switching from iAP2 Bluetooth to
+ * iAP2 USB transport
+ * @param device_handle Device handle of switched device
+ */
+ void DeviceSwitched(const DeviceUID& device_handle) OVERRIDE;
+
+ protected:
+ /**
+ * @brief GetDeviceType Provides SDL device type for transport adapter
+ * @return Device type
+ */
+ DeviceType GetDeviceType() const OVERRIDE;
+};
+}
+} // namespace transport_manager::transport_adapter
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
index e4d70d5b07..df4c932260 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
@@ -413,7 +413,7 @@ class TransportAdapterImpl : public TransportAdapter,
* Stop() interface of that device
* @param device_id unique device identifier that has to be stopped.
*/
- void StopDevice(const DeviceUID& device_id) const FINAL;
+ void StopDevice(const DeviceUID& device_id) const OVERRIDE;
/**
* @brief DeviceSwitched is triggered for adapter to proceed with possible
@@ -422,7 +422,7 @@ class TransportAdapterImpl : public TransportAdapter,
* This is default implemenation does nothing. Must be overloaded if needed.
* @param device_handle Device id to notify on event
*/
- void DeviceSwitched(const DeviceUID& device_handle) FINAL;
+ void DeviceSwitched(const DeviceUID& device_handle) OVERRIDE;
/**
* @brief Allows to obtain connection type used by device.