transport_manager
authorJustin Dickow <jjdickow@gmail.com>
Wed, 23 Jul 2014 17:46:57 +0000 (13:46 -0400)
committerJustin Dickow <jjdickow@gmail.com>
Wed, 23 Jul 2014 17:46:57 +0000 (13:46 -0400)
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
13 files changed:
src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter.h
src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_controller.h
src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h
src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h
src/components/transport_manager/include/transport_manager/transport_manager.h
src/components/transport_manager/include/transport_manager/transport_manager_impl.h
src/components/transport_manager/include/transport_manager/transport_manager_listener.h
src/components/transport_manager/include/transport_manager/transport_manager_listener_empty.h
src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc
src/components/transport_manager/src/transport_manager_default.cc
src/components/transport_manager/src/transport_manager_impl.cc

index 8a1a3a9..11dd0ee 100644 (file)
@@ -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
 
 };
 
index 20e9123..f87651b 100644 (file)
@@ -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.
index 3ece300..bba6bf5 100644 (file)
@@ -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
index 186ed99..48bb0e5 100644 (file)
@@ -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.
    *
index df3eebf..ac94591 100644 (file)
@@ -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,
index deb334a..c7c61b9 100644 (file)
@@ -78,7 +78,7 @@ class TransportManager {
    *
    * @return Code error.
    **/
-  virtual int ConnectDevice(const DeviceHandle &device_id) = 0;
+  virtual int ConnectDevice(const DeviceHandledevice_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 DeviceHandledevice_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 DeviceHandledevice_handle) = 0;
 
   /**
    * @brief Turns on or off visibility of SDL to mobile devices
index d7c55e2..7864614 100755 (executable)
@@ -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
index a4b2404..8384504 100644 (file)
@@ -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.
index 5251a1c..bd653da 100644 (file)
@@ -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.
index e2453b7..498c04d 100644 (file)
@@ -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 {
 }
index b32def0..2af655c 100644 (file)
@@ -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) {
index 4e8250a..8cf0605 100644 (file)
@@ -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
 
index 144e146..bb7aa24 100644 (file)
@@ -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();