Add read-config.js and add new USB command ids and receive callback to uhk.js

This commit is contained in:
László Monda
2017-07-25 00:30:34 +02:00
parent aad0c155dd
commit a52e0c81c5
2 changed files with 62 additions and 2 deletions

41
usb/read-config.js Executable file
View 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))]);
}
});

View File

@@ -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