diff --git a/packages/usb/write-config.js b/packages/usb/write-config.js index 9d80423e..9c6404c0 100755 --- a/packages/usb/write-config.js +++ b/packages/usb/write-config.js @@ -23,29 +23,26 @@ let offset = 0; let configBuffer = fs.readFileSync(configBin); let chunkSizeToRead; -const payload = new Buffer([uhk.usbCommands.getDeviceProperty, uhk.devicePropertyIds.configSizes]); +(async function() { + let buffer = await uhk.writeDevice(device, [uhk.usbCommands.getDeviceProperty, uhk.devicePropertyIds.configSizes]); + const hardwareConfigMaxSize = buffer[1] + (buffer[2]<<8); + const userConfigMaxSize = buffer[3] + (buffer[4]<<8); + const configMaxSize = isHardwareConfig ? hardwareConfigMaxSize : userConfigMaxSize; + const configSize = Math.min(configMaxSize, configBuffer.length); -device.write(uhk.getTransferData(payload)); -let buffer = Buffer.from(device.readSync()); -const hardwareConfigMaxSize = buffer[1] + (buffer[2]<<8); -const userConfigMaxSize = buffer[3] + (buffer[4]<<8); -const configMaxSize = isHardwareConfig ? hardwareConfigMaxSize : userConfigMaxSize; -const configSize = Math.min(configMaxSize, configBuffer.length); + while (offset < configSize) { + const usbCommand = isHardwareConfig ? uhk.usbCommands.writeHardwareConfig : uhk.usbCommands.writeStagingUserConfig; + chunkSizeToRead = Math.min(chunkSize, configSize - offset); -while (offset < configSize) { - const usbCommand = isHardwareConfig ? uhk.usbCommands.writeHardwareConfig : uhk.usbCommands.writeStagingUserConfig; - chunkSizeToRead = Math.min(chunkSize, configSize - offset); + if (chunkSizeToRead === 0) { + break; + } - if (chunkSizeToRead === 0) { - break; + buffer = [ + ...[usbCommand, chunkSizeToRead, offset & 0xff, offset >> 8], + ...configBuffer.slice(offset, offset+chunkSizeToRead) + ]; + await uhk.writeDevice(device, buffer) + offset += chunkSizeToRead; } - - buffer = Buffer.concat([ - new Buffer([usbCommand, chunkSizeToRead, offset & 0xff, offset >> 8]), - configBuffer.slice(offset, offset+chunkSizeToRead) - ]); - - device.write(uhk.getTransferData(buffer)); - device.readSync(); - offset += chunkSizeToRead; -} +})();