Add read-config.js and add new USB command ids and receive callback to uhk.js
This commit is contained in:
41
usb/read-config.js
Executable file
41
usb/read-config.js
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env node
|
||||
let fs = require('fs');
|
||||
let uhk = require('./uhk');
|
||||
|
||||
const chunkSize = 63;
|
||||
|
||||
let isHardwareConfig = process.argv[2] === 'h';
|
||||
let configTypeString = isHardwareConfig ? 'hardware' : 'user';
|
||||
let isFirstSend = true;
|
||||
let isFirstReceive = true;
|
||||
let configSize;
|
||||
let offset = 0;
|
||||
let configBuffer;
|
||||
let chunkSizeToRead;
|
||||
|
||||
uhk.sendUsbPacketsByCallback(() => {
|
||||
if (isFirstSend) {
|
||||
isFirstSend = false;
|
||||
return new Buffer([uhk.usbCommands.getProperty, isHardwareConfig ? uhk.systemPropertyIds.hardwareConfigSize : uhk.systemPropertyIds.userConfigSize]);
|
||||
} else {
|
||||
chunkSizeToRead = Math.min(chunkSize, configSize - offset)
|
||||
let buffer = Buffer([uhk.usbCommands.readUserConfig, chunkSizeToRead, offset & 0xff, offset >> 8]);
|
||||
let bufferOrNull = offset >= configSize ? null : buffer;
|
||||
if (!bufferOrNull) {
|
||||
fs.writeFileSync(`${configTypeString}-config.out`, configBuffer, 'binary');
|
||||
}
|
||||
offset += chunkSizeToRead;
|
||||
return bufferOrNull;
|
||||
}
|
||||
});
|
||||
|
||||
uhk.registerReceiveCallback((buffer) => {
|
||||
if (isFirstReceive) {
|
||||
isFirstReceive = false;
|
||||
configSize = buffer[1] + (buffer[2]<<8);
|
||||
console.log(`${configTypeString}configSize:`, configSize);
|
||||
configBuffer = new Buffer(0);
|
||||
} else {
|
||||
configBuffer = Buffer.concat([configBuffer, new Buffer(buffer.slice(1, chunkSizeToRead+1))]);
|
||||
}
|
||||
});
|
||||
23
usb/uhk.js
23
usb/uhk.js
@@ -1,4 +1,5 @@
|
||||
let usb = require('usb');
|
||||
let receiveCallback;
|
||||
|
||||
function bufferToString(buffer) {
|
||||
let str = '';
|
||||
@@ -47,6 +48,10 @@ class DelayMs {
|
||||
}
|
||||
}
|
||||
|
||||
function registerReceiveCallback(receiveCallbackParam) {
|
||||
receiveCallback = receiveCallbackParam;
|
||||
}
|
||||
|
||||
function sendUsbPacketsByCallback(packetProvider, options={}) {
|
||||
let packet = packetProvider()
|
||||
|
||||
@@ -79,6 +84,7 @@ function sendUsbPacketsByCallback(packetProvider, options={}) {
|
||||
process.exit(2);
|
||||
}
|
||||
console.log('Received:', bufferToString(receivedBuffer));
|
||||
(receiveCallback || (()=>{}))(receivedBuffer);
|
||||
sendUsbPacketsByCallback(packetProvider);
|
||||
})
|
||||
}
|
||||
@@ -102,6 +108,7 @@ exports = module.exports = {
|
||||
getUhkDevice,
|
||||
getBootloaderDevice,
|
||||
getUsbEndpoints,
|
||||
registerReceiveCallback,
|
||||
sendUsbPacket,
|
||||
sendUsbPackets,
|
||||
sendUsbPacketsByCallback,
|
||||
@@ -114,10 +121,22 @@ exports = module.exports = {
|
||||
writeEeprom: 5,
|
||||
readEeprom: 6,
|
||||
readMergeSensor: 7,
|
||||
uploadConfig: 8,
|
||||
writeUserConfig: 8,
|
||||
applyConfig: 9,
|
||||
setLedPwm: 10,
|
||||
readAdc: 11
|
||||
readAdc: 11,
|
||||
launchEepromTransfer: 12,
|
||||
readHardwareConfig: 13,
|
||||
writeHardwareConfig: 14,
|
||||
readUserConfig: 15,
|
||||
},
|
||||
systemPropertyIds: {
|
||||
usbProtocolVersion: 0,
|
||||
bridgeProtocolVersion: 1,
|
||||
dataModelVersion: 2,
|
||||
firmwareVersion: 3,
|
||||
hardwareConfigSize: 4,
|
||||
userConfigSize: 5,
|
||||
},
|
||||
leftLedDriverAddress: 0b1110100,
|
||||
rightLedDriverAddress: 0b1110111
|
||||
|
||||
Reference in New Issue
Block a user