/** * Simple demostration of sendFeatureReport * for a blink(1) USB LED by ThingM http://blink1.thingm.com/ */ 'use strict'; var HID = require('../'); var VENDOR_ID = 0x27B8; var PRODUCT_ID = 0x01ED; var REPORT_ID = 1; var REPORT_LENGTH = 9; var serial_number = process.argv[2]; var devices_found = HID.devices( VENDOR_ID, PRODUCT_ID ); if( devices_found.length === 0 ) { console.log("no blink(1) devices found"); process.exit(0); } console.log("blink(1) devices found:", devices_found,'\n'); var hidDevice; try { if( serial_number ) { console.log("opening serial number "+serial_number); hidDevice = new HID.HID( VENDOR_ID, PRODUCT_ID, serial_number ); } else { console.log("opening first device"); hidDevice = new HID.HID( VENDOR_ID, PRODUCT_ID ); } } catch(err) { console.log(err); process.exit(1); } var deviceInfo = hidDevice.getDeviceInfo(); console.log("deviceInfo.manufacturer:", deviceInfo.manufacturer); console.log("deviceInfo.product:", deviceInfo.product); console.log("deviceInfo.serialNumber:", deviceInfo.serialNumber); // shamelessly stolen from node-blink1 var blink1_sendCommand = function( /* command [, args ...]*/ ) { var featureReport = [REPORT_ID, 0, 0, 0, 0, 0, 0, 0, 0]; featureReport[1] = arguments[0].charCodeAt(0); for (var i = 1; i < arguments.length; i++) { featureReport[i + 1] = arguments[i]; } var rc = hidDevice.sendFeatureReport(featureReport); console.log("report sent:", featureReport); console.log("sent size:",featureReport.length," actual size:", rc); }; var blink1_readResponse = function(callback) { callback.apply(null, [hidDevice.getFeatureReport(REPORT_ID, REPORT_LENGTH)]); }; var blink1_getVersion = function(callback) { blink1_sendCommand('v'); blink1_readResponse(function(response) { var version = String.fromCharCode(response[3]) + '.' + String.fromCharCode(response[4]); callback(version); }); }; var blink1_fadeToColor = function( fadeMillis, r,g,b, ledn ) { var dms = fadeMillis / 10; blink1_sendCommand( 'c', r,g,b, dms>>8, dms%0xff, ledn ); }; blink1_getVersion( function(version) { console.log("blink(1) version: ", version); }); setTimeout( function() { console.log("Setting blink(1) to #00FF33 over 300 millisecs"); blink1_fadeToColor( 300, 0x00,0xFF,0x33, 0); }, 100); setTimeout( function() { console.log("Setting blink(1) to #FF6633 over 700 millisecs"); blink1_fadeToColor( 700, 0xff,0x66,0x00, 0); }, 1000); setTimeout( function() { console.log("Setting blink(1) to #000000 over 1000 millisecs, and closing"); blink1_fadeToColor( 1000, 0x00,0x00,0x00, 0); hidDevice.close(); }, 2000 );