Add Transfer Roller Flatbuffers

Change-Id: I9eaeee9539364d58d5001fdd731cdea48659da25
Signed-off-by: Aryan Khanna <aryankhanna0312@gmail.com>
diff --git a/y2024/control_loops/superstructure/superstructure_can_position.fbs b/y2024/control_loops/superstructure/superstructure_can_position.fbs
index 46f638c..f9f4ca9 100644
--- a/y2024/control_loops/superstructure/superstructure_can_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_can_position.fbs
@@ -17,6 +17,9 @@
 
     // CAN Position of the intake pivot falcon
     intake_pivot:frc971.control_loops.CANTalonFX (id: 3);
+
+    // CAN Position of the transfer roller falcon
+    transfer_roller:frc971.control_loops.CANTalonFX (id: 4);
 }
 
 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 63cbcf0..0af8ca3 100644
--- a/y2024/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2024/control_loops/superstructure/superstructure_goal.fbs
@@ -16,11 +16,22 @@
     RETRACTED = 1, 
 }
 
+// Represents goal of transfer rollers
+// TRANSFER_IN is for transfering game piece in from the intake to the shooter
+// TRANSFER_OUT is for transfering game piece out to the intake for spitting
+enum TransferRollerGoal : ubyte {
+    NONE = 0,
+    TRANSFER_IN = 1,
+    TRANSFER_OUT = 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);
 }
 
 root_type Goal;
diff --git a/y2024/control_loops/superstructure/superstructure_output.fbs b/y2024/control_loops/superstructure/superstructure_output.fbs
index cd5971e..976707d 100644
--- a/y2024/control_loops/superstructure/superstructure_output.fbs
+++ b/y2024/control_loops/superstructure/superstructure_output.fbs
@@ -15,6 +15,11 @@
 
     // Voltage of the catapult
     catapult_voltage: double (id: 4);
+
+    // Voltage of transfer rollers
+    // Positive voltage is for transfering in
+    // Negative voltage is for transfering out
+    transfer_roller_voltage:double (id: 5);
 }
 
 root_type Output;
diff --git a/y2024/control_loops/superstructure/superstructure_position.fbs b/y2024/control_loops/superstructure/superstructure_position.fbs
index e4f6474..da867a9 100644
--- a/y2024/control_loops/superstructure/superstructure_position.fbs
+++ b/y2024/control_loops/superstructure/superstructure_position.fbs
@@ -15,6 +15,9 @@
 
     // Values of the encoder and potentiometer at the catapult
     catapult:frc971.PotAndAbsolutePosition (id: 3);
+
+    // True means there is a game piece in the transfer.
+    transfer_beambreak:bool (id: 4);
 }
 
 root_type Position;
diff --git a/y2024/control_loops/superstructure/superstructure_status.fbs b/y2024/control_loops/superstructure/superstructure_status.fbs
index 82756dd..9084361 100644
--- a/y2024/control_loops/superstructure/superstructure_status.fbs
+++ b/y2024/control_loops/superstructure/superstructure_status.fbs
@@ -21,6 +21,13 @@
   altitude_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 2);
 }
 
+// Contains status of transfer rollers
+enum TransferRollerState : ubyte {
+    NONE = 0,
+    TRANSFERING_IN = 1,
+    TRANSFERING_OUT = 2,
+}
+
 table Status {
   // All subsystems know their location.
   zeroed:bool (id: 0);
@@ -33,6 +40,9 @@
 
   // Estimated angle and angular velocitiy of the intake.
   intake_pivot_state:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 3);
+
+  // State of transfer rollers
+  transfer_roller_state:TransferRollerState (id: 4);
 }
 
 root_type Status;