Remove pdp_values queue.

Switch to event loops (kinda)

Change-Id: Ia1334871715321f99f12015a771414a236221cb6
diff --git a/frc971/wpilib/BUILD b/frc971/wpilib/BUILD
index 889c32e..2ef83ce 100644
--- a/frc971/wpilib/BUILD
+++ b/frc971/wpilib/BUILD
@@ -207,6 +207,7 @@
     deps = [
         ":pdp_values",
         "//aos:init",
+        "//aos/events:event-loop",
         "//aos/logging:queue_logging",
         "//aos/util:phased_loop",
         "//third_party:wpilib",
diff --git a/frc971/wpilib/pdp_fetcher.cc b/frc971/wpilib/pdp_fetcher.cc
index 81f9fcf..eff53e7 100644
--- a/frc971/wpilib/pdp_fetcher.cc
+++ b/frc971/wpilib/pdp_fetcher.cc
@@ -2,8 +2,9 @@
 
 #include <chrono>
 
-#include "aos/logging/queue_logging.h"
+#include "aos/events/event-loop.h"
 #include "aos/init.h"
+#include "aos/logging/queue_logging.h"
 #include "aos/util/phased_loop.h"
 #include "frc971/wpilib/ahal/PowerDistributionPanel.h"
 #include "frc971/wpilib/pdp_values.q.h"
@@ -19,6 +20,7 @@
   ::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(20),
                                       ::std::chrono::milliseconds(4));
 
+  // TODO(austin): Event loop instead of while loop.
   while (true) {
     {
       const int iterations = phased_loop.SleepUntilNext();
@@ -26,7 +28,7 @@
         LOG(DEBUG, "PDPFetcher skipped %d iterations\n", iterations - 1);
       }
     }
-    auto message = pdp_values.MakeMessage();
+    auto message = pdp_values_sender_.MakeMessage();
     message->voltage = pdp->GetVoltage();
     message->temperature = pdp->GetTemperature();
     message->power = pdp->GetTotalPower();
diff --git a/frc971/wpilib/pdp_fetcher.h b/frc971/wpilib/pdp_fetcher.h
index 513f5fc..db783f6 100644
--- a/frc971/wpilib/pdp_fetcher.h
+++ b/frc971/wpilib/pdp_fetcher.h
@@ -4,6 +4,9 @@
 #include <atomic>
 #include <memory>
 
+#include "aos/events/event-loop.h"
+#include "frc971/wpilib/pdp_values.q.h"
+
 namespace frc971 {
 namespace wpilib {
 
@@ -11,12 +14,21 @@
 // separate thread.
 class PDPFetcher {
  public:
+  PDPFetcher(::aos::EventLoop *event_loop)
+      : event_loop_(event_loop),
+        pdp_values_sender_(event_loop_->MakeSender<::frc971::PDPValues>(
+            ".frc971.pdp_values")) {}
+
   void Quit() { run_ = false; }
 
   // To be called by a ::std::thread.
   void operator()();
 
  private:
+  ::aos::EventLoop *event_loop_;
+
+  ::aos::Sender<::frc971::PDPValues> pdp_values_sender_;
+
   ::std::atomic<bool> run_{true};
 };
 
diff --git a/frc971/wpilib/pdp_values.q b/frc971/wpilib/pdp_values.q
index bda1c49..4c326ab 100644
--- a/frc971/wpilib/pdp_values.q
+++ b/frc971/wpilib/pdp_values.q
@@ -1,11 +1,10 @@
 package frc971;
 
 // Values retrieved from the PDP.
+// Published on ".frc971.pdp_values"
 message PDPValues {
   double voltage;
   double temperature;
   double power;
   double[16] currents;
 };
-
-queue PDPValues pdp_values;
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index 7807ebd..3bc5e39 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -623,7 +623,7 @@
     ::frc971::wpilib::JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
     SensorReader reader(&event_loop);
 
diff --git a/y2014_bot3/wpilib_interface.cc b/y2014_bot3/wpilib_interface.cc
index 397fafe..8d7ddb2 100644
--- a/y2014_bot3/wpilib_interface.cc
+++ b/y2014_bot3/wpilib_interface.cc
@@ -279,7 +279,7 @@
     JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
 
     // TODO(comran): IO ports are placeholders at the moment, so match them to
diff --git a/y2016/wpilib_interface.cc b/y2016/wpilib_interface.cc
index a6ea697..36f8641 100644
--- a/y2016/wpilib_interface.cc
+++ b/y2016/wpilib_interface.cc
@@ -578,7 +578,7 @@
     ::frc971::wpilib::JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
     SensorReader reader(&event_loop);
 
diff --git a/y2017/wpilib_interface.cc b/y2017/wpilib_interface.cc
index 49ff30c..5dbf29d 100644
--- a/y2017/wpilib_interface.cc
+++ b/y2017/wpilib_interface.cc
@@ -446,7 +446,7 @@
     ::frc971::wpilib::JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
     SensorReader reader(&event_loop);
 
diff --git a/y2018/wpilib_interface.cc b/y2018/wpilib_interface.cc
index 6b70ef0..154f9d0 100644
--- a/y2018/wpilib_interface.cc
+++ b/y2018/wpilib_interface.cc
@@ -655,7 +655,7 @@
     ::frc971::wpilib::JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
 
     SensorReader reader(&event_loop);
diff --git a/y2019/wpilib_interface.cc b/y2019/wpilib_interface.cc
index b910a7f..e08b4b1 100644
--- a/y2019/wpilib_interface.cc
+++ b/y2019/wpilib_interface.cc
@@ -685,7 +685,7 @@
     ::frc971::wpilib::JoystickSender joystick_sender(&event_loop);
     ::std::thread joystick_thread(::std::ref(joystick_sender));
 
-    ::frc971::wpilib::PDPFetcher pdp_fetcher;
+    ::frc971::wpilib::PDPFetcher pdp_fetcher(&event_loop);
     ::std::thread pdp_fetcher_thread(::std::ref(pdp_fetcher));
     SensorReader reader(&event_loop);