[Convergance] Fix for swapDevice 16/109616/1
authorLukasz Bardeli <l.bardeli@samsung.com>
Tue, 10 Jan 2017 08:22:57 +0000 (09:22 +0100)
committerHyunjin Park <hj.na.park@samsung.com>
Wed, 11 Jan 2017 02:19:57 +0000 (11:19 +0900)
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 34d3663798babb52701f9a4f755f0d3b920a0bf2..f617db7d839eb64bb067522c03e8f12ed0a8ba66 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 e16e4105829a1dbda0a093bf51959cff1d1cd0b2..649624405d21a43cfb54fa9ab1ba73df309cb228 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 c7f6784037b579c2d02e0f48421989a8643b3ccb..11482af6aca8dd6cd49c29219e6bac3f0e0ff09a 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 61d9d3ba4d00cc52f291347aa3362348fa450679..4f9167e0d11e558df55c6d63a06975876ff95d32 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;
   }