Add swerve control loops

Add the control loops for swerve in frc971/control_loops/swerve
Sets the current for each swerve module to 0
Does not use status and position flatbuffers

Change-Id: Id706459fabc1326ee1b78d1f35b90cf8cd3f7df9
Signed-off-by: Yash Maheshwari <yashmahe2018@gmail.com>
diff --git a/frc971/control_loops/swerve/BUILD b/frc971/control_loops/swerve/BUILD
index 3bd3453..ccba681 100644
--- a/frc971/control_loops/swerve/BUILD
+++ b/frc971/control_loops/swerve/BUILD
@@ -1,3 +1,4 @@
+load("//aos:config.bzl", "aos_config")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
@@ -16,21 +17,18 @@
 static_flatbuffer(
     name = "swerve_drivetrain_output_fbs",
     srcs = ["swerve_drivetrain_output.fbs"],
-    visibility = ["//visibility:public"],
     deps = ["//frc971/control_loops:can_talonfx_fbs"],
 )
 
 static_flatbuffer(
     name = "swerve_drivetrain_can_position_fbs",
     srcs = ["swerve_drivetrain_can_position.fbs"],
-    visibility = ["//visibility:public"],
     deps = ["//frc971/control_loops:can_talonfx_fbs"],
 )
 
 static_flatbuffer(
     name = "swerve_drivetrain_position_fbs",
     srcs = ["swerve_drivetrain_position.fbs"],
-    visibility = ["//visibility:public"],
     deps = ["//frc971/control_loops:control_loops_fbs"],
 )
 
@@ -47,3 +45,54 @@
         "@pip//sympy",
     ],
 )
+
+cc_library(
+    name = "swerve_control_loops",
+    srcs = ["swerve_control_loops.cc"],
+    hdrs = ["swerve_control_loops.h"],
+    target_compatible_with = ["@platforms//os:linux"],
+    deps = [
+        ":swerve_drivetrain_can_position_fbs",
+        ":swerve_drivetrain_goal_fbs",
+        ":swerve_drivetrain_output_fbs",
+        ":swerve_drivetrain_position_fbs",
+        ":swerve_drivetrain_status_fbs",
+        "//frc971/control_loops:control_loop",
+    ],
+)
+
+cc_test(
+    name = "swerve_control_test",
+    srcs = ["swerve_control_test.cc"],
+    data = [
+        ":aos_config",
+    ],
+    target_compatible_with = ["@platforms//os:linux"],
+    deps = [
+        ":swerve_control_loops",
+        ":swerve_drivetrain_can_position_fbs",
+        ":swerve_drivetrain_goal_fbs",
+        ":swerve_drivetrain_output_fbs",
+        ":swerve_drivetrain_position_fbs",
+        ":swerve_drivetrain_status_fbs",
+        "//aos/events:shm_event_loop",
+        "//aos/testing:googletest",
+        "//frc971/control_loops:control_loop_test",
+        "//frc971/control_loops:state_feedback_loop",
+        "//frc971/control_loops:team_number_test_environment",
+    ],
+)
+
+aos_config(
+    name = "aos_config",
+    src = "swerve.json",
+    flatbuffers = [
+        ":swerve_drivetrain_goal_fbs",
+        ":swerve_drivetrain_output_fbs",
+        ":swerve_drivetrain_position_fbs",
+        ":swerve_drivetrain_can_position_fbs",
+        ":swerve_drivetrain_status_fbs",
+    ],
+    target_compatible_with = ["@platforms//os:linux"],
+    deps = ["//frc971/input:aos_config"],
+)