refactor bus and device class, testing of i2c r/w
parent
25c4cbfba3
commit
25a3ca9095
42
lib/bus.js
42
lib/bus.js
|
@ -4,18 +4,50 @@ const i2c = require('i2c-bus'),
|
|||
pA = require('bluebird').promisifyAll,
|
||||
pQ = require('promisqueue')
|
||||
|
||||
const pify = require('pify')
|
||||
|
||||
// TODO Create a Bus master class then BusRPi classes etc for actual hardware.
|
||||
|
||||
class Bus {
|
||||
constructor(busnum) {
|
||||
this.methods = pA(i2c.open(busnum, () => {}), { suffix: "_p" }) //,multiArgs: true})
|
||||
|
||||
constructor(busnum = 1) {
|
||||
this.busnum = busnum
|
||||
this.q = new pQ({ limit: 1 })
|
||||
this.qAdd = (pjob) => { this.q.add(() => pjob) }
|
||||
this.bus = i2c.open(this.busnum, () => {})
|
||||
}
|
||||
|
||||
scan() { return this.bus.scan_p() }
|
||||
close() { return this.bus.close_p() }
|
||||
// init() {
|
||||
// const bus = pA(i2c.open(this.busnum, () => {}), { suffix: "_p" }) //,multiArgs: true})
|
||||
//
|
||||
// }
|
||||
|
||||
qAdd(job) { this.q.add(() => job) }
|
||||
scan() { return pify(this.bus.scan_p)() }
|
||||
close() { return pify(this.bus.close_p)() }
|
||||
|
||||
readRaw(address, length, buffer) {
|
||||
return this.qAdd(pify(this.bus.i2cRead)(address, length, buffer))
|
||||
}
|
||||
|
||||
writeRaw(address, length, buffer) {
|
||||
return this.qAdd(pify(this.bus.i2cWrite)(address, length, buffer))
|
||||
}
|
||||
|
||||
read(address, cmd) {
|
||||
return this.qAdd(pify(this.bus.readByte)(address, cmd))
|
||||
}
|
||||
|
||||
write(address, cmd, byte) {
|
||||
return this.qAdd(pify(this.bus.writeByte)(address, cmd, byte))
|
||||
}
|
||||
|
||||
read2(address, cmd) {
|
||||
return this.qAdd(pify(this.bus.readWord)(address, cmd))
|
||||
}
|
||||
|
||||
write2(address, cmd, bytes) {
|
||||
return this.qAdd(pify(this.bus.writeWord)(address, cmd, bytes))
|
||||
}
|
||||
|
||||
} // end of Bus Class
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
class Device {
|
||||
// bus is i2c-bus bus object
|
||||
constructor(bus, address, opts) {
|
||||
this.bus = bus.methods // artifact of adapting ic2-bus to class format
|
||||
this.bus = bus
|
||||
this.address = address
|
||||
if (opts) {
|
||||
this.id = opts.id // must be unique within a bus
|
||||
|
@ -15,33 +15,29 @@ class Device {
|
|||
}
|
||||
|
||||
readRaw(length, buffer) {
|
||||
return this.bus.i2cRead_p(this.address, length, buffer)
|
||||
return this.bus.readRaw(this.address, length, buffer)
|
||||
}
|
||||
|
||||
writeRaw(length, buffer) {
|
||||
return this.bus.i2cWrite_p(this.address, length, buffer)
|
||||
return this.bus.writeRaw(this.address, length, buffer)
|
||||
}
|
||||
|
||||
read(cmd) {
|
||||
return this.bus.readByte_p(this.address, cmd)
|
||||
return this.bus.read(this.address, cmd)
|
||||
}
|
||||
|
||||
write(cmd, byte) {
|
||||
return this.bus.writeByte_p(this.address, cmd, byte)
|
||||
return this.bus.write(this.address, cmd, byte)
|
||||
}
|
||||
|
||||
read2(cmd) {
|
||||
return this.bus.readWord_p(this.address, cmd)
|
||||
return this.bus.read2(this.address, cmd)
|
||||
}
|
||||
|
||||
write2(cmd, bytes) {
|
||||
return this.bus.writeWord_p(this.address, cmd, bytes)
|
||||
return this.bus.write2(this.address, cmd, bytes)
|
||||
}
|
||||
|
||||
// command with more than two bytes following
|
||||
readBytes() {}
|
||||
writeBytes() {}
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"dependencies": {
|
||||
"bluebird": "^3.4.7",
|
||||
"i2c-bus": "^1.2.0",
|
||||
"pify": "^2.3.0",
|
||||
"promisqueue": "^1.0.3",
|
||||
"require-all": "git+https://github.com/dkebler/node-require-all.git#merge"
|
||||
},
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
'use strict'
|
||||
|
||||
const expect = require('chai').expect,
|
||||
Bus = require('../lib/bus').Bus
|
||||
// _ = require('uci-utils')
|
||||
|
||||
let bus = new Bus()
|
||||
// console.log(bus.write.toString())
|
||||
|
||||
bus.write(0x21, 0x09, 0xFF)
|
||||
|
||||
describe('Bus Class - ', function () {
|
||||
|
||||
it('Promise Methods are exposed ', function () {
|
||||
// expect(pin.cfg, "config getter failed").to.deep.equal(gpio.configs('output'))
|
||||
})
|
||||
|
||||
});
|
Loading…
Reference in New Issue