Move aos/controls to frc971/control_loops

Also put what was aos/controls/control_loops.fbs in y2012/control_loops
because that's the only user.

Change-Id: I8f402b0708103077e135a41e55ef5e4f23681d87
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/y2012/BUILD b/y2012/BUILD
index ea88af8..450abfa 100644
--- a/y2012/BUILD
+++ b/y2012/BUILD
@@ -9,7 +9,6 @@
     deps = [
         "//aos:init",
         "//aos/actions:action_lib",
-        "//frc971/input:joystick_input",
         "//aos/logging",
         "//aos/time",
         "//aos/util:log_interval",
@@ -17,6 +16,7 @@
         "//frc971/control_loops:control_loops_fbs",
         "//frc971/control_loops/drivetrain:drivetrain_goal_fbs",
         "//frc971/control_loops/drivetrain:spline_goal_fbs",
+        "//frc971/input:joystick_input",
         "//y2012/control_loops/accessories:accessories_fbs",
     ],
 )
@@ -40,11 +40,9 @@
     deps = [
         "//aos:init",
         "//aos:make_unique",
-        "//aos/controls:control_loop",
-        "//aos/controls:control_loop_fbs",
+        "//frc971/control_loops:control_loop",
         "//aos/events:shm_event_loop",
         "//aos/logging",
-        "//frc971/input:robot_state_fbs",
         "//aos/stl_mutex",
         "//aos/time",
         "//aos/util:log_interval",
@@ -53,6 +51,7 @@
         "//frc971/control_loops:control_loops_fbs",
         "//frc971/control_loops/drivetrain:drivetrain_output_fbs",
         "//frc971/control_loops/drivetrain:drivetrain_position_fbs",
+        "//frc971/input:robot_state_fbs",
         "//frc971/wpilib:buffered_pcm",
         "//frc971/wpilib:dma",
         "//frc971/wpilib:dma_edge_counting",
@@ -66,6 +65,7 @@
         "//frc971/wpilib:wpilib_interface",
         "//frc971/wpilib:wpilib_robot_base",
         "//third_party:wpilib",
+        "//y2012/control_loops:control_loop_fbs",
         "//y2012/control_loops/accessories:accessories_fbs",
     ],
 )
diff --git a/y2012/control_loops/BUILD b/y2012/control_loops/BUILD
index 1cf6e97..ef4e03f 100644
--- a/y2012/control_loops/BUILD
+++ b/y2012/control_loops/BUILD
@@ -1,3 +1,5 @@
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
+
 py_library(
     name = "python_init",
     srcs = ["__init__.py"],
@@ -5,3 +7,12 @@
     visibility = ["//visibility:public"],
     deps = ["//y2012:python_init"],
 )
+
+flatbuffer_cc_library(
+    name = "control_loop_fbs",
+    srcs = [
+        "control_loops.fbs",
+    ],
+    target_compatible_with = ["@platforms//os:linux"],
+    visibility = ["//y2012:__subpackages__"],
+)
diff --git a/y2012/control_loops/accessories/BUILD b/y2012/control_loops/accessories/BUILD
index 02a15f1..ee61511 100644
--- a/y2012/control_loops/accessories/BUILD
+++ b/y2012/control_loops/accessories/BUILD
@@ -11,8 +11,8 @@
     deps = [
         ":accessories_fbs",
         "//aos:init",
-        "//aos/controls:control_loop",
-        "//aos/controls:control_loop_fbs",
+        "//frc971/control_loops:control_loop",
+        "//y2012/control_loops:control_loop_fbs",
     ],
 )
 
diff --git a/y2012/control_loops/accessories/accessories.cc b/y2012/control_loops/accessories/accessories.cc
index 5627c7b..c71146e 100644
--- a/y2012/control_loops/accessories/accessories.cc
+++ b/y2012/control_loops/accessories/accessories.cc
@@ -1,30 +1,29 @@
-#include "y2012/control_loops/accessories/accessories_generated.h"
-
 #include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
-#include "aos/controls/control_loop.h"
-#include "aos/controls/control_loops_generated.h"
+#include "frc971/control_loops/control_loop.h"
+#include "y2012/control_loops/accessories/accessories_generated.h"
+#include "y2012/control_loops/control_loops_generated.h"
 
 namespace y2012 {
 namespace control_loops {
 namespace accessories {
 
-class AccessoriesLoop : public ::aos::controls::ControlLoop<
+class AccessoriesLoop : public ::frc971::controls::ControlLoop<
                             Message, ::aos::control_loops::Position,
                             ::aos::control_loops::Status, Message> {
  public:
   explicit AccessoriesLoop(
       ::aos::EventLoop *event_loop,
       const ::std::string &name = ".y2012.control_loops.accessories_queue")
-      : ::aos::controls::ControlLoop<Message, ::aos::control_loops::Position,
-                                     ::aos::control_loops::Status, Message>(
+      : ::frc971::controls::ControlLoop<Message, ::aos::control_loops::Position,
+                                        ::aos::control_loops::Status, Message>(
             event_loop, name) {}
 
-  void RunIteration(
-      const Message *goal,
-      const ::aos::control_loops::Position * /*position*/,
-      ::aos::Sender<Message>::Builder *output,
-      ::aos::Sender<::aos::control_loops::Status>::Builder * /*status*/) override {
+  void RunIteration(const Message *goal,
+                    const ::aos::control_loops::Position * /*position*/,
+                    ::aos::Sender<Message>::Builder *output,
+                    ::aos::Sender<::aos::control_loops::Status>::Builder
+                        * /*status*/) override {
     if (output) {
       //*output = *goal;
       Message::Builder output_builder = output->MakeBuilder<Message>();
@@ -33,8 +32,8 @@
               goal->solenoids()->data(), 3);
       output_builder.add_solenoids(solenoid_offset);
       flatbuffers::Offset<flatbuffers::Vector<double>> stick_offset =
-          output->fbb()->template CreateVector<double>(
-              goal->sticks()->data(), 2);
+          output->fbb()->template CreateVector<double>(goal->sticks()->data(),
+                                                       2);
       output_builder.add_sticks(stick_offset);
 
       output_builder.Finish();
diff --git a/y2012/control_loops/control_loops.fbs b/y2012/control_loops/control_loops.fbs
new file mode 100644
index 0000000..be5b7db
--- /dev/null
+++ b/y2012/control_loops/control_loops.fbs
@@ -0,0 +1,24 @@
+namespace aos.control_loops;
+// This file defines basic messages for a Single Input Single Output (SISO)
+// control loop.
+
+table Goal {
+  goal:double (id: 0);
+}
+
+table Position {
+  position:double (id: 0);
+}
+
+table Output {
+  voltage:double (id: 0);
+}
+
+table Status {
+  done:bool (id: 0);
+}
+
+root_type Goal;
+root_type Position;
+root_type Output;
+root_type Status;
diff --git a/y2012/wpilib_interface.cc b/y2012/wpilib_interface.cc
index f611c93..959e198 100644
--- a/y2012/wpilib_interface.cc
+++ b/y2012/wpilib_interface.cc
@@ -19,7 +19,6 @@
 #include "frc971/wpilib/wpilib_robot_base.h"
 #undef ERROR
 
-#include "aos/controls/control_loops_generated.h"
 #include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
 #include "aos/logging/logging.h"
@@ -44,6 +43,7 @@
 #include "frc971/wpilib/loop_output_handler.h"
 #include "frc971/wpilib/sensor_reader.h"
 #include "y2012/control_loops/accessories/accessories_generated.h"
+#include "y2012/control_loops/control_loops_generated.h"
 
 namespace accessories = ::y2012::control_loops::accessories;
 using namespace frc;