Switch all robots over to use EventLoop

Stop using the old QueueGroup constructor for ControlLoop

Change-Id: I027febf86e75399a97cdb4dc50dbc475705e0393
diff --git a/frc971/codelab/BUILD b/frc971/codelab/BUILD
index 252e01d..0fe9205 100644
--- a/frc971/codelab/BUILD
+++ b/frc971/codelab/BUILD
@@ -1,39 +1,40 @@
-package(default_visibility = ['//visibility:public'])
+package(default_visibility = ["//visibility:public"])
 
-load('//aos/build:queues.bzl', 'queue_library')
+load("//aos/build:queues.bzl", "queue_library")
 
 cc_binary(
-  name = 'basic_test',
-  srcs = ['basic_test.cc'],
-  deps = [
-    ':basic_queue',
-    ':basic',
-    '//aos/testing:googletest',
-    '//aos:queues',
-    '//aos/controls:control_loop_test',
-    '//frc971/control_loops:state_feedback_loop',
-    '//frc971/control_loops:team_number_test_environment',
-  ],
-  testonly = 1,
+    name = "basic_test",
+    testonly = 1,
+    srcs = ["basic_test.cc"],
+    deps = [
+        ":basic",
+        ":basic_queue",
+        "//aos:queues",
+        "//aos/controls:control_loop_test",
+        "//aos/events:shm-event-loop",
+        "//aos/testing:googletest",
+        "//frc971/control_loops:state_feedback_loop",
+        "//frc971/control_loops:team_number_test_environment",
+    ],
 )
 
 cc_library(
-  name = 'basic',
-  srcs = ['basic.cc'],
-  hdrs = ['basic.h'],
-  deps = [
-    ':basic_queue',
-    '//aos/controls:control_loop',
-  ],
+    name = "basic",
+    srcs = ["basic.cc"],
+    hdrs = ["basic.h"],
+    deps = [
+        ":basic_queue",
+        "//aos/controls:control_loop",
+    ],
 )
 
 queue_library(
-  name = 'basic_queue',
-  srcs = [
-    'basic.q',
-  ],
-  deps = [
-    '//aos/controls:control_loop_queues',
-    '//frc971/control_loops:queues',
-  ],
+    name = "basic_queue",
+    srcs = [
+        "basic.q",
+    ],
+    deps = [
+        "//aos/controls:control_loop_queues",
+        "//frc971/control_loops:queues",
+    ],
 )
diff --git a/frc971/codelab/basic.cc b/frc971/codelab/basic.cc
index 536384c..d06e285 100644
--- a/frc971/codelab/basic.cc
+++ b/frc971/codelab/basic.cc
@@ -3,8 +3,8 @@
 namespace frc971 {
 namespace codelab {
 
-Basic::Basic(BasicQueue *my_basic_queue)
-    : aos::controls::ControlLoop<BasicQueue>(my_basic_queue) {}
+Basic::Basic(::aos::EventLoop *event_loop, const ::std::string &name)
+    : aos::controls::ControlLoop<BasicQueue>(event_loop, name) {}
 
 void Basic::RunIteration(const BasicQueue::Goal *goal,
                          const BasicQueue::Position *position,
diff --git a/frc971/codelab/basic.h b/frc971/codelab/basic.h
index 0332168..6f33718 100644
--- a/frc971/codelab/basic.h
+++ b/frc971/codelab/basic.h
@@ -43,7 +43,8 @@
 // - Read basic.q, and familiarize yourself on the inputs and types involved.
 class Basic : public ::aos::controls::ControlLoop<BasicQueue> {
  public:
-  explicit Basic(BasicQueue *my_basic_queue = &basic_queue);
+  explicit Basic(::aos::EventLoop *event_loop,
+                 const ::std::string &name = ".frc971.codelab.basic_queue");
 
  protected:
   void RunIteration(const BasicQueue::Goal *goal,
diff --git a/frc971/codelab/basic_test.cc b/frc971/codelab/basic_test.cc
index 5132407..2dc8dea 100644
--- a/frc971/codelab/basic_test.cc
+++ b/frc971/codelab/basic_test.cc
@@ -6,6 +6,7 @@
 #include <memory>
 
 #include "aos/controls/control_loop_test.h"
+#include "aos/events/shm-event-loop.h"
 #include "aos/queue.h"
 #include "frc971/codelab/basic.q.h"
 #include "frc971/control_loops/team_number_test_environment.h"
@@ -65,7 +66,7 @@
                      ".frc971.codelab.basic_queue.position",
                      ".frc971.codelab.basic_queue.output",
                      ".frc971.codelab.basic_queue.status"),
-        basic_loop_(&basic_queue_) {
+        basic_loop_(&event_loop_, ".frc971.codelab.basic_queue") {
     set_team_id(control_loops::testing::kTeamNumber);
   }
 
@@ -81,6 +82,7 @@
   }
 
   BasicQueue basic_queue_;
+  ::aos::ShmEventLoop event_loop_;
   Basic basic_loop_;
   BasicSimulation basic_simulation_;
 };
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 27a0a76..a06bc3b 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -29,11 +29,11 @@
 namespace control_loops {
 namespace drivetrain {
 
-DrivetrainLoop::DrivetrainLoop(
-    const DrivetrainConfig<double> &dt_config,
-    ::frc971::control_loops::DrivetrainQueue *my_drivetrain)
+DrivetrainLoop::DrivetrainLoop(const DrivetrainConfig<double> &dt_config,
+                               ::aos::EventLoop *event_loop,
+                               const ::std::string &name)
     : aos::controls::ControlLoop<::frc971::control_loops::DrivetrainQueue>(
-          my_drivetrain),
+          event_loop, name),
       dt_config_(dt_config),
       kf_(dt_config_.make_kf_drivetrain_loop()),
       dt_openloop_(dt_config_, &kf_),
diff --git a/frc971/control_loops/drivetrain/drivetrain.h b/frc971/control_loops/drivetrain/drivetrain.h
index 9396aed..a357eab 100644
--- a/frc971/control_loops/drivetrain/drivetrain.h
+++ b/frc971/control_loops/drivetrain/drivetrain.h
@@ -22,9 +22,8 @@
   // Constructs a control loop which can take a Drivetrain or defaults to the
   // drivetrain at frc971::control_loops::drivetrain
   explicit DrivetrainLoop(
-      const DrivetrainConfig<double> &dt_config,
-      ::frc971::control_loops::DrivetrainQueue *my_drivetrain =
-          &::frc971::control_loops::drivetrain_queue);
+      const DrivetrainConfig<double> &dt_config, ::aos::EventLoop *event_loop,
+      const ::std::string &name = ".frc971.control_loops.drivetrain_queue");
 
   int ControllerIndexFromGears();
 
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index bb5d5d9..5c1a8b4 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -103,11 +103,11 @@
   // TODO(aschuh) Do we want to test the clutch one too?
   DrivetrainSimulation()
       : drivetrain_plant_(new DrivetrainPlant(MakeDrivetrainPlant())),
-        my_drivetrain_queue_(".frc971.control_loops.drivetrain",
-                             ".frc971.control_loops.drivetrain.goal",
-                             ".frc971.control_loops.drivetrain.position",
-                             ".frc971.control_loops.drivetrain.output",
-                             ".frc971.control_loops.drivetrain.status"),
+        my_drivetrain_queue_(".frc971.control_loops.drivetrain_queue",
+                             ".frc971.control_loops.drivetrain_queue.goal",
+                             ".frc971.control_loops.drivetrain_queue.position",
+                             ".frc971.control_loops.drivetrain_queue.output",
+                             ".frc971.control_loops.drivetrain_queue.status"),
         gyro_reading_(::frc971::sensors::gyro_reading.name()) {
     Reinitialize();
     last_U_.setZero();
@@ -219,17 +219,18 @@
   // is no longer valid.
   ::frc971::control_loops::DrivetrainQueue my_drivetrain_queue_;
 
+  ::aos::ShmEventLoop event_loop_;
   // Create a loop and simulation plant.
   DrivetrainLoop drivetrain_motor_;
   DrivetrainSimulation drivetrain_motor_plant_;
 
   DrivetrainTest()
-      : my_drivetrain_queue_(".frc971.control_loops.drivetrain",
-                             ".frc971.control_loops.drivetrain.goal",
-                             ".frc971.control_loops.drivetrain.position",
-                             ".frc971.control_loops.drivetrain.output",
-                             ".frc971.control_loops.drivetrain.status"),
-        drivetrain_motor_(GetDrivetrainConfig(), &my_drivetrain_queue_),
+      : my_drivetrain_queue_(".frc971.control_loops.drivetrain_queue",
+                             ".frc971.control_loops.drivetrain_queue.goal",
+                             ".frc971.control_loops.drivetrain_queue.position",
+                             ".frc971.control_loops.drivetrain_queue.output",
+                             ".frc971.control_loops.drivetrain_queue.status"),
+        drivetrain_motor_(GetDrivetrainConfig(), &event_loop_),
         drivetrain_motor_plant_() {
     ::frc971::sensors::gyro_reading.Clear();
     set_battery_voltage(12.0);