33 lines
853 B
JavaScript
Executable File
33 lines
853 B
JavaScript
Executable File
#!/usr/bin/env node
|
|
let fs = require('fs');
|
|
let uhk = require('./uhk');
|
|
|
|
let eepromTransferType = process.argv[2];
|
|
let eepromTransferId = uhk.eepromTransfer[eepromTransferType];
|
|
|
|
if (eepromTransferId === undefined) {
|
|
console.error(`Gotta provide one of ${Object.keys(uhk.eepromTransfer).join(', ')}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
let isFirstSend = true;
|
|
let isFirstReceive = true;
|
|
let isEepromBusy = true;
|
|
|
|
uhk.sendUsbPacketsByCallback(() => {
|
|
if (isFirstSend) {
|
|
isFirstSend = false;
|
|
return new Buffer([uhk.usbCommands.launchEepromTransfer, eepromTransferId]);
|
|
} else {
|
|
return isEepromBusy ? new Buffer([uhk.usbCommands.getKeyboardState]) : null;
|
|
}
|
|
});
|
|
|
|
uhk.registerReceiveCallback((buffer) => {
|
|
if (isFirstReceive) {
|
|
isFirstReceive = false;
|
|
} else {
|
|
isEepromBusy = buffer[1] === 1;
|
|
}
|
|
});
|