Convert ControlLoop over to using EventLoop

Next step is to pass in the event loop and flip over to using it in
tests and at runtime.

Change-Id: Ia3b8f099e4eacc0ffa8fbfe00d651f3684a8c783
diff --git a/aos/events/BUILD b/aos/events/BUILD
index ad888f6..a5e83a9 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -1,74 +1,77 @@
-
 cc_library(
-  name = "raw-event-loop",
-  hdrs = ["raw-event-loop.h"],
-  deps = [
-    "//aos/time:time",
-    "//aos:queues",
-  ],
+    name = "raw-event-loop",
+    hdrs = ["raw-event-loop.h"],
+    deps = [
+        "//aos:queues",
+        "//aos/time",
+    ],
 )
 
 cc_library(
-  name = "event-loop",
-  hdrs = ["event-loop.h", "raw-event-loop.h"],
-  srcs = ["event-loop-tmpl.h"],
-  deps = [
-    ":raw-event-loop",
-    "//aos/time:time",
-    "//aos:queues",
-  ],
+    name = "event-loop",
+    srcs = ["event-loop-tmpl.h"],
+    hdrs = [
+        "event-loop.h",
+        "raw-event-loop.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":raw-event-loop",
+        "//aos:queues",
+        "//aos/time",
+    ],
 )
 
 cc_library(
-  name = "shm-event-loop",
-  hdrs = ["shm-event-loop.h"],
-  srcs = ["shm-event-loop.cc"],
-  deps = [
-    ":event-loop",
-    "//aos:queues",
-    "//aos/logging:logging",
-  ],
+    name = "shm-event-loop",
+    srcs = ["shm-event-loop.cc"],
+    hdrs = ["shm-event-loop.h"],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":event-loop",
+        "//aos:queues",
+        "//aos/logging",
+    ],
 )
 
 cc_test(
-  name = "shm-event-loop_test",
-  srcs = ["shm-event-loop_test.cc"],
-  deps = [
-    ":event-loop_param_test",
-    ":shm-event-loop",
-    "//aos/testing:test_shm",
-  ],
+    name = "shm-event-loop_test",
+    srcs = ["shm-event-loop_test.cc"],
+    deps = [
+        ":event-loop_param_test",
+        ":shm-event-loop",
+        "//aos/testing:test_shm",
+    ],
 )
 
 cc_library(
-  name = "event-loop_param_test",
-  srcs = ["event-loop_param_test.cc"],
-  hdrs = ["event-loop_param_test.h"],
-  deps = [
-    "event-loop",
-    "//aos/testing:googletest",
-  ],
-  testonly = True,
+    name = "event-loop_param_test",
+    testonly = True,
+    srcs = ["event-loop_param_test.cc"],
+    hdrs = ["event-loop_param_test.h"],
+    deps = [
+        "event-loop",
+        "//aos/testing:googletest",
+    ],
 )
 
 cc_test(
-  name = "simulated-event-loop_test",
-  srcs = ["simulated-event-loop_test.cc"],
-  deps = [
-    "//aos/testing:googletest",
-    ":event-loop_param_test",
-    ":simulated-event-loop",
-  ],
-  testonly = True,
+    name = "simulated-event-loop_test",
+    testonly = True,
+    srcs = ["simulated-event-loop_test.cc"],
+    deps = [
+        ":event-loop_param_test",
+        ":simulated-event-loop",
+        "//aos/testing:googletest",
+    ],
 )
 
 cc_library(
-  name = "simulated-event-loop",
-  hdrs = ["simulated-event-loop.h"],
-  srcs = ["simulated-event-loop.cc"],
-  deps = [
-    ":event-loop",
-    "//aos:queues",
-  ],
+    name = "simulated-event-loop",
+    srcs = ["simulated-event-loop.cc"],
+    hdrs = ["simulated-event-loop.h"],
+    deps = [
+        ":event-loop",
+        "//aos:queues",
+    ],
 )
-
diff --git a/aos/events/event-loop.h b/aos/events/event-loop.h
index 57ff49b..0b336c3 100644
--- a/aos/events/event-loop.h
+++ b/aos/events/event-loop.h
@@ -107,6 +107,7 @@
   //
   // This will watch messages sent to path.
   // Note that T needs to match both send and recv side.
+  // TODO(parker): Need to support ::std::bind.  For now, use lambdas.
   template <typename Watch>
   void MakeWatcher(const std::string &path, Watch &&w);
 
diff --git a/aos/events/shm-event-loop.cc b/aos/events/shm-event-loop.cc
index 6231df2..b05aa84 100644
--- a/aos/events/shm-event-loop.cc
+++ b/aos/events/shm-event-loop.cc
@@ -218,6 +218,8 @@
 void ShmEventLoop::Run() {
   set_is_running(true);
   for (const auto &run : on_run_) run();
+  // TODO(austin): epoll event loop in main thread (if needed), and async safe
+  // quit handler.
   thread_state_->Run();
 }