From f7cdbbb5e06f71bb4aba2a43dbdc62bf681f0c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Tue, 17 Oct 2017 01:27:01 +0200 Subject: [PATCH] Make jump-to-bootloader.js able to reenumerate the UHK as BusPal proxy. --- packages/usb/jump-to-bootloader.js | 11 ++++++++++- packages/usb/uhk.js | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/usb/jump-to-bootloader.js b/packages/usb/jump-to-bootloader.js index 5b624584..f939736f 100755 --- a/packages/usb/jump-to-bootloader.js +++ b/packages/usb/jump-to-bootloader.js @@ -6,6 +6,9 @@ let pollingIntervalMs = 100; let bootloaderTimeoutMs = 5000; let jumped = false; +console.log(process.argv[2]) +let enumerationMode = process.argv[2] === 'buspal' ? uhk.enumerationModes.busPal : uhk.enumerationModes.bootloader; + console.log('Trying to jump to the bootloader...'); setInterval(() => { timeoutMs -= pollingIntervalMs; @@ -26,8 +29,14 @@ setInterval(() => { if (device && !jumped) { console.log('UHK found, jumping to bootloader'); let t = bootloaderTimeoutMs; - device.write(uhk.getTransferData(new Buffer([uhk.usbCommands.jumpToBootloader, 0, t&0xff, (t&0xff<<8)>>8, (t&0xff<<16)>>16, (t&0xff<<24)>>24]))); + let message = new Buffer([uhk.usbCommands.jumpToBootloader, enumerationMode, t&0xff, (t&0xff<<8)>>8, (t&0xff<<16)>>16, (t&0xff<<24)>>24]); + console.log(message); + device.write(uhk.getTransferData(message)); jumped = true; + + if (enumerationMode == uhk.enumerationModes.busPal) { + process.exit(); + } } }, pollingIntervalMs); diff --git a/packages/usb/uhk.js b/packages/usb/uhk.js index 3824b94a..e1bd187f 100755 --- a/packages/usb/uhk.js +++ b/packages/usb/uhk.js @@ -65,6 +65,12 @@ exports = module.exports = moduleExports = { readDebugInfo: 17, jumpToSlaveBootloader: 18, }, + enumerationModes: { + bootloader: 0, + busPal: 1, + normalKeyboard: 2, + compatibleKeyboard: 3, + }, systemPropertyIds: { usbProtocolVersion: 0, bridgeProtocolVersion: 1,