Add Climber Flatbuffers

Signed-off-by: Filip Kujawa <filip.j.kujawa@gmail.com>
Change-Id: I82c15ec9dfc21f3c2d74a4b66112aef6238f0484
diff --git a/y2024/control_loops/superstructure/superstructure_can_position.fbs b/y2024/control_loops/superstructure/superstructure_can_position.fbs
index f9f4ca9..6cd3f1e 100644
--- a/y2024/control_loops/superstructure/superstructure_can_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_can_position.fbs
@@ -20,6 +20,9 @@
 
     // CAN Position of the transfer roller falcon
     transfer_roller:frc971.control_loops.CANTalonFX (id: 4);
+
+    // CAN Position of the climber falcon
+    climber:frc971.control_loops.CANTalonFX (id: 5);
 }
 
 root_type CANPosition;
\ No newline at end of file
diff --git a/y2024/control_loops/superstructure/superstructure_goal.fbs b/y2024/control_loops/superstructure/superstructure_goal.fbs
index 0af8ca3..bb7b706 100644
--- a/y2024/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2024/control_loops/superstructure/superstructure_goal.fbs
@@ -25,13 +25,21 @@
     TRANSFER_OUT = 2,
 }
 
+// Represents goal for climber
+// FULL_EXTEND is for fully extending the climber
+// HALF_EXTEND is for partially extending the climber
+// RETRACT is for retracting the climber
+enum ClimberGoal : ubyte {
+    FULL_EXTEND = 0,
+    HALF_EXTEND = 1,
+    RETRACT = 2,
+}
+
 table Goal {
     intake_roller_goal:IntakeRollerGoal (id: 0);
     intake_pivot_goal:IntakePivotGoal (id: 1);
-
     catapult_goal:frc971.control_loops.catapult.CatapultGoal (id: 2);
-    
     transfer_roller_goal:TransferRollerGoal (id: 3);
+    climber_goal:ClimberGoal (id: 4);
 }
-
 root_type Goal;
diff --git a/y2024/control_loops/superstructure/superstructure_output.fbs b/y2024/control_loops/superstructure/superstructure_output.fbs
index 976707d..a429976 100644
--- a/y2024/control_loops/superstructure/superstructure_output.fbs
+++ b/y2024/control_loops/superstructure/superstructure_output.fbs
@@ -20,6 +20,11 @@
     // Positive voltage is for transfering in
     // Negative voltage is for transfering out
     transfer_roller_voltage:double (id: 5);
+
+    // Voltage of climber
+    // Positive voltage is for climber up
+    // Negative voltage is for climber down
+    climber_voltage:double (id: 6);
 }
 
 root_type Output;
diff --git a/y2024/control_loops/superstructure/superstructure_position.fbs b/y2024/control_loops/superstructure/superstructure_position.fbs
index da867a9..cd12da0 100644
--- a/y2024/control_loops/superstructure/superstructure_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_position.fbs
@@ -18,6 +18,10 @@
 
     // True means there is a game piece in the transfer.
     transfer_beambreak:bool (id: 4);
+
+    // Values of the encoder and potentiometer at the climber.
+    // Zero is fully retracted, positive is extended upward.
+    climber:frc971.PotAndAbsolutePosition (id: 5);
 }
 
 root_type Position;
diff --git a/y2024/control_loops/superstructure/superstructure_status.fbs b/y2024/control_loops/superstructure/superstructure_status.fbs
index 9084361..cd727ac 100644
--- a/y2024/control_loops/superstructure/superstructure_status.fbs
+++ b/y2024/control_loops/superstructure/superstructure_status.fbs
@@ -43,6 +43,9 @@
 
   // State of transfer rollers
   transfer_roller_state:TransferRollerState (id: 4);
+
+  // Estimated angle and angular velocitiy of the climber.
+  climber_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 5);
 }
 
 root_type Status;