UNPKG

sensorium

Version:

makeblock mainboards protocol api

93 lines (84 loc) 1.95 kB
import { validateNumber } from '../core/validate'; import { composer, fiterWithBinaryStr } from '../core/utils'; import Electronic from './electronic'; import protocolAssembler from '../protocol/cmd'; import Control from '../core/control'; import { SUPPORTLIST } from '../settings'; /** * VirtualJoystick, actually it's a motor module * @extends Electronic */ class VirtualJoystick extends Electronic { constructor() { super(); this.args = { leftSpeed: 0, rightSpeed: 0, }; } /** * set both left speed and right speed * @param {Number} leftSpeed the left speed * @param {Number} rightSpeed the right speed * @return {Instance} @this */ speed(leftSpeed, rightSpeed) { this.args.leftSpeed = validateNumber(leftSpeed, this.args.leftSpeed); this.args.rightSpeed = validateNumber(rightSpeed, this.args.rightSpeed); return this; } /** * set left speed * @param {Number} speed the left speed * @return {Instance} @this */ leftSpeed(speed) { this.args.leftSpeed = validateNumber(speed, 0); return this; } /** * set right speed * @param {Number} speed the right speed * @return {Instance} @this */ rightSpeed(speed) { this.args.rightSpeed = validateNumber(speed, 0); return this; } /** * getter of protocol */ get protocol() { return composer(protocolAssembler.setJoystick, [this.args.leftSpeed, this.args.rightSpeed]); } /** * run * @param {Number} speed the balance speed * @return {Instance} @this */ run() { Control.write(this.protocol); return this; } runAwait() { return Control.writeAwait(this.protocol,arguments); } /** * stop, that is run with 0 speed * @return {Instance} @this */ setStop() { return this.speed(0, 0); } static get SUPPORT() { return fiterWithBinaryStr(SUPPORTLIST, '1111'); } } export default VirtualJoystick;