From ee7af6730e29fb800f51bc465e1dceae088cc8e0 Mon Sep 17 00:00:00 2001 From: David Kebler Date: Wed, 18 Jan 2017 20:31:53 -0800 Subject: [PATCH] adding interrupt class for gpio pins on RPi and the like --- lib/amodule.js | 1 - lib/interrupt.js | 32 +++++++++++++++++++++ package.json | 12 ++++---- test/apromise.test.js.off | 19 ++++++++++++ test/{amodule.test.js => interrupt.test.js} | 10 +++---- 5 files changed, 63 insertions(+), 11 deletions(-) delete mode 100644 lib/amodule.js create mode 100644 lib/interrupt.js create mode 100644 test/apromise.test.js.off rename test/{amodule.test.js => interrupt.test.js} (78%) diff --git a/lib/amodule.js b/lib/amodule.js deleted file mode 100644 index 6615b2d..0000000 --- a/lib/amodule.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.hello = function (what) { return 'Hello ' + what } diff --git a/lib/interrupt.js b/lib/interrupt.js new file mode 100644 index 0000000..b5b2f2b --- /dev/null +++ b/lib/interrupt.js @@ -0,0 +1,32 @@ +'use strict' + +const Gpio = require('onoff').Gpio + +// ********************************** + +class Interrupt { + // bus is i2c-bus bus object + constructor(pin_number, processor, opts = {}) { + let dtimeout = opts.debounceTimeout ? opts.debounceTimeout : 200 + this.pin = new Gpio(pin_number, 'in', 'falling', { debounceTimeout: dtimeout }) + this.processor = processor + } + + init() { + this.addListener(this.processor) + process.on('SIGINT', function () { + this.pin.unexport(); + }) + + } + + addListener(processor) { + this.pin.watch((err, value) => { + if (err) { return Promise.reject(err) } + return processor + }); + } + +} + +module.exports.Interrupt = Interrupt diff --git a/package.json b/package.json index 052efb9..b6be39b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "uci-template-changeme", + "name": "uci-interrupt", "version": "0.0.1", - "description": "A template for a starting a uci package", + "description": "a class for adding interrupt processesing via sysfs and gpio pins on Raspberry and similar", "main": "index.js", "scripts": { "testw": "./node_modules/.bin/mocha --reporter list --recursive --watch", @@ -11,7 +11,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "git+https://github.com/uCOMmandIt/uci-pkg-template.git" + "url": "git+https://github.com/uCOMmandIt/uci-interrrupt.git" }, "keywords": [ "node.js", @@ -21,14 +21,16 @@ "helpers" ], "bugs": { - "url": "https://github.com/uCOMmandIt/utilities/issues" + "url": "https://github.com/uCOMmandIt/uci-interrrupt/issues" }, - "homepage": "https://github.com/uCOMmandIt/utilities#readme", + "homepage": "https://github.com/uCOMmandIt/uci-interrrupt#readme", "dependencies": { + "onoff": "^1.1.1", "require-all": "git+https://github.com/dkebler/node-require-all.git#merge" }, "devDependencies": { "chai": "^3.5.0", + "chai-as-promised": "^6.0.0", "codecov": "^1.0.1", "istanbul": "^0.4.5", "mocha": "^3.2.0" diff --git a/test/apromise.test.js.off b/test/apromise.test.js.off new file mode 100644 index 0000000..6fa66b6 --- /dev/null +++ b/test/apromise.test.js.off @@ -0,0 +1,19 @@ +'use strict' + +const chai = require('chai'), + chaiAsPromised = require("chai-as-promised"), + lib = require('../') + +chai.use(chaiAsPromised); + +const expect = chai.expect + +describe('Promise Stuff - ', function () { + + it('Can test a promise', function () { + + return expect(lib.apromise).to.eventually.equal('some promise hey') + return Promise.resolve().then(() => expect(lib.apromise).to.eventually.equal('some promise hey')) + + }) +}) diff --git a/test/amodule.test.js b/test/interrupt.test.js similarity index 78% rename from test/amodule.test.js rename to test/interrupt.test.js index 7d681f9..3da57cb 100644 --- a/test/amodule.test.js +++ b/test/interrupt.test.js @@ -1,16 +1,16 @@ 'use strict' +const expect = require('chai').expect, + lib = require('../') + //time-stamp for use when watching to distinguish reruns in console // place in alpha first file only let date = new Date(Date.now()) console.log(date.getMinutes(), "\:", date.getSeconds()) -const expect = require('chai').expect, - lib = require('../') +describe('Test a template module ', function () { -describe('A template module ', function () { - - it('Should ....', function () { + it('Should test all methods', function () { expect(lib.hello('Forest Gump')).to.equal('Hello Forest Gump') })