33 lines
690 B
JavaScript
33 lines
690 B
JavaScript
|
'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
|