From 199030effb5d40db4485dabe10937f708a2766ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Sun, 15 Jan 2017 01:00:55 +0100 Subject: [PATCH] Extract getUsbEndpoints() to util.js. Use ES6 features in led_pwm.js --- usb/led_pwm.js | 36 ++++++++---------------------------- usb/util.js | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 28 deletions(-) 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++) {