Make update-slave-firmware.js extremely resilient (not a single failure out of 100 updates). Add shared.js

This commit is contained in:
László Monda
2017-10-29 17:17:12 +01:00
parent cf007f81bd
commit 976e402445
2 changed files with 30 additions and 2 deletions

24
scripts/shared.js Normal file
View File

@@ -0,0 +1,24 @@
require('shelljs/global');
function execRetry(command) {
let firstRun = true;
let remainingRetries = 3;
let code;
do {
if (!firstRun) {
console.log(`Retrying ${command}`)
}
config.fatal = !remainingRetries;
code = exec(command).code;
config.fatal = true;
firstRun = false;
} while(code && --remainingRetries);
}
const exp = {
execRetry
}
Object.keys(exp).forEach(function (cmd) {
global[cmd] = exp[cmd];
});

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env node
const program = require('commander');
require('shelljs/global');
require('./shared')
config.fatal = true;
@@ -53,9 +54,12 @@ config.verbose = true;
exec(`${usbDir}/send-kboot-command-to-slave.js ping 0x10`);
exec(`${usbDir}/jump-to-slave-bootloader.js`);
exec(`${usbDir}/reenumerate.js buspal`);
exec(`${blhostBuspal} get-property 1`);
execRetry(`${blhostBuspal} get-property 1`);
exec(`${blhostBuspal} flash-erase-all-unsecure`);
exec(`${blhostBuspal} write-memory 0x0 ${firmwareImage}`);
exec(`${blhostUsb} reset`);
exec(`${usbDir}/reenumerate.js normalKeyboard`);
exec(`${usbDir}/send-kboot-command-to-slave.js reset 0x10`);
execRetry(`${usbDir}/send-kboot-command-to-slave.js reset 0x10`);
config.verbose = false;
echo('Firmware updated successfully');