From 9972621b7ece71fadd18dfda8bedf9c9abacbdd6 Mon Sep 17 00:00:00 2001 From: Sacha Froment Date: Tue, 13 Nov 2018 15:49:48 +0100 Subject: [PATCH] fix(java): fix waiter released to early Signed-off-by: Sacha Froment --- .../ble/src/main/java/chat/berty/ble/BertyDevice.java | 2 +- .../android/ble/src/main/java/chat/berty/ble/Manager.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/client/react-native/android/ble/src/main/java/chat/berty/ble/BertyDevice.java b/client/react-native/android/ble/src/main/java/chat/berty/ble/BertyDevice.java index 6c37fd8799..faac6ab399 100644 --- a/client/react-native/android/ble/src/main/java/chat/berty/ble/BertyDevice.java +++ b/client/react-native/android/ble/src/main/java/chat/berty/ble/BertyDevice.java @@ -43,7 +43,7 @@ public BertyDevice(BluetoothDevice device, BluetoothGatt gatt, String address) { this.addr = address; this.device = device; this.isWaiting = new Semaphore(1); - waitReady = new CountDownLatch(2); + waitReady = new CountDownLatch(8); this.toSend = new ArrayList<>(); new Thread(new Runnable() { @Override diff --git a/client/react-native/android/ble/src/main/java/chat/berty/ble/Manager.java b/client/react-native/android/ble/src/main/java/chat/berty/ble/Manager.java index ece704f977..a83c3efb96 100644 --- a/client/react-native/android/ble/src/main/java/chat/berty/ble/Manager.java +++ b/client/react-native/android/ble/src/main/java/chat/berty/ble/Manager.java @@ -565,22 +565,30 @@ public void onServicesDiscovered(BluetoothGatt gatt, int status) { todo.add(new PopulateCharacteristic(IS_READY_UUID, bDevice)); todo.add(new PopulateCharacteristic(ACCEPT_UUID, bDevice)); + Log.e(TAG, "START DISCO CHAR"); + try { List> answers = es.invokeAll(todo); for (Future future:answers) { BluetoothGattCharacteristic c = future.get(); if (c.getUuid().equals(MA_UUID)) { bDevice.maCharacteristic = c; + bDevice.waitReady.countDown(); } else if (c.getUuid().equals(PEER_ID_UUID)) { bDevice.peerIDCharacteristic = c; + bDevice.waitReady.countDown(); } else if (c.getUuid().equals(CLOSER_UUID)) { bDevice.closerCharacteristic = c; + bDevice.waitReady.countDown(); } else if (c.getUuid().equals(WRITER_UUID)) { bDevice.writerCharacteristic = c; + bDevice.waitReady.countDown(); } else if (c.getUuid().equals(IS_READY_UUID)) { bDevice.isRdyCharacteristic = c; + bDevice.waitReady.countDown(); } else if (c.getUuid().equals(ACCEPT_UUID)) { bDevice.acceptCharacteristic = c; + bDevice.waitReady.countDown(); } else { Log.e(TAG, "UNKNOW CHARACT"); }