From 3f0d0ad4079056d2fc85c79a18a8b21a0be95742 Mon Sep 17 00:00:00 2001 From: David Kebler Date: Thu, 2 Feb 2017 01:41:42 -0800 Subject: [PATCH] fully working control example with interrupts --- lib/mcp23008-17.js | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/lib/mcp23008-17.js b/lib/mcp23008-17.js index 9de3d34..38a5de8 100644 --- a/lib/mcp23008-17.js +++ b/lib/mcp23008-17.js @@ -14,6 +14,7 @@ class MCP23008 extends Device { this.ports.A = new Port(opts) this.chip_config = opts.chip_config // TODO allow opts.chip_config to be a byte instead of a string pointer this.ports.A.interrupt = opts.interruptA ? opts.interruptA : opts.interrupt + if (this.ports.A.interrupt) { this.ports.A.interrupt.hook = 'A' } } // end constructor @@ -25,8 +26,9 @@ class MCP23008 extends Device { if (this.inter(port)) { // console.log('interrupt init', this.inter(port).init().toString()) // console.log('interrupt', this.inter(port).init) - jobs.push(this.inter(port).init()) - // jobs.push(this.inter(port).init.bind(this.inter(port))()) + jobs.push(this.inter(port).init()) // set up listeners if interrupts exits + + // jobs.push(this.inter(port).init.bind(this.inter(port))()) } } jobs.push(this.writePinsCfg()) @@ -96,19 +98,18 @@ class MCP23008 extends Device { if (gpio.port === 'B') { reg = reg + 0x10 } - console.log('port - reg', gpio.port, reg) + // console.log('port - reg', gpio.port, reg) return mcpdev.read(reg).then(resp => { - resp = _u.byteFormat(resp, { in: 'DEC', - out: 'ARY' - }) - let addr = gpio.adr.toFmt('ARY') - console.log(addr) - console.log(resp) - resolve(_u.sum(_u.and(addr, resp))) // resolve 1 or 0 - }) - }) - // .then(state => console.log(`pin state ${state}`)) - // .catch(err => console.log(err)) // end Promise + resp = _u.byteFormat(resp, { in: 'DEC', + out: 'ARY' + }) + let addr = gpio.adr.toFmt('ARY') + // console.log(addr) + // console.log(resp) + resolve(_u.sum(_u.and(addr, resp))) // resolve 1 or 0 + }).catch(err => reject(err)) // end Promise + }) // end promise + } // end pinRead pinWrite(id, opts) { @@ -124,18 +125,18 @@ class MCP23008 extends Device { reg = reg + 16 } // call device class read - console.log('port - reg', gpio.port, reg) + // console.log('port - reg', gpio.port, reg) return mcpdev.read(reg).then(resp => { resp = _u.byteFormat(resp, { in: 'DEC', out: 'ARY' }) let addr = gpio.pin.address.toFmt('ARY') - console.log(addr) - console.log(resp) + // // console.log(addr) + // console.log(resp) resolve(_u.sum(_u.and(addr, resp))) // resolve 1 or 0 }) }) - .then(state => console.log(`pin state ${state}`)) + // .then(state => console.log(`pin state ${state}`)) .catch(err => console.log(err)) // end Promise } // end pinRead @@ -150,6 +151,7 @@ class MCP23017 extends MCP23008 { opts.pids = opts.pidsB this.ports.B = new Port(opts) this.ports.B.interrupt = opts.interruptB ? opts.interruptB : opts.interrupt + if (this.ports.B.interrupt) { this.ports.B.interrupt.hook = 'B' } } pin(id, port) { @@ -161,7 +163,7 @@ class MCP23017 extends MCP23008 { pid(address, port) { if (!port) { - return this.ports.A.pid(address) ? this.ports.A.pid(address) : this.ports.B.pid(address) + return this.ports.A.pid(address) } return this.ports[port].pid(address) }