obniz
Version:
obniz sdk for javascript
236 lines (212 loc) • 7.17 kB
JavaScript
let chai = require('chai');
let expect = chai.expect;
let testUtil = require('../../../testUtil.js');
chai.use(require('chai-like'));
chai.use(testUtil.obnizAssert);
describe('obniz.libs.spi', function() {
beforeEach(function(done) {
return testUtil.setupObnizPromise(this, done);
});
afterEach(function(done) {
return testUtil.releaseObnizePromise(this, done);
});
it('start', function() {
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
mosi: 1,
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io1: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io1: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master', mosi: 1 } },
]);
expect(this.obniz).to.be.finished;
});
it('startWithGnd', function() {
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
mosi: 1,
gnd: 7,
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io1: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io1: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io7: false }]);
expect(this.obniz).send([
{
display: {
pin_assign: {
'7': {
module_name: 'spi0',
pin_name: 'gnd',
},
},
},
},
]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master', mosi: 1 } },
]);
expect(this.obniz).to.be.finished;
});
it('write', function() {
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master' } },
]);
let r = this.obniz.spi0.writeWait([0x12, 0x98]).then(
function(value) {
expect(value).to.be.deep.equal([0x61, 0xf2]);
expect(this.obniz).to.be.finished;
}.bind(this)
);
expect(this.obniz).send([{ spi0: { data: [0x12, 0x98], read: true } }]);
setTimeout(
function() {
testUtil.receiveJson(this.obniz, [{ spi0: { data: [0x61, 0xf2] } }]);
}.bind(this),
10
);
return r;
});
it('write over 32 to <1.0.3', function() {
let firmver_ver = this.obniz.firmware_ver;
this.obniz.firmware_ver = '1.0.2';
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master' } },
]);
let data = [];
for (let i = 0; i < 33; i++) {
data.push(i);
}
expect(() => {
this.obniz.spi0.writeWait(data);
}).to.throw();
expect(this.obniz).to.be.finished;
this.obniz.firmware_ver = firmver_ver;
});
it('write over 32 to >=1.0.3', function() {
let firmver_ver = this.obniz.firmware_ver;
this.obniz.firmware_ver = '1.0.3';
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master' } },
]);
let data = [];
for (let i = 0; i < 33; i++) {
data.push(i);
}
let r = this.obniz.spi0.writeWait(data).then(
function(value) {
expect(value).to.be.deep.equal(data);
expect(this.obniz).to.be.finished;
}.bind(this)
);
expect(this.obniz).send([{ spi0: { data: data, read: true } }]);
setTimeout(
function() {
testUtil.receiveJson(this.obniz, [{ spi0: { data: data } }]);
}.bind(this),
10
);
this.obniz.firmware_ver = firmver_ver;
return r;
});
it.skip('SPI send 2byte and receive 3byte', function() {
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
mosi: 1,
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io1: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io1: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master', mosi: 1 } },
]);
let r = this.obniz.spi0.writeWait([0x12, 0x98]).then(
function(value) {
expect(value).to.be.deep.equal([0x61, 0xf2]);
expect(this.obniz).to.be.finished;
}.bind(this)
);
expect(this.obniz).send([{ spi0: { data: [0x12, 0x98], read: true } }]);
setTimeout(
function() {
testUtil.receiveJson(this.obniz, [
{ spi0: { data: [0x61, 0xf2, 0x34] } },
]);
}.bind(this),
10
);
return r;
});
it('end', function() {
this.obniz.spi0.start({
clk: 0,
frequency: 1000000,
miso: 2,
mode: 'master',
mosi: 1,
});
expect(this.obniz).send([{ io0: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io1: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io2: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io0: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io1: { pull_type: 'float' } }]);
expect(this.obniz).send([{ io2: { pull_type: 'float' } }]);
expect(this.obniz).send([
{ spi0: { clk: 0, clock: 1000000, miso: 2, mode: 'master', mosi: 1 } },
]);
expect(this.obniz).to.be.finished;
this.obniz.spi0.end();
expect(this.obniz).send([{ spi0: null }]);
expect(this.obniz).to.be.finished;
});
});