competition fixes
[3501/2017steamworks] / src / org / usfirst / frc / team3501 / robot / subsystems / Intake.java
index b5e72053c3f90aba576e89913960873b31b99d2b..b6c82d484f5f56b03dac38dd6332496972937910 100644 (file)
@@ -1,6 +1,7 @@
 package org.usfirst.frc.team3501.robot.subsystems;
 
 import org.usfirst.frc.team3501.robot.Constants;
+import org.usfirst.frc.team3501.robot.MathLib;
 
 import com.ctre.CANTalon;
 
@@ -10,15 +11,21 @@ import edu.wpi.first.wpilibj.command.Subsystem;
  * @author Meeta
  */
 public class Intake extends Subsystem {
-  public static Intake intake = null;
+  private static Intake intake = null;
   private CANTalon intakeWheel;
-  public static final double INTAKE_SPEED = 0;
+  public static final double INTAKE_SPEED = 1;
+  public static final double REVERSE_SPEED = -1;
 
-  // create speed of intake whee
   public Intake() {
     intakeWheel = new CANTalon(Constants.Intake.INTAKE_ROLLER_PORT);
   }
 
+  /***
+   * It gets the intake instance, and if intake has not been initialized, then
+   * it will be initialized.
+   *
+   * @returns intake
+   */
   public static Intake getIntake() {
     if (intake == null) {
       intake = new Intake();
@@ -31,8 +38,38 @@ public class Intake extends Subsystem {
 
   }
 
+  /***
+   * Sets speed of intake wheel to input speed
+   *
+   * @param speed
+   *          from -1 to 1
+   */
   public void setSpeed(double speed) {
+    speed = MathLib.restrictToRange(speed, -1.0, 1.0);
     intakeWheel.set(speed);
   }
 
+  /***
+   * Runs the intake wheel at the set intake speed.
+   */
+  public void runIntake() {
+    setSpeed(INTAKE_SPEED);
+  }
+
+  /***
+   * Stops the intake wheel by setting intake wheel's speed to 0.
+   */
+  public void stopIntake() {
+    setSpeed(0);
+  }
+
+  /***
+   * Purpose is to release all balls from the ball container to the outside of
+   * the robot. Reverses intake wheel by setting wheel speed to reverse speed.
+   *
+   */
+  public void runReverseIntake() {
+    setSpeed(REVERSE_SPEED);
+  }
+
 }