From 699d4c38835a7584412872a53663ebb89c82c025 Mon Sep 17 00:00:00 2001 From: Rob Moran Date: Thu, 10 Mar 2016 21:36:38 +0000 Subject: [PATCH] Updated hex2bin to accept loggers --- dist/hex2bin.js | 21 +++++++++++++++++++-- example_node.js | 3 ++- example_web.html | 3 ++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/dist/hex2bin.js b/dist/hex2bin.js index c6f357e..f840762 100644 --- a/dist/hex2bin.js +++ b/dist/hex2bin.js @@ -48,7 +48,19 @@ EXTENDED_LINEAR_ADDRESS : '04', START_LINEAR_ADDRESS: '05' }; - + + var loggers = []; + function addLogger(loggerFn) { + if (typeof loggerFn === "function") { + loggers.push(loggerFn); + } + } + function log(message) { + loggers.forEach(function(logger) { + logger(message); + }); + } + /** * The first record of type extended linear address in the provided hex file will store the start base address of the binary. * Then the first data record's address offset will complete our start address. @@ -110,7 +122,7 @@ * This is because we are not to send the Master Boot Record (under minAddress) when updating the SoftDevice. * And we are not to send UICR data (above maxAddress) when updating the bootloader or application. */ - return function(hex, minAddress, maxAddress) { + function convert(hex, minAddress, maxAddress) { maxAddress = maxAddress || 0x80000; // This will always cut off the UICR and the user will not have to every specify this parameter. minAddress = minAddress || 0x0; @@ -170,5 +182,10 @@ }); return buffer; + } + + return { + addLogger: addLogger, + convert: convert }; })); diff --git a/example_node.js b/example_node.js index 7bc7f72..4882e04 100644 --- a/example_node.js +++ b/example_node.js @@ -4,6 +4,7 @@ var fs = require('fs'); var log = console.log; dfu.addLogger(log); +hex2bin.addLogger(log); var fileMask = ""; var fileName = null; @@ -38,7 +39,7 @@ dfu.findDevice({ services: [0x180D] }) .then(device => { var file = fs.readFileSync(fileName); var hex = file.toString(); - var buffer = hex2bin(hex); + var buffer = hex2bin.convert(hex); log("file length: " + buffer.byteLength); return dfu.provision(device, buffer); diff --git a/example_web.html b/example_web.html index ff367e4..f1474a4 100644 --- a/example_web.html +++ b/example_web.html @@ -38,6 +38,7 @@ resultsEl.innerText += message + "\n"; } dfu.addLogger(log); + hex2bin.addLogger(log); function download(url) { return new Promise(function(resolve, reject) { @@ -67,7 +68,7 @@ download(url) .then(hex => { - var buffer = hex2bin(hex); + var buffer = hex2bin.convert(hex); log("downloaded length: " + buffer.byteLength); // dfu.ImageType.Application is the default value for the third parameter