fix: check writeCharacteristic return value in sendOtaData
This commit is contained in:
parent
fcbf1e9b5f
commit
44297d30ad
2 changed files with 11 additions and 5 deletions
|
|
@ -194,12 +194,12 @@ class BleRelayManager(
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
fun sendOtaData(data: ByteArray) {
|
fun sendOtaData(data: ByteArray): Boolean {
|
||||||
val char = otaCharacteristic ?: return
|
val char = otaCharacteristic ?: return false
|
||||||
val gatt = bluetoothGatt ?: return
|
val gatt = bluetoothGatt ?: return false
|
||||||
char.value = data
|
char.value = data
|
||||||
char.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE
|
char.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE
|
||||||
gatt.writeCharacteristic(char)
|
return gatt.writeCharacteristic(char)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,13 @@ class OtaManager(
|
||||||
var retries = 0
|
var retries = 0
|
||||||
|
|
||||||
while (retries < MAX_RETRIES) {
|
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}")
|
Log.d(TAG, "Sent chunk $seq/$totalChunks ($chunkSize bytes) attempt ${retries + 1}")
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue