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 41110357f..5afaba60e 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 @@ -114,9 +114,31 @@ public class XiaomiSupport extends AbstractBTLEDeviceSupport { @Override protected final TransactionBuilder initializeDevice(final TransactionBuilder builder) { XiaomiBleUuids.XiaomiBleUuidSet uuidSet = null; + BluetoothGattCharacteristic btCharacteristicCommandRead = null; + BluetoothGattCharacteristic btCharacteristicCommandWrite = null; + BluetoothGattCharacteristic btCharacteristicActivityData = null; + BluetoothGattCharacteristic btCharacteristicDataUpload = null; 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()); + if (btCharacteristicCommandRead == null) { + LOG.warn("btCharacteristicCommandRead characteristicc is null"); + continue; + } else if (btCharacteristicCommandWrite == null) { + LOG.warn("btCharacteristicCommandWrite characteristicc is null"); + continue; + } else if (btCharacteristicActivityData == null) { + LOG.warn("btCharacteristicActivityData characteristicc is null"); + continue; + } else if (btCharacteristicDataUpload == null) { + LOG.warn("btCharacteristicDataUpload characteristicc is null"); + continue; + } + uuidSet = xiaomiUuid.getValue(); break; } @@ -129,11 +151,6 @@ public class XiaomiSupport extends AbstractBTLEDeviceSupport { return builder; } - final BluetoothGattCharacteristic btCharacteristicCommandRead = getCharacteristic(uuidSet.getCharacteristicCommandRead()); - final BluetoothGattCharacteristic btCharacteristicCommandWrite = getCharacteristic(uuidSet.getCharacteristicCommandWrite()); - final BluetoothGattCharacteristic btCharacteristicActivityData = getCharacteristic(uuidSet.getCharacteristicActivityData()); - final BluetoothGattCharacteristic btCharacteristicDataUpload = getCharacteristic(uuidSet.getCharacteristicDataUpload()); - // FIXME unsetDynamicState unsets the fw version, which causes problems.. if (getDevice().getFirmwareVersion() == null && mFirmwareVersion != null) { getDevice().setFirmwareVersion(mFirmwareVersion);