@@ -0,0 +1,1423 @@
+package com.team254.frc2013.commands;%0A%0A/**%0A * Drives the hanger to its end (over the bar) position%0A * while optionally stopping at a staging position (right%0A * below the bar) to allow for swing.%0A *%0A * @author tom@team254.com (Tom Bottiglieri)%0A */%0Apublic class HangerGrabBarCommand extends CommandBase %7B%0A  private double stagingGoal, endGoal, minForeswingAngle, minBackswingAngle;%0A  boolean setToEnd = false;%0A%0A  public HangerGrabBarCommand(double stagingGoal, double endGoal,%0A          double minForeswingAngle, double minBackswingAngle) %7B%0A    requires(drive);%0A    this.stagingGoal = stagingGoal;%0A    this.endGoal = endGoal;%0A    this.minForeswingAngle = minForeswingAngle;%0A    this.minBackswingAngle = minBackswingAngle;%0A  %7D%0A%0A  private boolean clearToTop() %7B%0A    return hanger.getPitchAngle() %3E minForeswingAngle && hanger.getPitchRate() %3E 0 %7C%7C%0A        hanger.getPitchAngle() %3E minBackswingAngle;%0A  %7D%0A%0A  protected void initialize() %7B%0A    hanger.setPto(true);%0A    hanger.setGoal(stagingGoal);%0A    hanger.enableController(true);%0A  %7D%0A%0A  protected void execute() %7B%0A    if (!setToEnd && clearToTop()) %7B%0A      hanger.setGoal(endGoal);%0A      setToEnd = true;%0A    %7D%0A  %7D%0A%0A  protected boolean isFinished() %7B%0A    return setToEnd && hanger.onTarget();%0A  %7D%0A%0A  protected void end() %7B%0A    hanger.enableController(false);%0A    motors.set(0);%0A  %7D%0A%0A  protected void interrupted() %7B%0A    hanger.enableController(false);%0A    motors.set(0);%0A  %7D%0A%7D%0A

Add HangerGrabBarCommand