Add SFR 4/5-piece auto

This brings in the 5 piece auto as it existed at the end of SFR.

Note: This squashes multiple commits worth of work.

Change-Id: Ia0bca787647cba9620be40d27d8d1e424d567b03
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/y2024/autonomous/auto_splines.h b/y2024/autonomous/auto_splines.h
index 309222f..93360d3 100644
--- a/y2024/autonomous/auto_splines.h
+++ b/y2024/autonomous/auto_splines.h
@@ -19,7 +19,20 @@
  public:
   AutonomousSplines()
       : test_spline_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
-            "splines/test_spline.json")) {}
+            "splines/test_spline.json")),
+        mobility_and_shoot_spline_(
+            aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+                "splines/mobilityandshoot.0.json")),
+        four_piece_spline_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/five_note.0.json")),
+        four_piece_spline_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/five_note.1.json")),
+        four_piece_spline_3_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/five_note.2.json")),
+        four_piece_spline_4_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/five_note.3.json")),
+        four_piece_spline_5_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/five_note.4.json")) {}
   static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
       aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
           *builder,
@@ -33,9 +46,39 @@
       aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
           *builder,
       aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> MobilityAndShootSpline(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline1(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline2(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline3(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline4(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
+  flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline5(
+      aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
+          *builder,
+      aos::Alliance alliance);
 
  private:
   aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> mobility_and_shoot_spline_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_1_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_2_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_3_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_4_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_5_;
 };
 
 }  // namespace y2024::autonomous