From 6b6024118059dfc9422a858129f9dc34276fa59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Tue, 12 Dec 2017 03:26:57 +0100 Subject: [PATCH] Change the arguments of UsbCommandId_LaunchEepromTransfer and its id to 0x08. --- packages/uhk-usb/src/constants.ts | 14 ++++----- packages/uhk-usb/src/uhk-hid-device.ts | 11 +++++-- packages/uhk-usb/src/uhk-operations.ts | 4 +-- packages/usb/eeprom.js | 6 ++-- packages/usb/uhk.js | 40 +++++++++++++++++++------- packages/usb/write-config.js | 2 +- 6 files changed, 50 insertions(+), 27 deletions(-) diff --git a/packages/uhk-usb/src/constants.ts b/packages/uhk-usb/src/constants.ts index 9ae50fad..70096a7d 100644 --- a/packages/uhk-usb/src/constants.ts +++ b/packages/uhk-usb/src/constants.ts @@ -16,23 +16,21 @@ export enum UsbCommand { WriteHardwareConfig = 0x05, WriteStagingUserConfig = 0x06, ApplyConfig = 0x07, - LaunchEepromTransfer = 12, + LaunchEepromTransfer = 0x08, GetKeyboardState = 16 } +export enum EepromOperation { + read = 0, + write = 1 +} + export enum ConfigBufferId { hardwareConfig = 0, stagingUserConfig = 1, validatedUserConfig = 2 } -export enum EepromTransfer { - ReadHardwareConfig = 0, - WriteHardwareConfig = 1, - ReadUserConfig = 2, - WriteUserConfig = 3 -} - export enum SystemPropertyIds { UsbProtocolVersion = 0, BridgeProtocolVersion = 1, diff --git a/packages/uhk-usb/src/uhk-hid-device.ts b/packages/uhk-usb/src/uhk-hid-device.ts index 6fdef263..828e065f 100644 --- a/packages/uhk-usb/src/uhk-hid-device.ts +++ b/packages/uhk-usb/src/uhk-hid-device.ts @@ -2,8 +2,9 @@ import { Device, devices, HID } from 'node-hid'; import { LogService } from 'uhk-common'; import { + ConfigBufferId, Constants, - EepromTransfer, + EepromOperation, enumerationModeIdToProductId, EnumerationModes, KbootCommands, @@ -81,8 +82,12 @@ export class UhkHidDevice { }); } - public async writeConfigToEeprom(transferType: EepromTransfer): Promise { - await this.write(new Buffer([UsbCommand.LaunchEepromTransfer, transferType])); + public async writeUserConfigToEeprom(): Promise { + await this.write(new Buffer([ + UsbCommand.LaunchEepromTransfer, + EepromOperation.write, + ConfigBufferId.validatedUserConfig + ])); await this.waitUntilKeyboardBusy(); } diff --git a/packages/uhk-usb/src/uhk-operations.ts b/packages/uhk-usb/src/uhk-operations.ts index df6662cd..15dbdc7b 100644 --- a/packages/uhk-usb/src/uhk-operations.ts +++ b/packages/uhk-usb/src/uhk-operations.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; import { UhkBlhost } from './uhk-blhost'; import { UhkHidDevice } from './uhk-hid-device'; import { snooze } from './util'; -import { convertBufferToIntArray, EepromTransfer, getTransferBuffers, SystemPropertyIds, UsbCommand, ConfigBufferId +import { convertBufferToIntArray, getTransferBuffers, SystemPropertyIds, UsbCommand, ConfigBufferId } from '../index'; import { LoadConfigurationsResult } from './models/load-configurations-result'; @@ -153,7 +153,7 @@ export class UhkOperations { this.logService.debug('[DeviceOperation] USB[T]: Write user configuration to keyboard'); await this.sendUserConfigToKeyboard(json); this.logService.debug('[DeviceOperation] USB[T]: Write user configuration to EEPROM'); - await this.device.writeConfigToEeprom(EepromTransfer.WriteUserConfig); + await this.device.writeUserConfigToEeprom(); } catch (error) { this.logService.error('[DeviceOperation] Transferring error', error); diff --git a/packages/usb/eeprom.js b/packages/usb/eeprom.js index 76b5c0a3..f0f245f0 100755 --- a/packages/usb/eeprom.js +++ b/packages/usb/eeprom.js @@ -2,15 +2,15 @@ const uhk = require('./uhk'); const eepromTransferType = process.argv[2]; -const eepromTransferId = uhk.eepromTransfer[eepromTransferType]; +const eepromTransfer = uhk.eepromTransfer[eepromTransferType]; -if (eepromTransferId === undefined) { +if (eepromTransfer === undefined) { console.error(`Gotta provide one of ${Object.keys(uhk.eepromTransfer).join(', ')}`); process.exit(1); } const device = uhk.getUhkDevice(); -device.write(uhk.getTransferData(new Buffer([uhk.usbCommands.launchEepromTransferLegacy, eepromTransferId]))); +device.write(uhk.getTransferData(new Buffer([uhk.usbCommands.launchEepromTransfer, eepromTransfer.operation, eepromTransfer.configBuffer]))); const buffer = Buffer.from(device.readSync()); const responseCode = buffer[0]; if (responseCode !== 0) { diff --git a/packages/usb/uhk.js b/packages/usb/uhk.js index 4536c2b4..6dc71696 100644 --- a/packages/usb/uhk.js +++ b/packages/usb/uhk.js @@ -44,6 +44,17 @@ function getBootloaderDevice() { return foundDevice; } +let configBufferIds = { + hardwareConfig: 0, + stagingUserConfig: 1, + validatedUserConfig: 2, +}; + +let eepromOperations = { + read: 0, + write: 1, +}; + exports = module.exports = moduleExports = { bufferToString, getUhkDevice, @@ -59,10 +70,10 @@ exports = module.exports = moduleExports = { writeHardwareConfig : 0x05, writeStagingUserConfig : 0x06, applyConfig : 0x07, + launchEepromTransfer : 0x08, setTestLed: 0x14, setLedPwmBrightness: 10, getAdcValue: 11, - launchEepromTransferLegacy: 12, getKeyboardState: 16, getDebugInfo: 17, }, @@ -93,16 +104,25 @@ exports = module.exports = moduleExports = { hardwareConfigSize: 4, userConfigSize: 5, }, - configBufferIds: { - hardwareConfig: 0, - stagingUserConfig: 1, - validatedUserConfig: 2, - }, + configBufferIds, + eepromOperations, eepromTransfer: { - readHardwareConfig: 0, - writeHardwareConfig: 1, - readUserConfig: 2, - writeUserConfig: 3, + readHardwareConfig: { + operation: eepromOperations.read, + configBuffer: configBufferIds.hardwareConfig, + }, + writeHardwareConfig: { + operation: eepromOperations.write, + configBuffer:configBufferIds.hardwareConfig, + }, + readUserConfig: { + operation: eepromOperations.read, + configBuffer: configBufferIds.validatedUserConfig, + }, + writeUserConfig: { + operation: eepromOperations.write, + configBuffer: configBufferIds.validatedUserConfig, + }, }, kbootCommands: { idle: 0, diff --git a/packages/usb/write-config.js b/packages/usb/write-config.js index 5690a933..2ae75bcd 100755 --- a/packages/usb/write-config.js +++ b/packages/usb/write-config.js @@ -25,7 +25,7 @@ configSize = buffer[1] + (buffer[2]<<8); console.log(`${configTypeString}configSize:`, configSize); while (offset < configSize) { - const usbCommand = isHardwareConfig ? uhk.usbCommands.writeHardwareConfig : uhk.usbCommands.writeUserConfig; + const usbCommand = isHardwareConfig ? uhk.usbCommands.writeHardwareConfig : uhk.usbCommands.writeStagingUserConfig; chunkSizeToRead = Math.min(chunkSize, configSize - offset); buffer = Buffer.concat([ new Buffer([usbCommand, chunkSizeToRead, offset & 0xff, offset >> 8]),