adding interrupt class for gpio pins on RPi and the like

master
David Kebler 2017-01-18 20:31:53 -08:00
parent 6366815b03
commit 87cb9d1a75
5 changed files with 63 additions and 11 deletions

View File

@ -1 +0,0 @@
module.exports.hello = function (what) { return 'Hello ' + what }

32
lib/interrupt.js Normal file
View File

@ -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

View File

@ -1,7 +1,7 @@
{ {
"name": "uci-template-changeme", "name": "uci-interrupt",
"version": "0.0.1", "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", "main": "index.js",
"scripts": { "scripts": {
"testw": "./node_modules/.bin/mocha --reporter list --recursive --watch", "testw": "./node_modules/.bin/mocha --reporter list --recursive --watch",
@ -11,7 +11,7 @@
"license": "MIT", "license": "MIT",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/uCOMmandIt/uci-pkg-template.git" "url": "git+https://github.com/uCOMmandIt/uci-interrrupt.git"
}, },
"keywords": [ "keywords": [
"node.js", "node.js",
@ -21,14 +21,16 @@
"helpers" "helpers"
], ],
"bugs": { "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": { "dependencies": {
"onoff": "^1.1.1",
"require-all": "git+https://github.com/dkebler/node-require-all.git#merge" "require-all": "git+https://github.com/dkebler/node-require-all.git#merge"
}, },
"devDependencies": { "devDependencies": {
"chai": "^3.5.0", "chai": "^3.5.0",
"chai-as-promised": "^6.0.0",
"codecov": "^1.0.1", "codecov": "^1.0.1",
"istanbul": "^0.4.5", "istanbul": "^0.4.5",
"mocha": "^3.2.0" "mocha": "^3.2.0"

19
test/apromise.test.js.off Normal file
View File

@ -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'))
})
})

View File

@ -1,16 +1,16 @@
'use strict' 'use strict'
const expect = require('chai').expect,
lib = require('../')
//time-stamp for use when watching to distinguish reruns in console //time-stamp for use when watching to distinguish reruns in console
// place in alpha first file only // place in alpha first file only
let date = new Date(Date.now()) let date = new Date(Date.now())
console.log(date.getMinutes(), "\:", date.getSeconds()) console.log(date.getMinutes(), "\:", date.getSeconds())
const expect = require('chai').expect, describe('Test a template module ', function () {
lib = require('../')
describe('A template module ', function () { it('Should test all methods', function () {
it('Should ....', function () {
expect(lib.hello('Forest Gump')).to.equal('Hello Forest Gump') expect(lib.hello('Forest Gump')).to.equal('Hello Forest Gump')
}) })