Отключение устройства BLE, затем два противоположных исключения BleAlreadyConnectedException и BleDisconnectedException - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над DFU OTA (обновление прошивки устройства в эфире).

Чтобы сделать это, я должен подключить устройство, а затем отправить команду, чтобы приказать устройству переключиться в режим загрузчика. После этой команды устройство перезагружается, при этом соединение теряется. Только после этого состояния, если я попытаюсь восстановить соединение с

rxBledevice
?.establishConnection(false)
?.subscribe({/**/},{/**/})

поднять ошибку BleAlreadyConnectedException

Затем, если я отправлю какую-либо команду на устройство, например, с

rxBleConnection
?.writeCharacteristic(UUID, ba)
?.subscribe({/**/},{/**/})

поднять ошибку, BleDisconnectedException.

Я пытаюсь удалить наблюдателя соединения, но ничего не изменилось. Единственный способ (не приемлемо) - перезапустить приложение после перезагрузки BleDevice и отключиться.

Если это может помочь, я также получил эти журналы:

E/BLE: write control OTA failed : com.polidea.rxandroidble2.exceptions.BleGattCallbackTimeoutException: GATT exception from MAC address 00:0B:57:4C:6C:9B, with type BleGattOperation{description='CHARACTERISTIC_WRITE'}
D/BluetoothGatt: onClientConnectionState() - status=22 clientIf=7 device=00:0B:57:4C:6C:XX
E/BLE: error connection BLE Disconnected from 00:0B:57:4C:6C:9B with status 22 (UNKNOWN)

У вас есть представление о том, что я делаю неправильно?

Спасибо.

...