Reduce users of rollers_queue

The last user is in the output handler, and that'll take an event loop
rewrite.

Change-Id: I0e79520f25981b879fb02ebf21ebfaad1699d9f8
diff --git a/y2014_bot3/control_loops/rollers/rollers.q b/y2014_bot3/control_loops/rollers/rollers.q
index e36d43e..a6a6d0e 100644
--- a/y2014_bot3/control_loops/rollers/rollers.q
+++ b/y2014_bot3/control_loops/rollers/rollers.q
@@ -3,6 +3,7 @@
 import "aos/controls/control_loops.q";
 import "frc971/control_loops/control_loops.q";
 
+// on ".y2014_bot3.control_loops.rollers_queue"
 queue_group RollersQueue {
   implements aos.control_loops.ControlLoop;
 
diff --git a/y2014_bot3/joystick_reader.cc b/y2014_bot3/joystick_reader.cc
index a9c369c..847adf7 100644
--- a/y2014_bot3/joystick_reader.cc
+++ b/y2014_bot3/joystick_reader.cc
@@ -19,7 +19,6 @@
 #include "y2014_bot3/control_loops/rollers/rollers.q.h"
 
 using ::frc971::control_loops::drivetrain_queue;
-using ::y2014_bot3::control_loops::rollers_queue;
 using ::frc971::sensors::gyro_reading;
 
 using ::aos::input::driver_station::ButtonLocation;
@@ -50,6 +49,10 @@
  public:
   Reader(::aos::EventLoop *event_loop)
       : ::aos::input::JoystickInput(event_loop),
+        rollers_goal_sender_(
+            event_loop
+                ->MakeSender<::y2014_bot3::control_loops::RollersQueue::Goal>(
+                    ".y2014_bot3.control_loops.rollers_queue.goal")),
         autonomous_action_factory_(
             ::frc971::autonomous::BaseAutonomousActor::MakeFactory(
                 event_loop)) {
@@ -89,7 +92,7 @@
     }
 
     // Rollers.
-    auto rollers_goal = control_loops::rollers_queue.goal.MakeMessage();
+    auto rollers_goal = rollers_goal_sender_.MakeMessage();
     rollers_goal->Zero();
     if (data.IsPressed(kFrontRollersIn)) {
       rollers_goal->intake = 1;
@@ -129,6 +132,8 @@
   ::aos::common::actions::ActionQueue action_queue_;
 
   ::std::unique_ptr<DrivetrainInputReader> drivetrain_input_reader_;
+  ::aos::Sender<::y2014_bot3::control_loops::RollersQueue::Goal>
+      rollers_goal_sender_;
 
   ::frc971::autonomous::BaseAutonomousActor::Factory autonomous_action_factory_;
 };
diff --git a/y2014_bot3/wpilib_interface.cc b/y2014_bot3/wpilib_interface.cc
index 8d7ddb2..bd5ae3d 100644
--- a/y2014_bot3/wpilib_interface.cc
+++ b/y2014_bot3/wpilib_interface.cc
@@ -78,7 +78,11 @@
 class SensorReader : public ::frc971::wpilib::SensorReader {
  public:
   SensorReader(::aos::EventLoop *event_loop)
-      : ::frc971::wpilib::SensorReader(event_loop) {}
+      : ::frc971::wpilib::SensorReader(event_loop),
+        rollers_position_sender_(
+            event_loop->MakeSender<
+                ::y2014_bot3::control_loops::RollersQueue::Position>(
+                ".y2014_bot3.control_loops.rollers_queue.position")) {}
 
   void RunIteration() {
     // Drivetrain
@@ -98,10 +102,14 @@
 
     // Rollers
     {
-      auto rollers_message = rollers_queue.position.MakeMessage();
+      auto rollers_message = rollers_position_sender_.MakeMessage();
       rollers_message.Send();
     }
   }
+
+ private:
+  ::aos::Sender<::y2014_bot3::control_loops::RollersQueue::Position>
+      rollers_position_sender_;
 };
 
 // Writes out our pneumatic outputs.