我正在研究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)
您知道我在做什么错吗?
谢谢。