transferFirmware
open suspend override fun transferFirmware(firmware: ByteArray, onProgress: suspend (Float) -> Unit): Result<Unit>(source)
Drives the full upload sequence (START, init-packet brackets, PRN setup, firmware stream, validate, activate).
Sequence details:
START_DFU [0x04](APP image only).Image sizes payload on Packet char:
[0u32, 0u32, firmware.size_u32].Await START response.
INIT_PARAMS_START, init bytes on Packet,INIT_PARAMS_COMPLETE. Await init response.PRN_REQ [PRN_LE16]. (No response.)RECEIVE_FIRMWARE_IMAGE. (No response.)Stream firmware in MTU-sized chunks. Every PRN packets, await
PacketReceipt(bytesReceived)and verify count.After last byte, await final response for
RECEIVE_FIRMWARE_IMAGE.VALIDATE, await response.ACTIVATE_AND_RESET— device reboots; write may fail with disconnect, treat as success.