Add superstructure state machine

Managing balls from the intake into the catapult

Change-Id: I88535ee82a876d63fe49e3607c6986690d704daf
Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Signed-off-by: Ravago Jones <ravagojones@gmail.com>
diff --git a/y2022/control_loops/superstructure/superstructure_goal.fbs b/y2022/control_loops/superstructure/superstructure_goal.fbs
index ada39a2..379f6ba 100644
--- a/y2022/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2022/control_loops/superstructure/superstructure_goal.fbs
@@ -3,8 +3,9 @@
 namespace y2022.control_loops.superstructure;
 
 table CatapultGoal {
-  // If true, fire!  The robot will only fire when ready.
-  fire:bool (id: 0);
+  // Old fire flag, only kept for backwards-compatability with logs.
+  // Use the fire flag in the root Goal instead
+  fire:bool (id: 0, deprecated);
 
   // The target shot position and velocity.  If these are provided before fire
   // is called, the optimizer can pre-compute the trajectory.
@@ -37,6 +38,15 @@
 
   // Catapult goal state.
   catapult:CatapultGoal (id: 8);
+
+  // If true, fire!  The robot will only fire when ready.
+  fire:bool (id: 9);
+
+  // Aborts the shooting process if the ball has been loaded into the catapult
+  // and the superstructure is in the LOADED state.
+  cancel_shot:bool (id: 10);
 }
 
+
+
 root_type Goal;