From 180d40a7a5baceed0f9c1ad8a95545ddb146eab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 13 Jan 2017 22:58:05 +0100 Subject: [PATCH] Add script. --- usb/led_pwm.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 usb/led_pwm.js diff --git a/usb/led_pwm.js b/usb/led_pwm.js new file mode 100755 index 00000000..636585e2 --- /dev/null +++ b/usb/led_pwm.js @@ -0,0 +1,44 @@ +#!/usr/bin/env node +'use strict'; + +var usb = require('usb'); +var util = require('./util'); + +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() { + brightnessPercent = brightnessPercent ? 0 : 100 + console.log('Sending ', brightnessPercent); + endpointOut.transfer(new Buffer([LED_PWM_COMMAND_ID, brightnessPercent]), function(err) { + if (err) { + console.error("USB error: %s", err); + process.exit(1); + } + endpointIn.transfer(64, function(err2, receivedBuffer) { + if (err2) { + console.error("USB error: %s", err2); + process.exit(2); + } + console.log('Received', util.bufferToString(receivedBuffer)); + }) + }); +}, 500)