summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Dickow <jjdickow@gmail.com>2014-07-23 13:46:57 -0400
committerJustin Dickow <jjdickow@gmail.com>2014-07-23 13:46:57 -0400
commit011d467db8b5fb54593175942b5746ba02a76bb3 (patch)
tree589fda7f0f86c6b3a1e171afcef657891de03a34
parente516e434ebf595de7600f3b7247a42795655df31 (diff)
downloadsmartdevicelink-011d467db8b5fb54593175942b5746ba02a76bb3.tar.gz
transport_manager
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h5
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h7
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h11
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h10
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h13
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager.h6
-rwxr-xr-xsrc/components/transport_manager/include/transport_manager/transport_manager_impl.h8
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_listener.h8
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h11
-rw-r--r--src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc19
-rw-r--r--src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc11
-rw-r--r--src/components/transport_manager/src/transport_manager_default.cc8
-rw-r--r--src/components/transport_manager/src/transport_manager_impl.cc19
13 files changed, 126 insertions, 10 deletions
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h
index 8a1a3a920..11dd0ee48 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h
@@ -42,7 +42,9 @@
#include "utils/shared_ptr.h"
#include "transport_manager/common.h"
#include "transport_manager/error.h"
+#ifdef TIME_TESTER
#include "transport_manager/time_metric_observer.h"
+#endif // TIME_TESTER
namespace transport_manager {
namespace transport_adapter {
@@ -245,13 +247,14 @@ class TransportAdapter {
*/
virtual std::string DeviceName(const DeviceUID& device_id) const = 0;
+#ifdef TIME_TESTER
/**
* @brief Return Time metric observer
*
* @param return pointer to Time metric observer
*/
virtual TMMetricObserver* GetTimeMetricObserver() = 0;
-
+#endif // TIME_TESTER
};
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 20e912304..f87651b24 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
@@ -64,6 +64,13 @@ class TransportAdapterController {
virtual void SearchDeviceDone(const DeviceVector& devices) = 0;
/**
+ * @brief Search for application in device done, if it is not there - adds it.
+ *
+ * @param device Smart pointers to devices.
+ */
+ virtual void SearchApplicationsDone(const DeviceSptr& device) = 0;
+
+ /**
* @brief Launch OnSearchDeviceFailed event in device adapter listener.
*
* @param error Error class that contains details of this error situation.
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 3ece30077..bba6bf538 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
@@ -238,6 +238,13 @@ class TransportAdapterImpl : public TransportAdapter,
virtual void SearchDeviceDone(const DeviceVector& devices);
/**
+ * @brief Search for application in device done, if it is not there - adds it.
+ *
+ * @param device Smart pointers to devices.
+ */
+ virtual void SearchApplicationsDone(const DeviceSptr& device);
+
+ /**
* @brief Launch OnSearchDeviceFailed event in device adapter listener.
*
* @param error Error class that contains details of this error situation.
@@ -379,6 +386,7 @@ class TransportAdapterImpl : public TransportAdapter,
*/
virtual std::string DeviceName(const DeviceUID& device_id) const;
+#ifdef TIME_TESTER
/**
* @brief Setup observer for time metric.
*
@@ -392,6 +400,7 @@ class TransportAdapterImpl : public TransportAdapter,
* @param return pointer to Time metric observer
*/
virtual TMMetricObserver* GetTimeMetricObserver();
+#endif // TIME_TESTER
protected:
@@ -514,10 +523,12 @@ class TransportAdapterImpl : public TransportAdapter,
*/
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_adapter/transport_adapter_listener.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h
index 186ed9967..48bb0e59a 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h
@@ -86,6 +86,16 @@ class TransportAdapterListener {
const TransportAdapter* transport_adapter) = 0;
/**
+ * @brief Reaction on event, when new applications are started on device
+ * and SDL found this application
+ *
+ * @param adapter Current transport adapter
+ * @param device_handle Unique ID of device with new application list
+ */
+ virtual void OnApplicationListUpdated(const TransportAdapter* adapter,
+ const DeviceUID& device_handle) = 0;
+
+ /**
* @brief Search specified device adapter in the container of shared pointers to device adapters to be sure it is available,
* launch event ON_CONNECT_DONE in transport manager.
*
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h
index df3eebfbe..ac945919a 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h
@@ -59,6 +59,7 @@ class TransportAdapterListenerImpl
ON_SEARCH_DONE = 0,
ON_SEARCH_FAIL,
ON_DEVICE_LIST_UPDATED,
+ ON_APPLICATION_LIST_UPDATED,
ON_CONNECT_DONE,
ON_CONNECT_FAIL,
ON_DISCONNECT_DONE,
@@ -113,6 +114,18 @@ class TransportAdapterListenerImpl
*/
virtual void OnDeviceListUpdated(const TransportAdapter* adapter);
+
+ /**
+ * @brief Reaction on event, when new applications are started on device
+ * and SDL found this application
+ *
+ * @param adapter Current transport adapter
+ * @param device_handle Unique ID of device with new application list
+ */
+
+ virtual void OnApplicationListUpdated(const TransportAdapter* adapter,
+ const DeviceUID& device_handle);
+
/**
* @brief Search specified device adapter in the container of shared pointers
*to device adapters to be sure it is available,
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager.h b/src/components/transport_manager/include/transport_manager/transport_manager.h
index deb334ae1..c7c61b97f 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager.h
@@ -78,7 +78,7 @@ class TransportManager {
*
* @return Code error.
**/
- virtual int ConnectDevice(const DeviceHandle &device_id) = 0;
+ virtual int ConnectDevice(const DeviceHandle& device_id) = 0;
/**
* @brief Disconnect from all applications connected on device.
@@ -87,7 +87,7 @@ class TransportManager {
*
* @return Code error.
**/
- virtual int DisconnectDevice(const DeviceHandle &device_id) = 0;
+ virtual int DisconnectDevice(const DeviceHandle& device_id) = 0;
/**
* @brief Disconnect from applications connected on device by connection
@@ -157,7 +157,7 @@ class TransportManager {
*
* @return Code error.
**/
- virtual int RemoveDevice(const DeviceHandle &device_handle) = 0;
+ virtual int RemoveDevice(const DeviceHandle& device_handle) = 0;
/**
* @brief Turns on or off visibility of SDL to mobile devices
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 d7c55e2c1..786461464 100755
--- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
@@ -54,7 +54,9 @@
#include "transport_manager/transport_manager.h"
#include "transport_manager/transport_manager_listener.h"
#include "transport_manager/transport_adapter/transport_adapter_listener_impl.h"
+#ifdef TIME_TESTER
#include "transport_manager/time_metric_observer.h"
+#endif // TIME_TESTER
using ::transport_manager::transport_adapter::TransportAdapterListener;
@@ -227,13 +229,15 @@ class TransportManagerImpl : public TransportManager {
*/
void UpdateDeviceList(TransportAdapter* ta);
-
+#ifdef TIME_TESTER
/**
* @brief Setup observer for time metric.
*
* @param observer - pointer to observer
*/
void SetTimeMetricObserver(TMMetricObserver* observer);
+#endif // TIME_TESTER
+
/**
* @brief Constructor.
@@ -382,7 +386,9 @@ class TransportManagerImpl : public TransportManager {
* @brief Flag that TM is initialized
*/
bool is_initialized_;
+#ifdef TIME_TESTER
TMMetricObserver* metric_observer_;
+#endif // TIME_TESTER
private:
/**
* @brief Structure that contains conversion functions (Device ID -> Device
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_listener.h b/src/components/transport_manager/include/transport_manager/transport_manager_listener.h
index a4b240472..8384504cd 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_listener.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_listener.h
@@ -58,6 +58,14 @@ class TransportManagerListener {
virtual void OnDeviceListUpdated(const std::vector<DeviceInfo>&) = 0;
/**
+ * @brief Reaction on event, when new applications are started on device
+ * and SDL found this application
+ *
+ * @param device_handle Unique ID of connected device
+ */
+ virtual void OnApplicationListUpdated(DeviceHandle device_handle) = 0;
+
+ /**
* @brief Reaction to the event, when the device is found.
*
* @param device_info Variable that hold information about device.
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h b/src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h
index 5251a1c50..bd653da16 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h
@@ -52,7 +52,7 @@ class TransportManagerListenerEmpty : public TransportManagerListener {
/**
* @Destructor.
*/
- virtual ~TransportManagerListenerEmpty(){};
+ virtual ~TransportManagerListenerEmpty(){}
/**
* @brief Reaction to the event, when the list of devices is updated.
@@ -63,6 +63,15 @@ class TransportManagerListenerEmpty : public TransportManagerListener {
}
/**
+ * @brief Reaction on event, when new applications are started on device
+ * and SDL found this application
+ *
+ * @param device_handle Unique ID of device with new application list
+ */
+ virtual void OnApplicationListUpdated(DeviceHandle device_handle){
+ }
+
+ /**
* @brief Reaction to the event, when the device is found.
*
* @param device_info Variable that hold information about device.
diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
index e2453b749..498c04d4e 100644
--- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
+++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
@@ -57,8 +57,11 @@ TransportAdapterImpl::TransportAdapterImpl(
connections_mutex_(),
device_scanner_(device_scanner),
server_connection_factory_(server_connection_factory),
- client_connection_listener_(client_connection_listener),
- metric_observer_(NULL) {
+ client_connection_listener_(client_connection_listener)
+#ifdef TIME_TESTER
+ , metric_observer_(NULL)
+#endif // TIME_TESTER
+{
pthread_mutex_init(&devices_mutex_, 0);
pthread_mutex_init(&connections_mutex_, 0);
}
@@ -348,6 +351,12 @@ void TransportAdapterImpl::SearchDeviceDone(const DeviceVector& devices) {
}
}
+void TransportAdapterImpl::SearchApplicationsDone(const DeviceSptr& device) {
+ for (TransportAdapterListenerList::iterator it = listeners_.begin();
+ it != listeners_.end(); ++it)
+ (*it)->OnApplicationListUpdated(this, device->unique_device_id());
+}
+
void TransportAdapterImpl::SearchDeviceFailed(const SearchDeviceError& error) {
for (TransportAdapterListenerList::iterator it = listeners_.begin();
it != listeners_.end(); ++it)
@@ -438,9 +447,11 @@ void TransportAdapterImpl::DisconnectDone(const DeviceUID& device_id,
void TransportAdapterImpl::DataReceiveDone(const DeviceUID& device_id,
const ApplicationHandle& app_handle,
RawMessageSptr message) {
+#ifdef TIME_TESTER
if (metric_observer_) {
metric_observer_->StartRawMsg(message.get());
}
+#endif // TIME_TESTER
for (TransportAdapterListenerList::iterator it = listeners_.begin();
it != listeners_.end(); ++it)
(*it)->OnDataReceiveDone(this, device_id, app_handle, message);
@@ -577,13 +588,17 @@ std::string TransportAdapterImpl::DeviceName(const DeviceUID& device_id) const {
}
}
+#ifdef TIME_TESTER
void TransportAdapterImpl::SetTimeMetricObserver(TMMetricObserver* observer) {
metric_observer_ = observer;
}
+#endif // TIME_TESTER
+#ifdef TIME_TESTER
TMMetricObserver* TransportAdapterImpl::GetTimeMetricObserver() {
return metric_observer_;
}
+#endif // TIME_TESTER
void TransportAdapterImpl::Store() const {
}
diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc
index b32def07f..2af655cf4 100644
--- a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc
+++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc
@@ -89,6 +89,17 @@ void TransportAdapterListenerImpl::OnDeviceListUpdated(
}
}
+void TransportAdapterListenerImpl::OnApplicationListUpdated(const TransportAdapter* adapter,
+ const DeviceUID& device_handle) {
+ TransportAdapterEvent event(TransportAdapterListenerImpl::EventTypeEnum::ON_APPLICATION_LIST_UPDATED,
+ transport_adapter_, device_handle, 0, RawMessageSptr(), NULL);
+
+ if (transport_manager::E_SUCCESS !=
+ transport_manager_impl_->ReceiveEventFromDevice(event)) {
+ LOG4CXX_WARN(logger_, "Failed to receive event from device");
+ }
+}
+
void TransportAdapterListenerImpl::OnConnectDone(
const TransportAdapter* adapter, const DeviceUID& device,
const ApplicationHandle& application_id) {
diff --git a/src/components/transport_manager/src/transport_manager_default.cc b/src/components/transport_manager/src/transport_manager_default.cc
index 4e8250ae9..8cf0605ce 100644
--- a/src/components/transport_manager/src/transport_manager_default.cc
+++ b/src/components/transport_manager/src/transport_manager_default.cc
@@ -60,29 +60,37 @@ int TransportManagerDefault::Init() {
transport_adapter::TransportAdapterImpl* ta;
#ifdef BLUETOOTH_SUPPORT
ta = new transport_adapter::BluetoothTransportAdapter;
+#ifdef TIME_TESTER
if (metric_observer_) {
ta->SetTimeMetricObserver(metric_observer_);
}
+#endif // TIME_TESTER
AddTransportAdapter(ta);
#endif
uint16_t port = profile::Profile::instance()->transport_manager_tcp_adapter_port();
ta = new transport_adapter::TcpTransportAdapter(port);
+#ifdef TIME_TESTER
if (metric_observer_) {
ta->SetTimeMetricObserver(metric_observer_);
}
+#endif // TIME_TESTER
AddTransportAdapter(ta);
#ifdef USB_SUPPORT
ta = new transport_adapter::UsbAoaAdapter();
+#ifdef TIME_TESTER
if (metric_observer_) {
ta->SetTimeMetricObserver(metric_observer_);
}
+#endif // TIME_TESTER
AddTransportAdapter(ta);
#endif
#ifdef MME_SUPPORT
ta = new transport_adapter::MmeTransportAdapter();
+#ifdef TIME_TESTER
if (metric_observer_) {
ta->SetTimeMetricObserver(metric_observer_);
}
+#endif // TIME_TESTER
AddTransportAdapter(ta);
#endif
diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc
index 144e1466a..bb7aa24b3 100644
--- a/src/components/transport_manager/src/transport_manager_impl.cc
+++ b/src/components/transport_manager/src/transport_manager_impl.cc
@@ -76,8 +76,11 @@ TransportManagerImpl::TransportManagerImpl()
event_queue_thread_(),
device_listener_thread_wakeup_(),
is_initialized_(false),
- connection_id_counter_(0),
- metric_observer_(NULL) {
+ connection_id_counter_(0)
+#ifdef TIME_TESTER
+ , metric_observer_(NULL)
+#endif // TIME_TESTER
+{
LOG4CXX_INFO(logger_, "==============================================");
#ifdef USE_RWLOCK
pthread_rwlock_init(&message_queue_rwlock_, NULL);
@@ -622,9 +625,16 @@ void TransportManagerImpl::EventListenerThread(void) {
}
case TransportAdapterListenerImpl::EventTypeEnum::ON_DEVICE_LIST_UPDATED
: {
+ LOG4CXX_INFO(logger_, "Event ON_DEVICE_LIST_UPDATED");
OnDeviceListUpdated(ta);
break;
}
+ case TransportAdapterListenerImpl::EventTypeEnum::ON_APPLICATION_LIST_UPDATED: {
+ LOG4CXX_INFO(logger_, "Event ON_APPLICATION_LIST_UPDATED");
+ device_handle = converter_.UidToHandle(device_id);
+ RaiseEvent(&TransportManagerListener::OnApplicationListUpdated, device_handle);
+ break;
+ }
case TransportAdapterListenerImpl::EventTypeEnum::ON_CONNECT_DONE: {
LOG4CXX_INFO(logger_, "Event ON_CONNECT_DONE");
device_handle = converter_.UidToHandle(device_id);
@@ -713,9 +723,11 @@ void TransportManagerImpl::EventListenerThread(void) {
break;
}
data->set_connection_key(connection->id);
+#ifdef TIME_TESTER
if (metric_observer_) {
metric_observer_->StopRawMsg(data.get());
}
+#endif // TIME_TESTER
RaiseEvent(&TransportManagerListener::OnTMMessageReceived, data);
break;
}
@@ -769,9 +781,12 @@ void TransportManagerImpl::EventListenerThread(void) {
LOG4CXX_INFO(logger_, "Event listener thread finished");
}
+#ifdef TIME_TESTER
void TransportManagerImpl::SetTimeMetricObserver(TMMetricObserver* observer) {
metric_observer_ = observer;
}
+#endif // TIME_TESTER
+
void* TransportManagerImpl::MessageQueueStartThread(void* data) {
if (NULL != data) {
static_cast<TransportManagerImpl*>(data)->MessageQueueThread();