diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d33764 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +.DS_Store +*.log + diff --git a/index.js b/index.js index 696474c..3c471b1 100644 --- a/index.js +++ b/index.js @@ -25,9 +25,9 @@ var MAX_SIGNAL_DURATION = 200; var Infrared = function(hardware, callback) { - this.chipSelect = hardware.gpio(1); - this.reset = hardware.gpio(2); - this.irq = hardware.gpio(3); + this.chipSelect = hardware.digital[1]; + this.reset = hardware.digital[2]; + this.irq = hardware.digital[3]; this.spi = hardware.SPI({clockSpeed : 1000, mode:2, chipSelect:this.chipSelect}); this.transmitting = false; this.listening = false; diff --git a/package.json b/package.json index 08fd6e3..e9e2cc0 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,19 @@ "example": "examples" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "./testsuite.js" }, "hardware": { "./examples": false, - "./firmware" : false + "./firmware" : false, + "tape": false, + "tap": false, + "shelljs": false + }, + "devDependencies": { + "tape": "~2.3.2", + "tap": "git+https://github.com/tcr/node-tap.git#3cb76e", + "shelljs": "~0.3.0" }, "author": "", "license": "MIT/Apache 2.0" diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..8ce7d76 --- /dev/null +++ b/test/test.js @@ -0,0 +1,47 @@ +var tessel = require('tessel'); + +var portname1 = process.argv[2] || 'A'; +var infrared1 = require('../index').use(tessel.port[portname1]); + +var portname2 = process.argv[3] || 'B'; +var infrared2 = require('../index').use(tessel.port[portname2]); + +console.log('1..2') + +// Receive on IR 1 +infrared1.on('data', function (data) { + console.log('# received RX Data:', data); + console.log('ok'); + process.exit(0); +}); + +// Send on IR 2 +var sendack = false; +infrared2.on('ready', function(err) { + if (err) { return console.error(err); } + + setImmediate(function sendSignal () { + // Make a buffer off on/off durations (each duration is 16 bits) + var powerBuffer = new Buffer([ + 0, 178, 255, 168, 0, 12, 255, 246, 0, 13, 255, 225, 0, 13, 255, 224, + 0, 12, 255, 246, 0, 12, 255, 246, 0, 13, 255, 247, 0, 13, 255, 247, + 0, 13, 255, 224, 0, 12, 255, 224, 0, 13, 255, 247, 0, 13, 255, 224, + 0, 12, 255, 246, 0, 12, 255, 246, 0, 12, 255, 246, 0, 12, 255, 246, + 0, 13, 255, 247, 0, 13, 255, 224, 0, 12, 255, 224, 0, 13, 255, 225, + 0, 13, 255, 224, 0, 12, 255, 246, 0, 12, 255, 246, 0, 13, 255, 247, + 0, 13, 255, 247, 0, 13, 255, 246, 0, 12, 255, 246, 0, 12, 255, 246, + 0, 12, 255, 246, 0, 12, 255, 224, 0, 13, 255, 224, 0, 12, 255, 224, + 0, 12, 255, 224, 0, 12 + ]); + + // Send the signal at 38 kHz + infrared2.sendRawSignal(38, powerBuffer, function (err) { + if (err) { return console.log("Unable to send signal: ", err); } + + console.log('# signal sent!'); + !sendack && console.log('ok'); + sendack = true; + setImmediate(sendSignal); + }); + }); +}); diff --git a/testsuite.js b/testsuite.js new file mode 100755 index 0000000..7baec76 --- /dev/null +++ b/testsuite.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +require('shelljs/global'); + +var port1 = process.env.IR_PORT1 || 'A'; +var port2 = process.env.IR_PORT2 || 'B'; +var cmd = './node_modules/.bin/tap -e "tessel run {} ' + port1 + ' ' + port2 + '" test/*.js'; + +// execute +cd(__dirname) +process.exit(exec(cmd).code);