split device class into a separate repo from bus (i2c)

master
David Kebler 2017-01-16 21:37:57 -08:00
parent cc4270fd83
commit 7f9b54e2c7
4 changed files with 5 additions and 83 deletions

View File

@ -1,10 +1,8 @@
'use strict' 'use strict'
const i2c = require('i2c-bus'), const i2c = require('i2c-bus'),
pA = require('bluebird').promisifyAll, pify = require('pify'),
pQ = require('promisqueue') PQueue = require('p-queue')
const pify = require('pify')
// TODO Create a Bus master class then BusRPi classes etc for actual hardware. // TODO Create a Bus master class then BusRPi classes etc for actual hardware.
@ -12,16 +10,11 @@ class Bus {
constructor(busnum = 1) { constructor(busnum = 1) {
this.busnum = busnum this.busnum = busnum
this.q = new pQ({ limit: 1 }) this.queue = new PQueue({ concurrency: 1 });
this.qAdd = (pjob) => { this.q.add(() => pjob) } this.qAdd = (p) => { this.queue.add(() => p) } // p is a promise
this.bus = i2c.open(this.busnum, () => {}) this.bus = i2c.open(this.busnum, () => {})
} }
// init() {
// const bus = pA(i2c.open(this.busnum, () => {}), { suffix: "_p" }) //,multiArgs: true})
//
// }
scan() { return pify(this.bus.scan).bind(this.bus)() } scan() { return pify(this.bus.scan).bind(this.bus)() }
close() { return pify(this.bus.close).bind(this.bus)() } close() { return pify(this.bus.close).bind(this.bus)() }

View File

@ -1,45 +0,0 @@
'use strict'
// **********************************
class Device {
// bus is i2c-bus bus object
constructor(bus, address, opts) {
this.bus = bus
this.address = address
if (opts) {
this.id = opts.id // must be unique within a bus
this.desc = opts.desc
}
}
readRaw(length, buffer) {
return this.bus.readRaw(this.address, length, buffer)
}
writeRaw(length, buffer) {
return this.bus.writeRaw(this.address, length, buffer)
}
read(cmd) {
return this.bus.read(this.address, cmd)
}
write(cmd, byte) {
return this.bus.write(this.address, cmd, byte)
}
read2(cmd) {
return this.bus.read2(this.address, cmd)
}
write2(cmd, bytes) {
return this.bus.write2(this.address, cmd, bytes)
}
}
module.exports = {
Device
}

View File

@ -21,10 +21,9 @@
}, },
"homepage": "https://github.com/uCOMmandIt/i2c#readme", "homepage": "https://github.com/uCOMmandIt/i2c#readme",
"dependencies": { "dependencies": {
"bluebird": "^3.4.7",
"i2c-bus": "^1.2.0", "i2c-bus": "^1.2.0",
"p-queue": "^1.0.0",
"pify": "^2.3.0", "pify": "^2.3.0",
"promisqueue": "^1.0.3",
"require-all": "git+https://github.com/dkebler/node-require-all.git#merge" "require-all": "git+https://github.com/dkebler/node-require-all.git#merge"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,25 +0,0 @@
'use strict'
const chai = require('chai'),
chaiAsPromised = require("chai-as-promised"),
Bus = require('../lib/bus').Bus,
Device = require('../lib/device').Device
// _ = require('uci-utils')
chai.use(chaiAsPromised);
const expect = chai.expect
let bus = new Bus()
let device = new Device(bus, 0x20)
describe('Device Class - ', function () {
let SET = 0xff
it('Can write and read to actual device', function () {
device.write(0x09, SET).then(expect(device.read(0x0A)).to.eventually.equal(SET))
.then(setTimeout(() => device.write(0x09, 0), 3000))
.catch(err => console.log("an error", err))
})
})