Convert VisionStatus to event loops.

Change-Id: I8b34af5c98a876751651c78ccfad6c456c788274
diff --git a/y2016/actors/autonomous_actor.cc b/y2016/actors/autonomous_actor.cc
index a5621b3..55afeaf 100644
--- a/y2016/actors/autonomous_actor.cc
+++ b/y2016/actors/autonomous_actor.cc
@@ -49,7 +49,10 @@
     : frc971::autonomous::BaseAutonomousActor(
           event_loop, control_loops::drivetrain::GetDrivetrainConfig()),
       vision_align_actor_factory_(
-          actors::VisionAlignActor::MakeFactory(event_loop)) {}
+          actors::VisionAlignActor::MakeFactory(event_loop)),
+      vision_status_fetcher_(
+          event_loop->MakeFetcher<::y2016::vision::VisionStatus>(
+              ".y2016.vision.vision_status")) {}
 
 constexpr double kDoNotTurnCare = 2.0;
 
@@ -211,11 +214,11 @@
   while (end_time > monotonic_clock::now()) {
     if (ShouldCancel()) break;
 
-    ::y2016::vision::vision_status.FetchLatest();
-    if (::y2016::vision::vision_status.get()) {
-      vision_valid = (::y2016::vision::vision_status->left_image_valid &&
-                      ::y2016::vision::vision_status->right_image_valid);
-      last_angle = ::y2016::vision::vision_status->horizontal_angle;
+    vision_status_fetcher_.Fetch();
+    if (vision_status_fetcher_.get()) {
+      vision_valid = (vision_status_fetcher_->left_image_valid &&
+                      vision_status_fetcher_->right_image_valid);
+      last_angle = vision_status_fetcher_->horizontal_angle;
     }
 
     drivetrain_queue.status.FetchLatest();
diff --git a/y2016/actors/autonomous_actor.h b/y2016/actors/autonomous_actor.h
index a2dda27..d905a27 100644
--- a/y2016/actors/autonomous_actor.h
+++ b/y2016/actors/autonomous_actor.h
@@ -86,6 +86,8 @@
 
   actors::VisionAlignActor::Factory vision_align_actor_factory_;
   ::std::unique_ptr<::aos::common::actions::Action> vision_action_;
+
+  ::aos::Fetcher<::y2016::vision::VisionStatus> vision_status_fetcher_;
 };
 
 }  // namespace actors
diff --git a/y2016/actors/vision_align_actor.cc b/y2016/actors/vision_align_actor.cc
index 5aebb06..fba545e 100644
--- a/y2016/actors/vision_align_actor.cc
+++ b/y2016/actors/vision_align_actor.cc
@@ -24,7 +24,10 @@
 
 VisionAlignActor::VisionAlignActor(::aos::EventLoop *event_loop)
     : aos::common::actions::ActorBase<actors::VisionAlignActionQueueGroup>(
-          event_loop, ".y2016.actors.vision_align_action") {}
+          event_loop, ".y2016.actors.vision_align_action"),
+      vision_status_fetcher_(
+          event_loop->MakeFetcher<::y2016::vision::VisionStatus>(
+              ".y2016.vision.vision_status")) {}
 
 bool VisionAlignActor::RunAction(
     const actors::VisionAlignActionParams & /*params*/) {
@@ -42,10 +45,10 @@
     if (ShouldCancel()) {
       return true;
     }
-    if (!::y2016::vision::vision_status.FetchLatest()) {
+    if (!vision_status_fetcher_.Fetch()) {
       continue;
     }
-    const auto &vision_status = *::y2016::vision::vision_status;
+    const auto &vision_status = *vision_status_fetcher_;
 
     if (!vision_status.left_image_valid || !vision_status.right_image_valid) {
       continue;
diff --git a/y2016/actors/vision_align_actor.h b/y2016/actors/vision_align_actor.h
index 7fce07a..f92f507 100644
--- a/y2016/actors/vision_align_actor.h
+++ b/y2016/actors/vision_align_actor.h
@@ -3,11 +3,11 @@
 
 #include <memory>
 
-#include "aos/actions/actor.h"
 #include "aos/actions/actions.h"
+#include "aos/actions/actor.h"
 #include "frc971/control_loops/state_feedback_loop.h"
-
 #include "y2016/actors/vision_align_action.q.h"
+#include "y2016/vision/vision.q.h"
 
 namespace y2016 {
 namespace actors {
@@ -26,6 +26,9 @@
   }
 
   bool RunAction(const actors::VisionAlignActionParams &params) override;
+
+ private:
+  ::aos::Fetcher<::y2016::vision::VisionStatus> vision_status_fetcher_;
 };
 
 }  // namespace actors
diff --git a/y2016/vision/vision.q b/y2016/vision/vision.q
index da028fd..06deb1f 100644
--- a/y2016/vision/vision.q
+++ b/y2016/vision/vision.q
@@ -34,4 +34,3 @@
   double drivetrain_left_position;
   double drivetrain_right_position;
 };
-queue VisionStatus vision_status;