Convert aos over to flatbuffers

Everything builds, and all the tests pass.  I suspect that some entries
are missing from the config files, but those will be found pretty
quickly on startup.

There is no logging or live introspection of queue messages.

Change-Id: I496ee01ed68f202c7851bed7e8786cee30df29f5
diff --git a/y2017/vision/target_receiver.cc b/y2017/vision/target_receiver.cc
index 6b86972..e96fba9 100644
--- a/y2017/vision/target_receiver.cc
+++ b/y2017/vision/target_receiver.cc
@@ -1,13 +1,12 @@
 #include <netdb.h>
 
-#include "aos/events/shm-event-loop.h"
+#include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
 #include "aos/logging/logging.h"
-#include "aos/logging/queue_logging.h"
 #include "aos/time/time.h"
 #include "aos/vision/events/udp.h"
 #include "y2017/vision/target_finder.h"
-#include "y2017/vision/vision.q.h"
+#include "y2017/vision/vision_generated.h"
 #include "y2017/vision/vision_result.pb.h"
 
 namespace y2017 {
@@ -20,11 +19,13 @@
   char raw_data[65507];
   // TODO(parker): Have this pull in a config from somewhere.
   TargetFinder finder;
-  ::aos::ShmEventLoop event_loop;
+  aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+      aos::configuration::ReadConfig("config.json");
+
+  ::aos::ShmEventLoop event_loop(&config.message());
 
   ::aos::Sender<::y2017::vision::VisionStatus> vision_status_sender =
-      event_loop.MakeSender<::y2017::vision::VisionStatus>(
-          ".y2017.vision.vision_status");
+      event_loop.MakeSender<::y2017::vision::VisionStatus>("/vision");
 
   while (true) {
     // TODO(austin): Don't malloc.
@@ -42,22 +43,27 @@
       continue;
     }
 
-    auto new_vision_status = vision_status_sender.MakeMessage();
-    new_vision_status->image_valid = target.has_target();
-    if (new_vision_status->image_valid) {
-      new_vision_status->target_time =
+    auto builder = vision_status_sender.MakeBuilder();
+    VisionStatus::Builder vision_status_builder =
+        builder.MakeBuilder<VisionStatus>();
+    vision_status_builder.add_image_valid(target.has_target());
+    if (target.has_target()) {
+      vision_status_builder.add_target_time (
           std::chrono::duration_cast<std::chrono::nanoseconds>(
               target_time.time_since_epoch())
-              .count();
+              .count());
 
+      double distance = 0.0;
+      double angle = 0.0;
       finder.GetAngleDist(
           aos::vision::Vector<2>(target.target().x(), target.target().y()),
           /* TODO: Insert down estimate here in radians: */ 0.0,
-          &new_vision_status->distance, &new_vision_status->angle);
+          &distance, &angle);
+      vision_status_builder.add_distance(distance);
+      vision_status_builder.add_angle(angle);
     }
 
-    AOS_LOG_STRUCT(DEBUG, "vision", *new_vision_status);
-    if (!new_vision_status.Send()) {
+    if (!builder.Send(vision_status_builder.Finish())) {
       AOS_LOG(ERROR, "Failed to send vision information\n");
     }
   }