obniz
Version:
obniz sdk for javascript
183 lines (154 loc) • 5.35 kB
JavaScript
let chai = require('chai');
let expect = chai.expect;
let testUtil = require(global.appRoot + '/test/testUtil.js');
chai.use(require('chai-like'));
chai.use(testUtil.obnizAssert);
describe('obniz.libs.pwm', function() {
beforeEach(function(done) {
return testUtil.setupObnizPromise(this, done);
});
afterEach(function(done) {
return testUtil.releaseObnizePromise(this, done);
});
it('getpwm', function() {
let pwm = this.obniz.getFreePwm();
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('getpwm double', function() {
let pwm1 = this.obniz.getFreePwm();
let pwm2 = this.obniz.getFreePwm();
expect(this.obniz).to.be.finished;
expect(pwm1).to.be.equal(this.obniz.pwm0);
expect(pwm2).to.be.equal(this.obniz.pwm1);
});
it('getpwm released', function() {
let pwm1 = this.obniz.getFreePwm();
expect(pwm1).to.be.equal(this.obniz.pwm0);
pwm1.start({ io: 11 });
expect(this.obniz).send([{ io11: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io11: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 11 } }]);
pwm1.end();
expect(this.obniz).send([{ pwm0: null }]);
let pwm2 = this.obniz.getFreePwm();
expect(pwm2).to.be.equal(this.obniz.pwm0);
expect(this.obniz).to.be.finished;
});
it('start io', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 11 });
expect(this.obniz).send([{ io11: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io11: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 11 } }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('start io with drive-pull', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 11, drive: 'open-drain', pull: '5v' });
expect(this.obniz).send([{ io11: { output_type: 'open-drain' } }]);
expect(this.obniz).send([{ io11: { pull_type: 'pull-up5v' } }]);
expect(this.obniz).send([{ pwm0: { io: 11 } }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('start io invalid', function() {
let pwm = this.obniz.getFreePwm();
expect(function() {
pwm.start({ io: 15 });
}).throw(Error);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('freq', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 10 });
expect(this.obniz).send([{ io10: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io10: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 10 } }]);
pwm.freq(1000);
expect(this.obniz).send([{ pwm0: { freq: 1000 } }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('pulse', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 9 });
expect(this.obniz).send([{ io9: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io9: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 9 } }]);
pwm.freq(500);
expect(this.obniz).send([{ pwm0: { freq: 500 } }]);
pwm.pulse(0.5);
expect(this.obniz).send([{ pwm0: { pulse: 0.5 } }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('duty', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 9 });
expect(this.obniz).send([{ io9: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io9: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 9 } }]);
pwm.freq(500);
expect(this.obniz).send([{ pwm0: { freq: 500 } }]);
pwm.duty(0.5);
expect(this.obniz).send([{ pwm0: { pulse: 0.01 } }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('modulate', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 11 }); // start pwm. output at io11
expect(this.obniz).send([{ io11: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io11: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 11 } }]);
pwm.freq(38000); // set pwm frequency to 38khz
expect(this.obniz).send([{ pwm0: { freq: 38000 } }]);
// signal for room heater's remote signal
const arr = [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
];
pwm.modulate('am', 0.07, arr); // am modulate. symbol length = 70usec.
expect(this.obniz).send([
{ pwm0: { modulate: { data: arr, symbol_length: 0.07, type: 'am' } } },
]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
it('end', function() {
let pwm = this.obniz.getFreePwm();
pwm.start({ io: 11 });
expect(this.obniz).send([{ io11: { output_type: 'push-pull5v' } }]);
expect(this.obniz).send([{ io11: { pull_type: 'float' } }]);
expect(this.obniz).send([{ pwm0: { io: 11 } }]);
pwm.end();
expect(this.obniz).send([{ pwm0: null }]);
expect(this.obniz).to.be.finished;
expect(pwm).to.be.equal(this.obniz.pwm0);
});
});