Add shooter flatbuffers

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I2e5afb2c8483b15454422fbd664221326f21709c
diff --git a/y2024/control_loops/superstructure/superstructure_goal.fbs b/y2024/control_loops/superstructure/superstructure_goal.fbs
index 25fc8ca..c00c70e 100644
--- a/y2024/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2024/control_loops/superstructure/superstructure_goal.fbs
@@ -12,12 +12,24 @@
 // Represents goal for pivot on intake
 enum IntakePivotGoal : ubyte {
     EXTENDED = 0,
-    RETRACTED = 1,
+    RETRACTED = 1, 
+}
+
+table CatapultGoal {
+    // The target shot position and velocity.  If these are provided before fire
+    // is called, the optimizer can pre-compute the trajectory.
+    shot_position: double (id: 0);
+    shot_velocity: double (id: 1);
+
+    // Return position of the catapult
+    return_position: double (id: 2);
 }
 
 table Goal {
     intake_roller_goal:IntakeRollerGoal (id: 0);
     intake_pivot_goal:IntakePivotGoal (id: 1);
+
+    catapult_goal:CatapultGoal (id: 2);
 }
 
 root_type Goal;
diff --git a/y2024/control_loops/superstructure/superstructure_output.fbs b/y2024/control_loops/superstructure/superstructure_output.fbs
index d54e608..cd5971e 100644
--- a/y2024/control_loops/superstructure/superstructure_output.fbs
+++ b/y2024/control_loops/superstructure/superstructure_output.fbs
@@ -6,6 +6,15 @@
 
     // Voltage of intake pivot
     intake_pivot_voltage:double (id: 1);
+
+    // Voltage of the turret
+    turret_voltage: double (id: 2);
+
+    // Voltage of the altitude
+    altitude_voltage: double (id: 3);
+
+    // Voltage of the catapult
+    catapult_voltage: double (id: 4);
 }
 
 root_type Output;
diff --git a/y2024/control_loops/superstructure/superstructure_position.fbs b/y2024/control_loops/superstructure/superstructure_position.fbs
index 0bb5ae8..e4f6474 100644
--- a/y2024/control_loops/superstructure/superstructure_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_position.fbs
@@ -6,6 +6,15 @@
 table Position {
     // Values of the encoder and potentiometer at the intake pivot
     intake_pivot:frc971.PotAndAbsolutePosition (id: 0);
+
+    // Values of the encoder and potentiometer at the turret
+    turret:frc971.PotAndAbsolutePosition (id: 1);
+
+    // Values of the encoder and potentiometer at the altitude
+    altitude:frc971.PotAndAbsolutePosition (id: 2);
+
+    // Values of the encoder and potentiometer at the catapult
+    catapult:frc971.PotAndAbsolutePosition (id: 3);
 }
 
 root_type Position;
diff --git a/y2024/control_loops/superstructure/superstructure_status.fbs b/y2024/control_loops/superstructure/superstructure_status.fbs
index 98134bd..82756dd 100644
--- a/y2024/control_loops/superstructure/superstructure_status.fbs
+++ b/y2024/control_loops/superstructure/superstructure_status.fbs
@@ -10,6 +10,17 @@
   INTAKING = 2,
 }
 
+table ShooterStatus {
+  // Estimated angle and angular velocitiy of the turret.
+  turret_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 0);
+
+  // Estimated angle and angular velocitiy of the catapult.
+  catapult_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 1);
+
+  // Estimated angle and angular velocitiy of the altitude.
+  altitude_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 2);
+}
+
 table Status {
   // All subsystems know their location.
   zeroed:bool (id: 0);