add precondition and Timeout to Expel and Intake commands
authorLauren Meier <meier.lauren@gmail.com>
Sat, 13 Feb 2016 23:12:05 +0000 (15:12 -0800)
committerLauren Meier <meier.lauren@gmail.com>
Sat, 13 Feb 2016 23:12:05 +0000 (15:12 -0800)
src/org/usfirst/frc/team3501/robot/commands/ExpelBall.java
src/org/usfirst/frc/team3501/robot/commands/IntakeBall.java

index 804ce7ae0a7ecf84ba59bf3bb1c13989ab3cec5d..ba95e6e27621358de74245dc27238d7f8282bc38 100644 (file)
@@ -8,7 +8,8 @@ import edu.wpi.first.wpilibj.command.Command;
  * This command will expel a boulder from the robot, if it is even present to
  * begin with.
  *
- * pre-condition: A boulder is present inside the robot.
+ * pre-condition: Intake arm is at correct height and a boulder is present
+ * inside the robot.
  *
  * post-condition: A boulder is expelled from inside the robot to the field
  * outside of the robot.
@@ -18,6 +19,7 @@ import edu.wpi.first.wpilibj.command.Command;
  */
 
 public class ExpelBall extends Command {
+  private final int TIMEOUT_AMOUNT = 5;
 
   public ExpelBall() {
     requires(Robot.intakeArm);
@@ -25,6 +27,7 @@ public class ExpelBall extends Command {
 
   @Override
   protected void initialize() {
+    this.setTimeout(TIMEOUT_AMOUNT);
     if (Robot.photogate.isBallPresent())
       Robot.intakeArm.outputBall();
   }
@@ -35,7 +38,7 @@ public class ExpelBall extends Command {
 
   @Override
   protected boolean isFinished() {
-    return !Robot.photogate.isBallPresent();
+    return (this.isTimedOut() || !Robot.photogate.isBallPresent());
   }
 
   @Override
index c90a08017d5bf010855c45de20aa0f3ced0989a9..87902d3925cdd1c00269f55db5aa4145ffa8148d 100644 (file)
@@ -8,7 +8,8 @@ import edu.wpi.first.wpilibj.command.Command;
  * This command will take a boulder into the robot if there is not a boulder
  * present inside already.
  *
- * pre-condition: A boulder is not present inside the robot.
+ * pre-condition: Intake arm must be at correct height and a boulder is not
+ * present inside the robot.
  *
  * post-condition: A boulder is taken in from the field outside of the robot
  * into the robot.
@@ -18,6 +19,7 @@ import edu.wpi.first.wpilibj.command.Command;
  */
 
 public class IntakeBall extends Command {
+  private final int TIMEOUT_AMOUNT = 5;
 
   public IntakeBall() {
     requires(Robot.intakeArm);
@@ -25,6 +27,7 @@ public class IntakeBall extends Command {
 
   @Override
   protected void initialize() {
+    this.setTimeout(TIMEOUT_AMOUNT);
     if (!Robot.photogate.isBallPresent())
       Robot.intakeArm.intakeBall();
 
@@ -37,7 +40,7 @@ public class IntakeBall extends Command {
 
   @Override
   protected boolean isFinished() {
-    return Robot.photogate.isBallPresent();
+    return (this.isTimedOut() || Robot.photogate.isBallPresent());
   }
 
   @Override