Expose usb.sendUsbPacketsByCallback() and use it to vastly simplify blink-test-led.js and led-pwm.js
This commit is contained in:
@@ -1,25 +1,15 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
'use strict';
|
|
||||||
|
|
||||||
let uhk = require('./uhk');
|
let uhk = require('./uhk');
|
||||||
let [endpointIn, endpointOut] = uhk.getUsbEndpoints();
|
|
||||||
|
|
||||||
var state = 1;
|
let delayCycle = true;
|
||||||
|
let areLedsEnabled = true;
|
||||||
|
|
||||||
setInterval(function() {
|
uhk.sendUsbPacketsByCallback(() => {
|
||||||
state = state ? 0 : 1
|
delayCycle = !delayCycle;
|
||||||
console.log('Sending ', state);
|
if (delayCycle) {
|
||||||
endpointOut.transfer(new Buffer([uhk.usbCommands.setTestLed, state]), function(err) {
|
return new uhk.DelayMs(500);
|
||||||
if (err) {
|
} else {
|
||||||
console.error("USB error: %s", err);
|
areLedsEnabled = !areLedsEnabled;
|
||||||
process.exit(1);
|
return new Buffer([uhk.usbCommands.setTestLed, areLedsEnabled ? 1 : 0]);
|
||||||
}
|
}
|
||||||
endpointIn.transfer(64, function(err2, receivedBuffer) {
|
});
|
||||||
if (err2) {
|
|
||||||
console.error("USB error: %s", err2);
|
|
||||||
process.exit(2);
|
|
||||||
}
|
|
||||||
console.log('Received', uhk.bufferToString(receivedBuffer));
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}, 500)
|
|
||||||
|
|||||||
@@ -1,23 +1,16 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
let uhk = require('./uhk');
|
let uhk = require('./uhk');
|
||||||
|
|
||||||
let [endpointIn, endpointOut] = uhk.getUsbEndpoints();
|
let delayCycle = true;
|
||||||
let brightnessPercent = 0;
|
let areLedsEnabled = true;
|
||||||
|
|
||||||
setInterval(() => {
|
uhk.sendUsbPacketsByCallback(() => {
|
||||||
brightnessPercent = brightnessPercent ? 0 : 100
|
delayCycle = !delayCycle;
|
||||||
console.log('Sending ', brightnessPercent);
|
if (delayCycle) {
|
||||||
endpointOut.transfer(new Buffer([uhk.usbCommands.setLedPwm, brightnessPercent]), err => {
|
return new uhk.DelayMs(500);
|
||||||
if (err) {
|
} else {
|
||||||
console.error("USB error: %s", err);
|
areLedsEnabled = !areLedsEnabled;
|
||||||
process.exit(1);
|
let brightnessPercent = areLedsEnabled ? 100 : 0;
|
||||||
}
|
return new Buffer([uhk.usbCommands.setLedPwm, brightnessPercent]);
|
||||||
endpointIn.transfer(64, (err2, receivedBuffer) => {
|
}
|
||||||
if (err2) {
|
});
|
||||||
console.error("USB error: %s", err2);
|
|
||||||
process.exit(2);
|
|
||||||
}
|
|
||||||
console.log('Received', uhk.bufferToString(receivedBuffer));
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}, 500);
|
|
||||||
|
|||||||
34
usb/uhk.js
34
usb/uhk.js
@@ -35,7 +35,26 @@ function getUsbEndpoints() {
|
|||||||
return [endpointIn, endpointOut];
|
return [endpointIn, endpointOut];
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendUsbPacket(packet) {
|
class DelayMs {
|
||||||
|
constructor(ms) {
|
||||||
|
this.ms = ms;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendUsbPacketsByCallback(packetProvider) {
|
||||||
|
let packet = packetProvider()
|
||||||
|
|
||||||
|
if (!packet) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (packet instanceof DelayMs) {
|
||||||
|
setTimeout(() => {
|
||||||
|
sendUsbPacketsByCallback(packetProvider);
|
||||||
|
}, packet.ms);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
console.log('Sending: ', bufferToString(packet));
|
console.log('Sending: ', bufferToString(packet));
|
||||||
|
|
||||||
let [endpointIn, endpointOut] = usbEndpoints || getUsbEndpoints();
|
let [endpointIn, endpointOut] = usbEndpoints || getUsbEndpoints();
|
||||||
@@ -50,14 +69,27 @@ function sendUsbPacket(packet) {
|
|||||||
process.exit(2);
|
process.exit(2);
|
||||||
}
|
}
|
||||||
console.log('Received:', bufferToString(receivedBuffer));
|
console.log('Received:', bufferToString(receivedBuffer));
|
||||||
|
sendUsbPacketsByCallback(packetProvider);
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sendUsbPacket(packet) {
|
||||||
|
let isPacketSent = false;
|
||||||
|
sendUsbPacketsByCallback(() => {
|
||||||
|
if (!isPacketSent) {
|
||||||
|
isPacketSent = true;
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
exports = module.exports = {
|
exports = module.exports = {
|
||||||
|
DelayMs,
|
||||||
bufferToString,
|
bufferToString,
|
||||||
getUsbEndpoints,
|
getUsbEndpoints,
|
||||||
sendUsbPacket,
|
sendUsbPacket,
|
||||||
|
sendUsbPacketsByCallback,
|
||||||
usbCommands: {
|
usbCommands: {
|
||||||
getProperty: 0,
|
getProperty: 0,
|
||||||
jumpToBootloader: 1,
|
jumpToBootloader: 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user