Add a can_logger for the orin

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I3e3f0d5acacafb4f4d26e2c0ba50c03ace9716dc
diff --git a/frc971/can_logger/BUILD b/frc971/can_logger/BUILD
index f568aa9..7c4a319 100644
--- a/frc971/can_logger/BUILD
+++ b/frc971/can_logger/BUILD
@@ -21,9 +21,10 @@
         "can_logger.cc",
         "can_logger.h",
     ],
+    visibility = ["//visibility:public"],
     deps = [
         ":can_logging_fbs",
-        "//aos/events:event_loop",
+        "//aos/events:shm_event_loop",
         "//aos/scoped:scoped_fd",
         "@com_github_google_glog//:glog",
     ],
diff --git a/frc971/can_logger/can_logger.cc b/frc971/can_logger/can_logger.cc
index 3f71b44..7a6c0fe 100644
--- a/frc971/can_logger/can_logger.cc
+++ b/frc971/can_logger/can_logger.cc
@@ -3,10 +3,11 @@
 namespace frc971 {
 namespace can_logger {
 
-CanLogger::CanLogger(aos::EventLoop *event_loop,
+CanLogger::CanLogger(aos::ShmEventLoop *event_loop,
+                     std::string_view channel_name,
                      std::string_view interface_name)
     : fd_(socket(PF_CAN, SOCK_RAW | SOCK_NONBLOCK, CAN_RAW)),
-      frames_sender_(event_loop->MakeSender<CanFrame>("/can")) {
+      frames_sender_(event_loop->MakeSender<CanFrame>(channel_name)) {
   struct ifreq ifr;
   strcpy(ifr.ifr_name, interface_name.data());
   PCHECK(ioctl(fd_.get(), SIOCGIFINDEX, &ifr) == 0)
@@ -32,9 +33,7 @@
   CHECK_EQ(opt_size, sizeof(recieve_buffer_size));
   VLOG(0) << "CAN recieve bufffer is " << recieve_buffer_size << " bytes large";
 
-  aos::TimerHandler *timer_handler = event_loop->AddTimer([this]() { Poll(); });
-  timer_handler->set_name("CAN logging Loop");
-  timer_handler->Schedule(event_loop->monotonic_now(), kPollPeriod);
+  event_loop->epoll()->OnReadable(fd_, [this]() { Poll(); });
 }
 
 void CanLogger::Poll() {
diff --git a/frc971/can_logger/can_logger.h b/frc971/can_logger/can_logger.h
index cf37841..432bac8 100644
--- a/frc971/can_logger/can_logger.h
+++ b/frc971/can_logger/can_logger.h
@@ -11,7 +11,7 @@
 
 #include <chrono>
 
-#include "aos/events/event_loop.h"
+#include "aos/events/shm_event_loop.h"
 #include "aos/realtime.h"
 #include "aos/scoped/scoped_fd.h"
 #include "frc971/can_logger/can_logging_generated.h"
@@ -27,7 +27,8 @@
   static constexpr std::chrono::milliseconds kPollPeriod =
       std::chrono::milliseconds(100);
 
-  CanLogger(aos::EventLoop *event_loop,
+  CanLogger(aos::ShmEventLoop *event_loop,
+            std::string_view channel_name = "/can",
             std::string_view interface_name = "can0");
 
   CanLogger(const CanLogger &) = delete;
diff --git a/frc971/can_logger/can_logger_main.cc b/frc971/can_logger/can_logger_main.cc
index 42c7162..b8f3f3f 100644
--- a/frc971/can_logger/can_logger_main.cc
+++ b/frc971/can_logger/can_logger_main.cc
@@ -10,7 +10,7 @@
 
   ::aos::ShmEventLoop event_loop(&config.message());
 
-  frc971::can_logger::CanLogger can_logger(&event_loop, "can0");
+  frc971::can_logger::CanLogger can_logger(&event_loop, "/can", "can0");
 
   event_loop.Run();