package canStateMachine; import Systems.CANDriveAssembly; import Systems.PWMDriveAssembly; public class TurnState extends AutoState { private double angleToTurn = 0.0; private double speedToTurn = 0.3; private boolean isPwm = false; public TurnState(double angleToTurn, double speed, boolean isPwm) { this.name = "<Turn State>"; this.angleToTurn = angleToTurn; this.speedToTurn = speed; this.isPwm = isPwm; if (isPwm) PWMDriveAssembly.initialize(); else CANDriveAssembly.initialize(); } public TurnState(String name, double angleToTurn, double speed, boolean isPwm) { this.name = name; this.angleToTurn = angleToTurn; this.speedToTurn = speed; this.isPwm = isPwm; if (isPwm) PWMDriveAssembly.initialize(); else CANDriveAssembly.initialize(); } // state entry public void enter() { // do some drivey initialization if (isPwm) PWMDriveAssembly.autoInit(); else CANDriveAssembly.autoInit(); super.enter(); } // called periodically public AutoState process() { // do some drivey stuff if (isPwm) { if (angleToTurn < 0.0) PWMDriveAssembly.rotateRight(speedToTurn); else PWMDriveAssembly.rotateLeft(speedToTurn); } else { if (angleToTurn < 0.0) CANDriveAssembly.rotateRight(speedToTurn); else CANDriveAssembly.rotateLeft(speedToTurn); } return super.process(); } // state cleanup and exit public void exit() { // do some drivey cleanup if (isPwm) PWMDriveAssembly.autoStop(); else CANDriveAssembly.autoStop(); // cleanup base class super.exit(); } }