diff --git a/usb/set-led-values.js b/usb/set-led-values.js new file mode 100755 index 00000000..9f4c2d0c --- /dev/null +++ b/usb/set-led-values.js @@ -0,0 +1,36 @@ +#!/usr/bin/env node +let uhk = require('./uhk'); + +let programName = process.argv[1]; + +if (process.argv.length !== 6) { + console.log(`Usage: ${programName} [display 0-255] [left keys 0-255] [unused 0-255] [right keys 0-255]`); + process.exit(1); +} + +let pwmOffset = 0; +let ledDriverAddresses = [uhk.leftLedDriverAddress, uhk.rightLedDriverAddress]; +let ledDriverAddress; +const FRAME_REGISTER_PWM_FIRST = 0x24; + +uhk.sendUsbPacketsByCallback(() => { + if (pwmOffset === 0) { + ledDriverAddress = ledDriverAddresses.shift(); + } + if (!ledDriverAddress) { + return; + } + + let isMatrixA = pwmOffset % 16; + let argIndex = 2 + (ledDriverAddress == uhk.leftLedDriverAddress ? 0 : 2) + (isMatrixA ? 0 : 1); + let val = +process.argv[argIndex]; + let buffer = new Buffer([uhk.usbCommands.writeLedDriver, ledDriverAddress, + 9, FRAME_REGISTER_PWM_FIRST+pwmOffset, val, val, val, val, val, val, val, val]); + pwmOffset += 8; + + if (pwmOffset >= 144) { + pwmOffset = 0; + } + + return buffer; +}); diff --git a/usb/uhk.js b/usb/uhk.js index 981305ea..742f019d 100755 --- a/usb/uhk.js +++ b/usb/uhk.js @@ -104,4 +104,6 @@ exports = module.exports = { applyConfig: 9, setLedPwm: 10 }, + leftLedDriverAddress: 0b1110100, + rightLedDriverAddress: 0b1110111 }