From 44297d30adfe492e08d3836b43272505d8d6708a Mon Sep 17 00:00:00 2001 From: eddy Date: Thu, 30 Jul 2026 19:16:28 +0200 Subject: [PATCH] fix: check writeCharacteristic return value in sendOtaData --- .../src/main/java/nl/eddydevink/sylda/BleRelayManager.kt | 8 ++++---- .../app/src/main/java/nl/eddydevink/sylda/OtaManager.kt | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt b/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt index 846e382..e932aba 100644 --- a/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt +++ b/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt @@ -194,12 +194,12 @@ class BleRelayManager( } @SuppressLint("MissingPermission") - fun sendOtaData(data: ByteArray) { - val char = otaCharacteristic ?: return - val gatt = bluetoothGatt ?: return + fun sendOtaData(data: ByteArray): Boolean { + val char = otaCharacteristic ?: return false + val gatt = bluetoothGatt ?: return false char.value = data char.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE - gatt.writeCharacteristic(char) + return gatt.writeCharacteristic(char) } @SuppressLint("MissingPermission") diff --git a/android/app/src/main/java/nl/eddydevink/sylda/OtaManager.kt b/android/app/src/main/java/nl/eddydevink/sylda/OtaManager.kt index ab99f57..eb0fffb 100644 --- a/android/app/src/main/java/nl/eddydevink/sylda/OtaManager.kt +++ b/android/app/src/main/java/nl/eddydevink/sylda/OtaManager.kt @@ -105,7 +105,13 @@ class OtaManager( var retries = 0 while (retries < MAX_RETRIES) { - relayManager.sendOtaData(packet.array()) + val writeOk = relayManager.sendOtaData(packet.array()) + if (!writeOk) { + Log.w(TAG, "writeCharacteristic returned false for chunk $seq, retrying") + retries++ + delay(100) + continue + } Log.d(TAG, "Sent chunk $seq/$totalChunks ($chunkSize bytes) attempt ${retries + 1}") try {