obniz
Version:
obniz sdk for javascript
160 lines (143 loc) • 3.31 kB
JavaScript
const chai = require('chai');
const expect = chai.expect;
const config = require('../config.js');
let obnizA, obnizB;
describe('6-i2c', function() {
this.timeout(10000);
before(function() {
return new Promise(resolve => {
config.waitForConenct(() => {
obnizA = config.obnizA;
obnizB = config.obnizB;
obnizA.io11.output(true);
resolve();
});
});
});
it('1k data', async function() {
const sender = obnizA.getFreeI2C();
sender.start({
mode: 'master',
sda: 0,
scl: 1,
clock: 100 * 1000,
pull: '5v',
});
await obnizA.pingWait();
const receiver = obnizB.getFreeI2C();
receiver.start({
mode: 'slave',
sda: 0,
scl: 1,
clock: 100 * 1000,
slave_address: 0x50,
pull: '5v',
});
await obnizB.pingWait();
let data = [];
for (let i = 0; i < 1024; i++) {
data.push(i % 256);
}
sender.write(0x50, data);
let received = [];
receiver.onwritten = function(arrived) {
received.push(...arrived);
};
while (1) {
if (data.length === received.length) {
expect(received).to.deep.equal(data);
break;
}
await wait(1); //wait for 10ms
}
receiver.end();
sender.end();
});
it('1k data again', async function() {
const sender = obnizA.getFreeI2C();
sender.start({
mode: 'master',
sda: 0,
scl: 1,
clock: 100 * 1000,
pull: '5v',
});
await obnizA.pingWait();
const receiver = obnizB.getFreeI2C();
receiver.start({
mode: 'slave',
sda: 0,
scl: 1,
clock: 100 * 1000,
slave_address: 0x50,
pull: '5v',
});
await obnizB.pingWait();
let data = [];
for (let i = 0; i < 1024; i++) {
data.push(i % 256);
}
sender.write(0x50, data);
let received = [];
receiver.onwritten = function(arrived) {
received.push(...arrived);
};
while (1) {
if (data.length === received.length) {
expect(received).to.deep.equal(data);
break;
}
await wait(1); //wait for 10ms
}
receiver.end();
sender.end();
});
it('1k data counter direction', async function() {
const sender = obnizB.getFreeI2C();
sender.start({
mode: 'master',
sda: 0,
scl: 1,
clock: 100 * 1000,
pull: '5v',
});
await obnizB.pingWait();
const receiver = obnizA.getFreeI2C();
receiver.start({
mode: 'slave',
sda: 0,
scl: 1,
clock: 100 * 1000,
slave_address: 0x50,
pull: '5v',
});
await obnizA.pingWait();
let data = [];
for (let i = 0; i < 1024; i++) {
data.push(i % 256);
}
sender.write(0x50, data);
let received = [];
receiver.onwritten = function(arrived) {
received.push(...arrived);
};
while (1) {
if (data.length === received.length) {
expect(received).to.deep.equal(data);
break;
}
await wait(1); //wait for 10ms
}
receiver.end();
sender.end();
obnizA.io0.pull(null);
obnizA.io1.pull(null);
obnizB.io0.pull(null);
obnizB.io1.pull(null);
});
});
function wait(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}