From 7f7834c6200a30795398b0444472e8336cc321b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Tue, 5 Dec 2023 18:30:33 +0000 Subject: [PATCH] Xiaomi: Fix reconnect if characteristics are null If a service was found, but characteristics are null, maybe we're just connecting too early - set the device to reconnect. --- .../service/devices/xiaomi/XiaomiSupport.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java index 5afaba60e..151999abb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java @@ -118,13 +118,17 @@ public class XiaomiSupport extends AbstractBTLEDeviceSupport { BluetoothGattCharacteristic btCharacteristicCommandWrite = null; BluetoothGattCharacteristic btCharacteristicActivityData = null; BluetoothGattCharacteristic btCharacteristicDataUpload = null; + + // Attempt to find a known xiaomi service for (Map.Entry xiaomiUuid : XiaomiBleUuids.UUIDS.entrySet()) { if (getSupportedServices().contains(xiaomiUuid.getKey())) { LOG.debug("Found Xiaomi service: {}", xiaomiUuid.getKey()); - btCharacteristicCommandRead = getCharacteristic(xiaomiUuid.getValue().getCharacteristicCommandRead()); - btCharacteristicCommandWrite = getCharacteristic(xiaomiUuid.getValue().getCharacteristicCommandWrite()); - btCharacteristicActivityData = getCharacteristic(xiaomiUuid.getValue().getCharacteristicActivityData()); - btCharacteristicDataUpload = getCharacteristic(xiaomiUuid.getValue().getCharacteristicDataUpload()); + uuidSet = xiaomiUuid.getValue(); + + btCharacteristicCommandRead = getCharacteristic(uuidSet.getCharacteristicCommandRead()); + btCharacteristicCommandWrite = getCharacteristic(uuidSet.getCharacteristicCommandWrite()); + btCharacteristicActivityData = getCharacteristic(uuidSet.getCharacteristicActivityData()); + btCharacteristicDataUpload = getCharacteristic(uuidSet.getCharacteristicDataUpload()); if (btCharacteristicCommandRead == null) { LOG.warn("btCharacteristicCommandRead characteristicc is null"); continue; @@ -139,7 +143,6 @@ public class XiaomiSupport extends AbstractBTLEDeviceSupport { continue; } - uuidSet = xiaomiUuid.getValue(); break; } }