Change the arguments of UsbCommandId_LaunchEepromTransfer and its id to 0x08.

This commit is contained in:
László Monda
2017-12-12 03:26:57 +01:00
parent c296e6f49b
commit 6b60241180
6 changed files with 50 additions and 27 deletions

View File

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

View File

@@ -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<void> {
await this.write(new Buffer([UsbCommand.LaunchEepromTransfer, transferType]));
public async writeUserConfigToEeprom(): Promise<void> {
await this.write(new Buffer([
UsbCommand.LaunchEepromTransfer,
EepromOperation.write,
ConfigBufferId.validatedUserConfig
]));
await this.waitUntilKeyboardBusy();
}

View File

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

View File

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

View File

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

View File

@@ -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]),