diff --git a/usb/led_pwm.js b/usb/led_pwm.js index 636585e2..43641dee 100755 --- a/usb/led_pwm.js +++ b/usb/led_pwm.js @@ -1,39 +1,19 @@ #!/usr/bin/env node -'use strict'; +let util = require('./util'); -var usb = require('usb'); -var util = require('./util'); +let LED_PWM_COMMAND_ID = 10; +let [endpointIn, endpointOut] = util.getUsbEndpoints(); +let brightnessPercent = 0; -var vid = 0x16d3; -var pid = 0x05ea; -var LED_PWM_COMMAND_ID = 10; - -var device = usb.findByIds(vid, pid); -device.open(); - -var usbInterface = device.interface(0); - -// https://github.com/tessel/node-usb/issues/147 -// The function 'isKernelDriverActive' is not available on Windows and not even needed. -if (process.platform !== 'win32' && usbInterface.isKernelDriverActive()) { - usbInterface.detachKernelDriver(); -} -usbInterface.claim(); - -var endpointIn = usbInterface.endpoints[0]; -var endpointOut = usbInterface.endpoints[1]; - -var brightnessPercent = 0; - -setInterval(function() { +setInterval(() => { brightnessPercent = brightnessPercent ? 0 : 100 console.log('Sending ', brightnessPercent); - endpointOut.transfer(new Buffer([LED_PWM_COMMAND_ID, brightnessPercent]), function(err) { + endpointOut.transfer(new Buffer([LED_PWM_COMMAND_ID, brightnessPercent]), err => { if (err) { console.error("USB error: %s", err); process.exit(1); } - endpointIn.transfer(64, function(err2, receivedBuffer) { + endpointIn.transfer(64, (err2, receivedBuffer) => { if (err2) { console.error("USB error: %s", err2); process.exit(2); @@ -41,4 +21,4 @@ setInterval(function() { console.log('Received', util.bufferToString(receivedBuffer)); }) }); -}, 500) +}, 500); diff --git a/usb/util.js b/usb/util.js index b9da78e0..2c102dad 100755 --- a/usb/util.js +++ b/usb/util.js @@ -1,4 +1,27 @@ +var usb = require('usb'); + exports = module.exports = { + getUsbEndpoints: function() { + var vid = 0x16d3; + var pid = 0x05ea; + + var device = usb.findByIds(vid, pid); + device.open(); + + var usbInterface = device.interface(0); + + // https://github.com/tessel/node-usb/issues/147 + // The function 'isKernelDriverActive' is not available on Windows and not even needed. + if (process.platform !== 'win32' && usbInterface.isKernelDriverActive()) { + usbInterface.detachKernelDriver(); + } + usbInterface.claim(); + + var endpointIn = usbInterface.endpoints[0]; + var endpointOut = usbInterface.endpoints[1]; + return [endpointIn, endpointOut]; + }, + bufferToString: function(buffer) { var str = ''; for (var i = 0; i < buffer.length; i++) {