/* * This file is part of CBCJVM. * CBCJVM is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CBCJVM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CBCJVM. If not, see <http://www.gnu.org/licenses/>. */ package cbccore.low.controllers; import cbccore.Device; import cbccore.InvalidPercentageException; import cbccore.InvalidPortException; import cbccore.InvalidValueException; import cbccore.low.Motor; /** * * @author Braden McDorman * */ public class MotorController { private int port; private Motor motor = Device.getLowMotorController(); public MotorController(int port) throws InvalidPortException { if(port < 0 || port > 4) { throw new InvalidPortException(); } this.port = port ; } public void moveAtPercent(int percent) throws InvalidPercentageException { if(percent > 100 || percent < -100) { throw new InvalidPercentageException(); } motor.motor(this.port, percent); } public void moveToPosition(int speed, int goal) { if(speed > 1000 || speed < -1000) { throw new InvalidValueException(); } } public void moveAtVelocity(int velocity) throws InvalidValueException { if(velocity > 1000 || velocity < -1000) { throw new InvalidValueException(); } motor.mav(this.port, velocity); } public void moveRelativePosition(int speed, int delta) throws InvalidValueException { if(speed > 1000 || speed < -1000) { throw new InvalidValueException(); } motor.mrp(this.port, speed, delta); } public void blockMotorDone() { motor.bmd(this.port); } public int getPositionCounter() { return motor.get_motor_position_counter(this.port); } public void stop() { motor.off(this.port); } public void freeze() { motor.freeze(this.port); } }