import i2c from 'i2c-bus' import pify from 'pify' export default class Bus { constructor(busnum=1) { this.busnum = busnum this.bus = i2c.open(this.busnum, () => {}) } // see https://github.com/fivdi/i2c-bus#busi2cfuncscb for list of functions that can be promisified scan() { return pify(this.bus.scan).bind(this.bus)() } close() { return pify(this.bus.close).bind(this.bus)() } readRaw(address, length, buffer) { return pify(this.bus.i2cRead).bind(this.bus)(address, length, buffer) } writeRaw(address, length, buffer) { return pify(this.bus.i2cWrite).bind(this.bus)(address, length, buffer) } read(address, cmd) { // console.log('read: address, cmd', address, cmd) return pify(this.bus.readByte).bind(this.bus)(address, cmd) } write(address, cmd, byte) { // console.log('write: address, cmd, byte', address, cmd, byte) return pify(this.bus.writeByte.bind(this.bus))(address, cmd, byte) } read2(address, cmd) { return pify(this.bus.readWord.bind(this.bus))(address, cmd) } write2(address, cmd, bytes) { return pify(this.bus.writeWord.bind(this.bus))(address, cmd, bytes) } receive(address) { // console.log('receivebyte', address) return pify(this.bus.receiveByte.bind(this.bus))(address) } send(address, byte) { // console.log('sendbyte', address,byte) return pify(this.bus.sendByte.bind(this.bus))(address, byte) } } // end of Bus Class