From e830920c53fc4def04914ca03f3746d5b4236739 Mon Sep 17 00:00:00 2001 From: kgn Date: Wed, 31 Jan 2024 15:11:48 -0500 Subject: [PATCH] Missing DFU manifest code added --- src/server/lib/Firmware/Flashing/DFUFlasher.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/server/lib/Firmware/Flashing/DFUFlasher.js b/src/server/lib/Firmware/Flashing/DFUFlasher.js index a64a62972..642d5c1e2 100644 --- a/src/server/lib/Firmware/Flashing/DFUFlasher.js +++ b/src/server/lib/Firmware/Flashing/DFUFlasher.js @@ -45,6 +45,8 @@ class DFUFlasher extends events.EventEmitter { await this.dfu.open(); this.map = this.parseHex(this.hex); let startAddress = null; + + for (let [address, dataBlock] of this.map) { this.emit('info', `Writing block of size ${dataBlock.byteLength} at address 0x${address.toString(16)}`); if (!startAddress) { @@ -52,8 +54,15 @@ class DFUFlasher extends events.EventEmitter { } await this.download(address, this.XFER_SIZE, dataBlock); } - log.info(`Jumping back to start address ${startAddress}`); + + log.info(`Jumping back to start address ${startAddress} to manifest`); await this.sendDFUCommand(this.SET_ADDRESS, startAddress, 4); + await this.dfu.download(new ArrayBuffer(0), 0); + try { + await this.dfu.pollUntil(state => (state === this.dfu.dfuMANIFEST)); + } catch (error) { + this.emit('error', error); + } await this.dfu.close(); this.emit('end');