From 6a30516f48da9d5f00154047d429477f22b8fc16 Mon Sep 17 00:00:00 2001 From: Michael Dietz Date: Tue, 23 Feb 2016 12:58:15 +0100 Subject: [PATCH] Fix switch statement so DFU OTA works for mbed and recent revisions of bootloader. --- dist/dfu.js | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/dist/dfu.js b/dist/dfu.js index 87310bd..74530da 100644 --- a/dist/dfu.js +++ b/dist/dfu.js @@ -316,26 +316,24 @@ switch(req_opcode) { case OPCODE.START_DFU: - log('write init packet'); - - if(majorVersion <= 6) { // init packet is not used in SDK v6 (so not used in mbed). - break; - } - - controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 0])) - .then(() => { - return packetChar.writeValue(generateInitPacket()); - }) - .then(() => { - return controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 1])); - }) - .catch(error => { - error = "error writing dfu init parameters: " + error; - log(error); - reject(error); - }); - break; case OPCODE.INITIALIZE_DFU_PARAMETERS: + if(req_opcode === OPCODE.START_DFU && majorVersion > 6) { // init packet is not used in SDK v6 (so not used in mbed). + log('write init packet'); + controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 0])) + .then(() => { + return packetChar.writeValue(generateInitPacket()); + }) + .then(() => { + return controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 1])); + }) + .catch(error => { + error = "error writing dfu init parameters: " + error; + log(error); + reject(error); + }); + break; + } + log('send packet count'); var buffer = new ArrayBuffer(3);