//to run this test you MUST install @uci/i2c which is not a dependency of @uci/mcp // npm install @uci/i2c const Bus = require('@uci/i2c').Bus, MCP = require('../lib/mcp23008-17'), expect = require('chai').expect, pause = require('@uci/utils').pPause let bus = new Bus() let ADDR = 0x24 let CHIP = 'MCP23017' let MS = 500 // so humans can watch the light otherwise set to zero let PORT = 'B' let mcp = new MCP[CHIP](bus, ADDR, { pin_cfg_default: 'output', }); (async function () { await mcp.init() await mcp.allOff(PORT) // start clean await eachpin() await somepins() })() //****************** TEST SUITES ********************** async function eachpin() { let result for (let pin of mcp.ports[PORT].pins) { await mcp.on(pin.address, PORT) result = await mcp.readPort(PORT) console.log(pin.address, result) await mcp.off(pin.address, PORT) await pause(MS) } } async function somepins() { let pins = [1, 7, 8] await mcp.on(pins, PORT, 'PLC') let shouldbe = [1, 7, 8] let result = await mcp.readPort(PORT, { format: 'PLC' }) console.log(pins, shouldbe, result) await pause(MS) pins = [2, 1, 7] await mcp.on(pins, PORT, 'PLC') shouldbe = [2, 1, 7, 8] result = await mcp.readPort(PORT, { format: 'PLC' }) console.log(pins, shouldbe, result) await pause(MS) pins = [2, 1, 6] await mcp.toggle(pins, PORT, 'PLC') shouldbe = [6, 7, 8] result = await mcp.readPort(PORT, { format: 'PLC' }) console.log(pins, shouldbe, result) await pause(MS) pins = [2, 1, 7] await mcp.off(pins, PORT, 'PLC') shouldbe = [6, 8] result = await mcp.readPort(PORT, { format: 'PLC' }) console.log(pins, shouldbe, result) await pause(MS) await mcp.allOff(PORT) // clear port after each test }