[Convergance] Fix for swapDevice 67/109567/1
authorLukasz Bardeli <l.bardeli@samsung.com>
Tue, 10 Jan 2017 08:22:57 +0000 (09:22 +0100)
committerLukasz Bardeli <l.bardeli@samsung.com>
Tue, 10 Jan 2017 08:22:57 +0000 (09:22 +0100)
Change-Id: I42ddf08ec4d8343124db8c1d994b6ede499f6a8b
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/convergence/convergence_device.cc
src/convergence/convergence_device.h
src/convergence/convergence_manager.cc
src/convergence/convergence_service.cc

index 34d3663..f617db7 100644 (file)
@@ -154,7 +154,7 @@ void ConvergenceDevice::ForEachServiceCb(conv_service_h service_handle,
   s->Refresh();
 }
 
-void ConvergenceDevice::Refresh() {
+void ConvergenceDevice::Refresh(conv_device_h device_handle) {
   ScopeLogger();
   // Getting device properties from handle
   id_ = ExtractDevicePropery(CONV_DEVICE_ID);
@@ -165,7 +165,14 @@ void ConvergenceDevice::Refresh() {
     id_.c_str(), name_.c_str(), type_.c_str());
 
   // Extracting services
-  const int error = conv_device_foreach_service(device_handle_, ForEachServiceCb, this);
+  conv_device_h handle = nullptr;
+  if (device_handle) {
+    handle = device_handle;
+  } else {
+    handle = device_handle_;
+  }
+
+  const int error = conv_device_foreach_service(handle, ForEachServiceCb, this);
   if (CONV_ERROR_NONE != error) {
     trace_conv_error(error, __LINE__, "conv_device_foreach_service");
   }
index e16e410..6496244 100644 (file)
@@ -44,11 +44,12 @@ class ConvergenceDevice {
 
 
  public:
-  void Refresh();
+  void Refresh(conv_device_h device_handle = nullptr);
   ConvergenceService *GetService(const int service_type) const;
   //picojson::object ToJson() const;
   picojson::value ToJson() const;
   //std::string get_device() const {return device_handle_; }
+  int ServiceCount() {return services_.size();};
 
  public:
   ConvergenceService *RegisterLocalService(const int service_type);
index c7f6784..11482af 100644 (file)
@@ -115,6 +115,9 @@ ConvergenceDevice *ConvergenceManager::SwapDevice(const char *device_id,
     d->SetId(device_id);
     registered_devices_[device_id] = d;
     LoggerI("...registering the device [%s, %x]", device_id, device_handle);
+    // Assume that there are only two services
+  } else if(registered_devices_[device_id]->ServiceCount() < 2) {
+    registered_devices_[device_id]->Refresh(device_handle);
   }
   return registered_devices_[device_id];
 }
index 61d9d3b..4f9167e 100644 (file)
@@ -150,7 +150,7 @@ void ConvergenceService::Refresh() {
   ScopeLogger();
   conv_service_h service_handle = FindServiceHandle();
   if (!service_handle) {
-    LoggerE("AAAAAA!!! Service not found");
+    LoggerE("Service not found");
     return;
   }