diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl.java index da1e5ae..f14e359 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl.java @@ -60,8 +60,11 @@ import no.nordicsemi.android.dfu.internal.exception.UploadAbortedException; final BluetoothGattService dfuService = gatt.getService(BUTTONLESS_DFU_SERVICE_UUID); if (dfuService == null) return false; - mButtonlessDfuCharacteristic = dfuService.getCharacteristic(BUTTONLESS_DFU_UUID); - return mButtonlessDfuCharacteristic != null; + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(BUTTONLESS_DFU_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) + return false; + mButtonlessDfuCharacteristic = characteristic; + return true; } @Override diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl.java index 0ec226d..efdb828 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl.java @@ -69,8 +69,11 @@ import no.nordicsemi.android.dfu.internal.exception.UploadAbortedException; final BluetoothGattService dfuService = gatt.getService(BUTTONLESS_DFU_SERVICE_UUID); if (dfuService == null) return false; - mButtonlessDfuCharacteristic = dfuService.getCharacteristic(BUTTONLESS_DFU_UUID); - return mButtonlessDfuCharacteristic != null; + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(BUTTONLESS_DFU_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) + return false; + mButtonlessDfuCharacteristic = characteristic; + return true; } @Override diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl.java index f238beb..3a8574f 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl.java @@ -59,8 +59,11 @@ import no.nordicsemi.android.dfu.internal.exception.UploadAbortedException; final BluetoothGattService dfuService = gatt.getService(EXPERIMENTAL_BUTTONLESS_DFU_SERVICE_UUID); if (dfuService == null) return false; - mButtonlessDfuCharacteristic = dfuService.getCharacteristic(EXPERIMENTAL_BUTTONLESS_DFU_UUID); - return mButtonlessDfuCharacteristic != null; + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(EXPERIMENTAL_BUTTONLESS_DFU_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) + return false; + mButtonlessDfuCharacteristic = characteristic; + return true; } @Override diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyButtonlessDfuImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyButtonlessDfuImpl.java index 8175bc6..06b023a 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyButtonlessDfuImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyButtonlessDfuImpl.java @@ -58,9 +58,10 @@ import no.nordicsemi.android.dfu.internal.exception.UploadAbortedException; final BluetoothGattService dfuService = gatt.getService(DFU_SERVICE_UUID); if (dfuService == null) return false; - mControlPointCharacteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); - if (mControlPointCharacteristic == null) + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) return false; + mControlPointCharacteristic = characteristic; mProgressInfo.setProgress(DfuBaseService.PROGRESS_STARTING); diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyDfuImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyDfuImpl.java index 407c49b..d0bf37a 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyDfuImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/LegacyDfuImpl.java @@ -132,9 +132,12 @@ import no.nordicsemi.android.error.LegacyDfuError; final BluetoothGattService dfuService = gatt.getService(DFU_SERVICE_UUID); if (dfuService == null) return false; - mControlPointCharacteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) + return false; + mControlPointCharacteristic = characteristic; mPacketCharacteristic = dfuService.getCharacteristic(DFU_PACKET_UUID); - return mControlPointCharacteristic != null && mPacketCharacteristic != null; + return mPacketCharacteristic != null; } @Override diff --git a/dfu/src/main/java/no/nordicsemi/android/dfu/SecureDfuImpl.java b/dfu/src/main/java/no/nordicsemi/android/dfu/SecureDfuImpl.java index dce2701..7edf56a 100644 --- a/dfu/src/main/java/no/nordicsemi/android/dfu/SecureDfuImpl.java +++ b/dfu/src/main/java/no/nordicsemi/android/dfu/SecureDfuImpl.java @@ -148,9 +148,12 @@ import no.nordicsemi.android.error.SecureDfuError; final BluetoothGattService dfuService = gatt.getService(DFU_SERVICE_UUID); if (dfuService == null) return false; - mControlPointCharacteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); + final BluetoothGattCharacteristic characteristic = dfuService.getCharacteristic(DFU_CONTROL_POINT_UUID); + if (characteristic == null || characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG) == null) + return false; + mControlPointCharacteristic = characteristic; mPacketCharacteristic = dfuService.getCharacteristic(DFU_PACKET_UUID); - return mControlPointCharacteristic != null && mPacketCharacteristic != null; + return mPacketCharacteristic != null; } @Override