Add auto cancel button

Change-Id: I3f026dce7478edfdb71bde9683c42f204c765e58
diff --git a/aos/input/action_joystick_input.cc b/aos/input/action_joystick_input.cc
index 061f4dc..6a38967 100644
--- a/aos/input/action_joystick_input.cc
+++ b/aos/input/action_joystick_input.cc
@@ -23,7 +23,8 @@
     }
   }
 
-  if (!auto_running_ || (run_teleop_in_auto_ && !action_queue_.Running())) {
+  if (!auto_running_ ||
+      (input_config_.run_teleop_in_auto && !action_queue_.Running())) {
     if (auto_was_running_) {
       AutoEnded();
       auto_was_running_ = false;
@@ -36,6 +37,11 @@
     HandleTeleop(data);
   }
 
+  if (auto_action_running_ &&
+      data.IsPressed(input_config_.cancel_auto_button)) {
+    StopAuto();
+  }
+
   // Process pending actions.
   action_queue_.Tick();
   was_running_ = action_queue_.Running();
@@ -45,11 +51,13 @@
   LOG(INFO, "Starting auto mode\n");
   action_queue_.EnqueueAction(
       ::frc971::autonomous::MakeAutonomousAction(GetAutonomousMode()));
+  auto_action_running_ = true;
 }
 
 void ActionJoystickInput::StopAuto() {
   LOG(INFO, "Stopping auto mode\n");
   action_queue_.CancelAllActions();
+  auto_action_running_ = false;
 }
 
 }  // namespace input