summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/transport_manager/include')
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_connection_factory.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device.h7
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h6
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_socket_connection.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/dnssd_service_browser.h24
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h34
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_connection_factory.h13
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_device.h15
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_socket_connection.h10
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h10
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h4
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/connection.h9
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/device_scanner.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/server_connection_factory.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h26
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h51
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_impl.h23
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h20
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h8
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/usb_connection_factory.h4
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h7
29 files changed, 161 insertions, 134 deletions
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_connection_factory.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_connection_factory.h
index 48d1f15538..4d1d474377 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_connection_factory.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_connection_factory.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file bluetooth_connection_factory.h
* \brief BluetoothConnectionFactory class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device.h
index 4abef3c604..f28147a3b5 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file bluetooth_device.h
* \brief BluetoothDevice class header file.
*
@@ -37,11 +37,6 @@
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_BLUETOOTH_BLUETOOTH_DEVICE_H_
#include <bluetooth/bluetooth.h>
-#include <bluetooth/hci.h>
-#include <bluetooth/hci_lib.h>
-#include <bluetooth/sdp.h>
-#include <bluetooth/sdp_lib.h>
-#include <bluetooth/rfcomm.h>
#include <vector>
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h
index 0c68c67216..d1bed9b3dc 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_device_scanner.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file bluetooth_device_scanner.h
* \brief BluetoothDeviceScanner class header file.
*
@@ -46,7 +46,9 @@
#include "transport_manager/transport_adapter/device_scanner.h"
#include "utils/conditional_variable.h"
#include "utils/lock.h"
-#include "utils/threads/thread.h"
+#include "utils/threads/thread_delegate.h"
+
+class Thread;
namespace transport_manager {
namespace transport_adapter {
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_socket_connection.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_socket_connection.h
index e1606da878..3de77ab529 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_socket_connection.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_socket_connection.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file bluetooth_socket_connection.h
* \brief BluetoothSocketConnection class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
index 075b5da55f..69a588fd37 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file bluetooth_transport_adapter.h
* \brief BluetoothAdapter class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/tcp/dnssd_service_browser.h b/src/components/transport_manager/include/transport_manager/tcp/dnssd_service_browser.h
index cd319ca543..079494d035 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/dnssd_service_browser.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/dnssd_service_browser.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file dnssd_service_browser.h
* \brief DnssdServiceBrowser class header file.
*
@@ -36,14 +36,15 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_DNSSD_SERVICE_BROWSER_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_DNSSD_SERVICE_BROWSER_H_
-#include <string>
-#include <vector>
-#include <pthread.h>
#include <avahi-client/client.h>
#include <avahi-client/lookup.h>
#include <avahi-common/error.h>
#include <avahi-common/thread-watch.h>
+#include <string>
+#include <vector>
+
+#include "utils/lock.h"
#include "transport_manager/transport_adapter/device_scanner.h"
#include "transport_manager/transport_adapter/transport_adapter.h"
@@ -74,13 +75,15 @@ class DnssdServiceBrowser : public DeviceScanner {
*
* @param controller Pointer to the device adapter controller.
*/
- DnssdServiceBrowser(class TransportAdapterController* controller);
+ explicit DnssdServiceBrowser(class TransportAdapterController* controller);
virtual ~DnssdServiceBrowser();
+
protected:
virtual TransportAdapter::Error Init();
virtual TransportAdapter::Error Scan();
virtual void Terminate();
virtual bool IsInitialised() const;
+
private:
TransportAdapter::Error CreateAvahiClientAndBrowser();
void AddService(AvahiIfIndex interface, AvahiProtocol protocol,
@@ -121,13 +124,12 @@ class DnssdServiceBrowser : public DeviceScanner {
typedef std::vector<DnssdServiceRecord> ServiceRecords;
ServiceRecords service_records_;
- pthread_mutex_t mutex_;
+ sync_primitives::Lock mutex_;
bool initialised_;
-}
-;
+};
-} // namespace
-} // namespace
+} // namespace transport_adapter
+} // namespace transport_manager
-#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_DNSSD_SERVICE_BROWSER
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_DNSSD_SERVICE_BROWSER_H_
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h
index 12eab5a1b5..d5a24f07eb 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file tcp_client_listener.h
* \brief TcpClientListener class header file.
*
@@ -36,10 +36,10 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_
+#include "utils/threads/thread_delegate.h"
#include "transport_manager/transport_adapter/client_connection_listener.h"
-#include "utils/threads/thread_delegate.h"
-#include "utils/threads/thread.h"
+class Thread;
namespace transport_manager {
namespace transport_adapter {
@@ -49,8 +49,7 @@ class TransportAdapterController;
/**
* @brief Listener of device adapter that use TCP transport.
*/
-class TcpClientListener : public ClientConnectionListener,
- public threads::ThreadDelegate {
+class TcpClientListener : public ClientConnectionListener {
public:
/**
* @breaf Constructor.
@@ -64,14 +63,6 @@ class TcpClientListener : public ClientConnectionListener,
bool enable_keepalive);
/**
- * @brief Start TCP client listener thread.
- */
- void threadMain();
-
- bool exitThreadMain();
- protected:
-
- /**
* @brief Destructor.
*/
virtual ~TcpClientListener();
@@ -107,18 +98,29 @@ class TcpClientListener : public ClientConnectionListener,
* @brief Terminate TCP client listener thread.
*/
virtual TransportAdapter::Error StopListening();
+
private:
const uint16_t port_;
const bool enable_keepalive_;
TransportAdapterController* controller_;
- // TODO(Eamakhov): change to threads::Thread usage
threads::Thread* thread_;
int socket_;
- bool thread_started_;
bool thread_stop_requested_;
+
+ void Loop();
+ void StopLoop();
+
+ class ListeningThreadDelegate : public threads::ThreadDelegate {
+ public:
+ explicit ListeningThreadDelegate(TcpClientListener* parent);
+ virtual void threadMain();
+ void exitThreadMain();
+ private:
+ TcpClientListener* parent_;
+ };
};
} // namespace transport_adapter
} // namespace transport_manager
-#endif /* TCP_CLIENT_LISTENER_H_ */
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_connection_factory.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_connection_factory.h
index fba85aa601..7f238e91ec 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_connection_factory.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_connection_factory.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file tcp_connection_factory.h
* \brief TcpConnectionFactory class header file.
*
@@ -47,14 +47,12 @@ namespace transport_adapter {
*/
class TcpConnectionFactory : public ServerConnectionFactory {
public:
-
/**
* @brief Constructor.
*
* @param controller Pointer to the device adapter controller.
*/
- TcpConnectionFactory(TransportAdapterController* controller);
- protected:
+ explicit TcpConnectionFactory(TransportAdapterController* controller);
/**
* @brief Start TCP connection factory.
@@ -69,8 +67,8 @@ class TcpConnectionFactory : public ServerConnectionFactory {
*
* @return Error information about possible reason of failure.
*/
- virtual TransportAdapter::Error CreateConnection(const DeviceUID& device_uid,
- const ApplicationHandle& app_handle);
+ virtual TransportAdapter::Error CreateConnection(
+ const DeviceUID& device_uid, const ApplicationHandle& app_handle);
/**
* @brief
@@ -89,6 +87,7 @@ class TcpConnectionFactory : public ServerConnectionFactory {
* @brief Destructor.
*/
virtual ~TcpConnectionFactory();
+
private:
TransportAdapterController* controller_;
};
@@ -96,4 +95,4 @@ class TcpConnectionFactory : public ServerConnectionFactory {
} // namespace transport_adapter
} // namespace transport_manager
-#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_CONNECTION_FACTORY_H_
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CONNECTION_FACTORY_H_
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h
index 08821ab3c4..45bcc405d7 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_device.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file tcp_device.h
* \brief TcpDevice class header file.
*
@@ -36,9 +36,6 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_DEVICE_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_DEVICE_H_
-#include "transport_manager/transport_adapter/device.h"
-
-#include <map>
#include <memory.h>
#include <signal.h>
#include <errno.h>
@@ -47,6 +44,12 @@
#include <sys/types.h>
#include <sys/socket.h>
+#include <map>
+#include <string>
+
+#include "utils/lock.h"
+#include "transport_manager/transport_adapter/device.h"
+
namespace transport_manager {
namespace transport_adapter {
@@ -136,7 +139,7 @@ class TcpDevice : public Device {
uint16_t port;
};
std::map<ApplicationHandle, Application> applications_;
- mutable pthread_mutex_t applications_mutex_;
+ mutable sync_primitives::Lock applications_mutex_;
const in_addr_t in_addr_;
const std::string name_;
ApplicationHandle last_handle_;
@@ -145,4 +148,4 @@ class TcpDevice : public Device {
} // namespace transport_adapter
} // namespace transport_manager
-#endif /* TCP_DEVICE_H_ */
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_DEVICE_H_
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_socket_connection.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_socket_connection.h
index 8fe7b8e837..432a0aa760 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_socket_connection.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_socket_connection.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file tcp_socket_connection.h
* \brief TcpSocketConnection class header file.
*
@@ -53,7 +53,6 @@ class TransportAdapterController;
*/
class TcpSocketConnection : public ThreadedSocketConnection {
public:
-
/**
* @brief Constructor.
*
@@ -69,8 +68,8 @@ class TcpSocketConnection : public ThreadedSocketConnection {
* @brief Destructor.
*/
virtual ~TcpSocketConnection();
- protected:
+ protected:
/**
* @brief
*/
@@ -82,7 +81,6 @@ class TcpSocketConnection : public ThreadedSocketConnection {
*/
class TcpServerOiginatedSocketConnection : public ThreadedSocketConnection {
public:
-
/**
* @brief Constructor.
*
@@ -98,8 +96,8 @@ class TcpServerOiginatedSocketConnection : public ThreadedSocketConnection {
* @brief Destructor.
*/
virtual ~TcpServerOiginatedSocketConnection();
- protected:
+ protected:
/**
* @brief
*/
@@ -109,4 +107,4 @@ class TcpServerOiginatedSocketConnection : public ThreadedSocketConnection {
} // namespace transport_adapter
} // namespace transport_manager
-#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_SOCKET_CONNECTION_H_
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_SOCKET_CONNECTION_H_
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
index 1319c40eeb..5c1582230a 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file tcp_transport_adapter.h
* \brief TcpTransportAdapter class header file.
*
@@ -33,8 +33,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_ADAPTER_H_
-#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_ADAPTER_H_
+#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_TRANSPORT_ADAPTER_H_
+#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_TRANSPORT_ADAPTER_H_
#include "transport_manager/transport_adapter/transport_adapter_impl.h"
@@ -55,8 +55,8 @@ class TcpTransportAdapter : public TransportAdapterImpl {
* @brief Destructor.
*/
virtual ~TcpTransportAdapter();
- protected:
+ protected:
/**
* @brief Return type of device.
*
@@ -80,4 +80,4 @@ class TcpTransportAdapter : public TransportAdapterImpl {
} // namespace transport_adapter
} // namespace transport_manager
-#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_ADAPTER
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_TRANSPORT_ADAPTER_H_
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h b/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h
index 41658fb45f..018dd46810 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/client_connection_listener.h
@@ -1,6 +1,4 @@
-/**
- * \file client_connection_listener.h
- * \brief ClientConnectionListener class header file.
+/*
* Copyright (c) 2013, Ford Motor Company
* All rights reserved.
*
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/connection.h b/src/components/transport_manager/include/transport_manager/transport_adapter/connection.h
index 094cb51921..e3f0b3d1d7 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/connection.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/connection.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file connection.h
* \brief Connection class header.
* Copyright (c) 2013, Ford Motor Company
@@ -39,7 +39,6 @@
#include "transport_manager/transport_adapter/transport_adapter.h"
namespace transport_manager {
-
namespace transport_adapter {
/**
@@ -48,10 +47,6 @@ namespace transport_adapter {
class Connection {
public:
/**
- * @brief Constructor.
- */
- Connection() {}
- /**
* @brief Destructor.
**/
virtual ~Connection() {}
@@ -71,6 +66,8 @@ class Connection {
virtual TransportAdapter::Error Disconnect() = 0;
};
+typedef utils::SharedPtr<Connection> ConnectionSPtr;
+
} // namespace transport_adapter
} // namespace transport_manager
#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_CONNECTION_H_
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/device_scanner.h b/src/components/transport_manager/include/transport_manager/transport_adapter/device_scanner.h
index 5b09a726e5..36759a9385 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/device_scanner.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/device_scanner.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file device_scanner.h
* \brief DeviceScanner class header file.
* Copyright (c) 2013, Ford Motor Company
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/server_connection_factory.h b/src/components/transport_manager/include/transport_manager/transport_adapter/server_connection_factory.h
index d944594d88..19c37aa6a6 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/server_connection_factory.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/server_connection_factory.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file server_connection_factory.h
* \brief ServerConnectionFactory class header file.
* Copyright (c) 2013, Ford Motor Company
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h
index 851f250a88..5e0caa22e8 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file threaded_socket_connection.h
* \brief Header for classes responsible for communication over sockets.
* Copyright (c) 2013, Ford Motor Company
@@ -41,10 +41,12 @@
#include "transport_manager/transport_adapter/connection.h"
#include "protocol/common.h"
#include "utils/threads/thread_delegate.h"
-#include "utils/threads/thread.h"
+#include "utils/lock.h"
using ::transport_manager::transport_adapter::Connection;
+class Thread;
+
namespace transport_manager {
namespace transport_adapter {
@@ -53,10 +55,8 @@ class TransportAdapterController;
/**
* @brief Class responsible for communication over sockets.
*/
-class ThreadedSocketConnection : public Connection,
- public threads::ThreadDelegate {
+class ThreadedSocketConnection : public Connection {
public:
-
/**
* @brief Send data frame.
*
@@ -86,8 +86,8 @@ class ThreadedSocketConnection : public Connection,
void set_socket(int socket) {
socket_ = socket;
}
- protected:
+ protected:
/**
* @brief Constructor.
*
@@ -104,7 +104,6 @@ class ThreadedSocketConnection : public Connection,
*/
virtual ~ThreadedSocketConnection();
-
virtual bool Establish(ConnectError** error) = 0;
/**
@@ -129,11 +128,18 @@ class ThreadedSocketConnection : public Connection,
}
private:
+ class SocketConnectionDelegate : public threads::ThreadDelegate {
+ public:
+ explicit SocketConnectionDelegate(ThreadedSocketConnection* connection);
+ void threadMain() OVERRIDE;
+ void exitThreadMain() OVERRIDE;
+ private:
+ ThreadedSocketConnection* connection_;
+ };
int read_fd_;
int write_fd_;
void threadMain();
- bool exitThreadMain();
void Transmit();
void Finalize();
TransportAdapter::Error Notify() const;
@@ -147,7 +153,7 @@ class ThreadedSocketConnection : public Connection,
**/
typedef std::queue<protocol_handler::RawMessagePtr> FrameQueue;
FrameQueue frames_to_send_;
- mutable pthread_mutex_t frames_to_send_mutex_;
+ mutable sync_primitives::Lock frames_to_send_mutex_;
int socket_;
bool terminate_flag_;
@@ -159,4 +165,4 @@ class ThreadedSocketConnection : public Connection,
} // namespace transport_adapter
} // namespace transport_manager
-#endif //SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_transport_adapter_SOCKET_COMMUNICATION
+#endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_ADAPTER_THREADED_SOCKET_CONNECTION_H_
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h
index aaa1139b9f..f0148ad1af 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h
@@ -95,7 +95,7 @@ class TransportAdapterController {
* @param device_handle Device unique identifier.
* @param app_handle Handle of application.
*/
- virtual void ConnectionCreated(Connection* connection,
+ virtual void ConnectionCreated(ConnectionSPtr connection,
const DeviceUID& device_handle,
const ApplicationHandle& app_handle) = 0;
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 2c27e0d20f..5306a7af5a 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
@@ -39,6 +39,8 @@
#include <memory>
#include <string>
+#include "utils/lock.h"
+#include "utils/rwlock.h"
#include "transport_manager/transport_adapter/transport_adapter.h"
#include "transport_manager/transport_adapter/transport_adapter_controller.h"
#include "transport_manager/transport_adapter/connection.h"
@@ -99,6 +101,12 @@ class TransportAdapterImpl : public TransportAdapter,
virtual TransportAdapter::Error Init();
/**
+ * @brief Stops device adapter
+ * Called from transport manager to stop device adapter
+ */
+ virtual void Terminate();
+
+ /**
* @brief Add listener to the container(list) of device adapter listeners.
*
* @param listener Pointer to the device adapter listener.
@@ -264,7 +272,7 @@ class TransportAdapterImpl : public TransportAdapter,
* @param device_handle Device unique identifier.
* @param app_handle Handle of application.
*/
- virtual void ConnectionCreated(Connection* connection,
+ virtual void ConnectionCreated(ConnectionSPtr connection,
const DeviceUID& device_handle,
const ApplicationHandle& app_handle);
@@ -405,9 +413,7 @@ class TransportAdapterImpl : public TransportAdapter,
virtual TMMetricObserver* GetTimeMetricObserver();
#endif // TIME_TESTER
-
protected:
-
/**
* @brief Store adapter state where applicable
*/
@@ -425,6 +431,13 @@ class TransportAdapterImpl : public TransportAdapter,
*/
virtual bool ToBeAutoConnected(DeviceSptr device) const;
+
+ /**
+ * @brief Returns true if \a device is to be disconnected automatically when
+ * all applications will be closed
+ */
+ virtual bool ToBeAutoDisconnected(DeviceSptr device) const;
+
/**
* @brief Find connection that has state - ESTABLISHED.
*
@@ -433,7 +446,7 @@ class TransportAdapterImpl : public TransportAdapter,
*
* @return pointer to the connection.
*/
- Connection* FindEstablishedConnection(const DeviceUID& device_handle,
+ ConnectionSPtr FindEstablishedConnection(const DeviceUID& device_handle,
const ApplicationHandle& app_handle) const;
private:
@@ -451,6 +464,15 @@ class TransportAdapterImpl : public TransportAdapter,
void RemoveDevice(const DeviceUID& device_handle);
/**
+ * Checks whether application is single active on device
+ * @param device_uid
+ * @param app_uid
+ * @return true if this application is the single application on device
+ */
+ bool IsSingleApplication(const DeviceUID& device_uid,
+ const ApplicationHandle& app_uid);
+
+ /**
* @brief Listener for device adapter notifications.
**/
TransportAdapterListenerList listeners_;
@@ -464,7 +486,7 @@ class TransportAdapterImpl : public TransportAdapter,
* @brief Structure that holds information about connection.
*/
struct ConnectionInfo {
- Connection* connection;
+ ConnectionSPtr connection;
DeviceUID device_id;
ApplicationHandle app_handle;
enum {
@@ -493,7 +515,7 @@ class TransportAdapterImpl : public TransportAdapter,
/**
* @brief Mutex restricting access to device map.
**/
- mutable pthread_mutex_t devices_mutex_;
+ mutable sync_primitives::Lock devices_mutex_;
/**
* @brief Container(map) of connections.
@@ -503,9 +525,16 @@ class TransportAdapterImpl : public TransportAdapter,
/**
* @brief Mutex restricting access to connections map.
**/
- mutable pthread_mutex_t connections_mutex_;
+ mutable sync_primitives::RWLock connections_lock_;
protected:
+#ifdef TIME_TESTER
+ /**
+ * @brief Pointer to time metric observer
+ */
+ TMMetricObserver* metric_observer_;
+#endif // TIME_TESTER
+
/**
* @brief Pointer to the device scanner.
*/
@@ -520,14 +549,8 @@ class TransportAdapterImpl : public TransportAdapter,
* @brief Pointer to the factory of connections initiated from client.
*/
ClientConnectionListener* client_connection_listener_;
-
-#ifdef TIME_TESTER
- /**
- * @brief Pointer to time metric observer
- */
- TMMetricObserver* metric_observer_;
-#endif // TIME_TESTER
};
+
} // namespace transport_adapter
} // namespace transport_manager
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
index 62fdb3fa2e..4c38716f3f 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
@@ -33,15 +33,12 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_IMPL_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_IMPL_H_
-#include <pthread.h>
-
#include <queue>
#include <map>
#include <list>
#include <algorithm>
#include "utils/timer_thread.h"
-#include "utils/rwlock.h"
#include "transport_manager/transport_manager.h"
#include "transport_manager/transport_manager_listener.h"
@@ -104,6 +101,12 @@ class TransportManagerImpl : public TransportManager,
virtual int Init();
/**
+ * Reinitializes transport manager
+ * @return Error code
+ */
+ virtual int Reinit();
+
+ /**
* @brief Start scanning for new devices.
*
* @return Code error.
@@ -250,12 +253,6 @@ class TransportManagerImpl : public TransportManager,
**/
void PostEvent(const TransportAdapterEvent& event);
- /**
- * @brief flag that indicates that thread is active
- * if it is false then threads exist main loop
- **/
- volatile bool all_thread_active_;
-
typedef std::list<TransportManagerListener*> TransportManagerListenerList;
/**
* @brief listener that would be called when TM's event happened.
@@ -263,11 +260,6 @@ class TransportManagerImpl : public TransportManager,
TransportManagerListenerList transport_manager_listener_;
/**
- * @brief Condition variable to wake up event
- **/
- pthread_cond_t device_listener_thread_wakeup_;
-
- /**
* @brief Flag that TM is initialized
*/
bool is_initialized_;
@@ -352,6 +344,9 @@ class TransportManagerImpl : public TransportManager,
unsigned char** frame);
void OnDeviceListUpdated(TransportAdapter* ta);
+ void DisconnectAllDevices();
+ void TerminateAllAdapters();
+ int InitAllAdapters();
static Connection convert(const ConnectionInternal& p);
};
// class ;
diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h b/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h
index d1f485c9d5..b90c504a4b 100644
--- a/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h
+++ b/src/components/transport_manager/include/transport_manager/usb/libusb/platform_usb_device.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file platform_usb_device.h
* \brief libusb PlatformUsbDevice class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h
index fc6af46a47..7c1fbd4551 100644
--- a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h
+++ b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_connection.h
@@ -49,7 +49,7 @@ class UsbConnection : public Connection {
UsbConnection(const DeviceUID& device_uid,
const ApplicationHandle& app_handle,
TransportAdapterController* controller,
- const UsbHandlerSptr& usb_handler, PlatformUsbDevice* device);
+ const UsbHandlerSptr usb_handler, PlatformUsbDevice* device);
bool Init();
virtual ~UsbConnection();
diff --git a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h
index fd6e77013a..215b66f6e3 100644
--- a/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h
+++ b/src/components/transport_manager/include/transport_manager/usb/libusb/usb_handler.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file usb_handler.h
* \brief libusb USB handler class header file.
*
@@ -36,16 +36,17 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_LIBUSB_USB_HANDLER_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_LIBUSB_USB_HANDLER_H_
-#include <pthread.h>
-
#include <libusb/libusb.h>
#include "transport_manager/transport_adapter/transport_adapter.h"
#include "transport_manager/usb/usb_control_transfer.h"
#include "transport_manager/usb/libusb/platform_usb_device.h"
-namespace transport_manager {
+#include "utils/threads/thread.h"
+
+class Thread;
+namespace transport_manager {
namespace transport_adapter {
class UsbHandler {
@@ -71,9 +72,16 @@ class UsbHandler {
friend void UsbTransferSequenceCallback(libusb_transfer* transfer);
private:
+ class UsbHandlerDelegate: public threads::ThreadDelegate {
+ public:
+ explicit UsbHandlerDelegate(UsbHandler* handler);
+ void threadMain() OVERRIDE;
+ private:
+ UsbHandler* handler_;
+ };
+
bool shutdown_requested_;
- // TODO(Eamakhov): change to threads::Thread usage
- pthread_t thread_;
+ threads::Thread* thread_;
friend class UsbDeviceListener;
std::list<class UsbDeviceListener*> usb_device_listeners_;
diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h b/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h
index 939a8fcb3c..ab35f862c6 100644
--- a/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h
+++ b/src/components/transport_manager/include/transport_manager/usb/qnx/platform_usb_device.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file platform_usb_device.h
* \brief QNX PlatfromUsbDevice class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h
index 3a0d2f8a26..d55c887bd1 100644
--- a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h
+++ b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_connection.h
@@ -36,7 +36,7 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_QNX_USB_CONNECTION_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_USB_QNX_USB_CONNECTION_H_
-#include <pthread.h>
+#include "utils/lock.h"
#include "transport_manager/transport_adapter/transport_adapter_controller.h"
#include "transport_manager/transport_adapter/connection.h"
@@ -51,7 +51,7 @@ class UsbConnection : public Connection {
UsbConnection(const DeviceUID& device_uid,
const ApplicationHandle& app_handle,
TransportAdapterController* controller,
- const UsbHandlerSptr& libusb_handler,
+ const UsbHandlerSptr libusb_handler,
PlatformUsbDevice* device);
bool Init();
@@ -82,13 +82,13 @@ class UsbConnection : public Connection {
unsigned char* in_buffer_;
void* out_buffer_;
-
+
usbd_urb* in_urb_;
usbd_urb* out_urb_;
std::list<protocol_handler::RawMessagePtr> out_messages_;
::protocol_handler::RawMessagePtr current_out_message_;
- pthread_mutex_t out_messages_mutex_;
+ sync_primitives::Lock out_messages_mutex_;
size_t bytes_sent_;
bool disconnecting_;
bool pending_in_transfer_;
diff --git a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h
index 26b00087ff..c33e0f2361 100644
--- a/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h
+++ b/src/components/transport_manager/include/transport_manager/usb/qnx/usb_handler.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file usb_handler.h
* \brief QNX USB handler class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h b/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
index 55fb028ef7..b0d8c1e453 100644
--- a/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file usb_aoa_adapter.h
* \brief UsbAoaAdapter class header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_connection_factory.h b/src/components/transport_manager/include/transport_manager/usb/usb_connection_factory.h
index ed0fda91ee..ebd25bd37b 100644
--- a/src/components/transport_manager/include/transport_manager/usb/usb_connection_factory.h
+++ b/src/components/transport_manager/include/transport_manager/usb/usb_connection_factory.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file usb_connection_factory.h
* \brief UsbConnectionFactory class header file.
*
@@ -46,7 +46,7 @@ namespace transport_adapter {
class UsbConnectionFactory : public ServerConnectionFactory {
public:
UsbConnectionFactory(TransportAdapterController* controller);
- void SetUsbHandler(const UsbHandlerSptr& usb_handler);
+ void SetUsbHandler(const UsbHandlerSptr usb_handler);
protected:
virtual TransportAdapter::Error Init();
diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h b/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h
index 8c4f8a9d4c..c701a86e0a 100644
--- a/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h
+++ b/src/components/transport_manager/include/transport_manager/usb/usb_control_transfer.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file aoa_common.h
* \brief Google AOA protocol header file.
*
diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h b/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h
index 0937222155..9efb7ba58d 100644
--- a/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h
+++ b/src/components/transport_manager/include/transport_manager/usb/usb_device_scanner.h
@@ -1,4 +1,4 @@
-/**
+/*
* \file usb_device_scanner.h
* \brief UsbDeviceScanner class header file.
*
@@ -38,8 +38,7 @@
#include <list>
-#include <pthread.h>
-
+#include "utils/lock.h"
#include "transport_manager/transport_adapter/device_scanner.h"
#include "transport_manager/usb/common.h"
@@ -69,7 +68,7 @@ class UsbDeviceScanner : public DeviceScanner, public UsbDeviceListener {
typedef std::list<PlatformUsbDevice*> Devices;
Devices devices_;
- pthread_mutex_t devices_mutex_;
+ sync_primitives::Lock devices_mutex_;
};
} // namespace