import {
composer,
fiterWithBinaryStr
} from '../core/utils';
import BaseMotor from './BaseMotor';
import protocolAssembler from '../protocol/cmd';
import Control from '../core/control';
import {
SUPPORTLIST
} from '../settings';
/**
* DcMotor sensor module
* @extends BaseMotor
*
* @example
* mcore.DcMotor()
* .speed(100)
* .reverse() // run with speed -100
* .run();
*/
class DcMotor extends BaseMotor {
constructor(port) {
super(port);
}
/**
* run reversely
*/
setReverse() {
this.speed(-1 * this.args.speed);
return this;
}
/**
* a getter interface, which returns the protocol
*/
get protocol() {
return composer(protocolAssembler.setDcMotor, [this.args.port, this.args.speed]);
}
/**
* run with previously parameters setting
* @example
* mcore.DcMotor().speed(255).run();
*/
run() {
Control.write(this.protocol);
return this;
}
/**
* a getter interface, which returns the mainboards the DcMotor module supported
*/
static get SUPPORT() {
return fiterWithBinaryStr(SUPPORTLIST, '1111');
}
}
export default DcMotor;