improve connect to service function
authorCorentin Lecouvey <corentin.lecouvey@open.eurogiciel.org>
Fri, 18 Jul 2014 14:54:25 +0000 (16:54 +0200)
committerCorentin Lecouvey <corentin.lecouvey@open.eurogiciel.org>
Tue, 12 Aug 2014 12:05:38 +0000 (14:05 +0200)
bluetooth/bluetooth_api.js
bluetooth/bluetooth_instance_capi.cc

index e322d0e..6d6cb6d 100644 (file)
@@ -874,15 +874,17 @@ BluetoothDevice.prototype.connectToServiceByUUID =
     if (result.error != 0) {
       if (errorCallback) {
         var error = new tizen.WebAPIError(tizen.WebAPIException.UNKNOWN_ERR);
+        if(result.error == 1)
+          error = new tizen.WebAPIError(tizen.WebAPIException.INVALID_VALUES_ERR);
         errorCallback(error);
       }
-
       throw new tizen.WebAPIException(tizen.WebAPIException.TYPE_MISMATCH_ERR);
       return;
     }
 
     if (socketSuccessCallback) {
-      var socket_cb = new BluetoothSocket(result.uuid, this, result);
+      var i = adapter.indexOfDevice(adapter.known_devices, result.peer);
+      var socket_cb = new BluetoothSocket(result.uuid, adapter.known_devices[i], result);
       socketSuccessCallback(socket_cb);
     }
   });
index ee8f976..0ef439f 100644 (file)
@@ -390,6 +390,7 @@ void BluetoothInstance::OnSocketConnected(int result,
         picojson::value(static_cast<double>(connection->socket_fd));
     o["peer"] = picojson::value(connection->remote_address);
     obj->socket_connected_map_[connection->socket_fd] = true;
+
   } else if (connection_state == BT_SOCKET_CONNECTED &&
              connection->local_role == BT_SOCKET_CLIENT) {
     o["cmd"] = picojson::value("");
@@ -400,7 +401,9 @@ void BluetoothInstance::OnSocketConnected(int result,
     o["uuid"] = picojson::value(connection->service_uuid);
     o["socket_fd"] =
         picojson::value(static_cast<double>(connection->socket_fd));
+    o["peer"] = picojson::value(connection->remote_address);
     obj->socket_connected_map_[connection->socket_fd] = true;
+
   } else if (connection_state == BT_SOCKET_DISCONNECTED) {
       o["cmd"] = picojson::value("");
       o["reply_id"] =
@@ -714,13 +717,21 @@ void BluetoothInstance::HandleRFCOMMListen(const picojson::value& msg) {
 }
 
 void BluetoothInstance::HandleConnectToService(const picojson::value& msg) {
-  callbacks_id_map_["ConnectToService"] = msg.get("reply_id").to_str();
+  picojson::value::object o;
   int error = 0;
 
   CAPI_ERR(
       bt_socket_connect_rfcomm(msg.get("address").to_str().c_str(),
                                msg.get("uuid").to_str().c_str()),
       error);
+  if (error != BT_ERROR_NONE) {
+    o["error"] = picojson::value(static_cast<double>(1));
+    o["cmd"] = picojson::value("");
+    o["reply_id"] = msg.get("reply_id");
+    InternalPostMessage(picojson::value(o));
+  } else {
+    callbacks_id_map_["ConnectToService"] = msg.get("reply_id").to_str();
+  }
  }
 
 void BluetoothInstance::HandleSocketWriteData(const picojson::value& msg) {