Rename laptop to logger

Now that we have a logger pi, let's use it!

Change-Id: I8dae48b3a06627e6a98f6dd476c2ff47013ea41f
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2020/BUILD b/y2020/BUILD
index 195e2f4..61987c9 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -162,7 +162,7 @@
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
-        ":config_laptop",
+        ":config_logger",
         ":config_pi1",
         ":config_pi2",
         ":config_pi3",
@@ -204,8 +204,8 @@
 ]
 
 aos_config(
-    name = "config_laptop",
-    src = "y2020_laptop.json",
+    name = "config_logger",
+    src = "y2020_logger.json",
     flatbuffers = [
         "//aos/network:message_bridge_client_fbs",
         "//aos/network:message_bridge_server_fbs",
diff --git a/y2020/control_loops/drivetrain/BUILD b/y2020/control_loops/drivetrain/BUILD
index b12cdc3..17a2959 100644
--- a/y2020/control_loops/drivetrain/BUILD
+++ b/y2020/control_loops/drivetrain/BUILD
@@ -186,6 +186,7 @@
         "//aos/events/logging:log_writer",
         "//aos/testing:googletest",
         "//frc971/control_loops/drivetrain:drivetrain_lib",
+        "//frc971/control_loops/drivetrain:trajectory_schema",
         "@com_github_gflags_gflags//:gflags",
         "@com_github_google_glog//:glog",
     ],
diff --git a/y2020/control_loops/drivetrain/drivetrain_replay_test.cc b/y2020/control_loops/drivetrain/drivetrain_replay_test.cc
index def3cd3..297cf5b 100644
--- a/y2020/control_loops/drivetrain/drivetrain_replay_test.cc
+++ b/y2020/control_loops/drivetrain/drivetrain_replay_test.cc
@@ -11,13 +11,14 @@
 #include "gtest/gtest.h"
 
 #include "aos/configuration.h"
-#include "aos/events/logging/log_writer.h"
 #include "aos/events/logging/log_reader.h"
+#include "aos/events/logging/log_writer.h"
 #include "aos/events/simulated_event_loop.h"
 #include "aos/init.h"
 #include "aos/json_to_flatbuffer.h"
 #include "aos/network/team_number.h"
 #include "frc971/control_loops/drivetrain/drivetrain.h"
+#include "frc971/control_loops/drivetrain/trajectory_schema.h"
 #include "gflags/gflags.h"
 #include "y2020/control_loops/drivetrain/drivetrain_base.h"
 
@@ -36,9 +37,7 @@
 class DrivetrainReplayTest : public ::testing::Test {
  public:
   DrivetrainReplayTest()
-      : config_(aos::configuration::ReadConfig(FLAGS_config)),
-        reader_(aos::logger::SortParts(aos::logger::FindLogs(FLAGS_logfile)),
-                &config_.message()) {
+      : reader_(aos::logger::SortParts(aos::logger::FindLogs(FLAGS_logfile))) {
     aos::network::OverrideTeamNumber(971);
 
     // TODO(james): Actually enforce not sending on the same buses as the
@@ -47,12 +46,38 @@
                               "frc971.control_loops.drivetrain.Status");
     reader_.RemapLoggedChannel("/drivetrain",
                               "frc971.control_loops.drivetrain.Output");
-    reader_.Register();
+
+    // Patch in any new channels.
+    updated_config_ = aos::configuration::MergeWithConfig(
+        reader_.configuration(),
+        aos::configuration::AddSchema(
+            R"channel({
+  "channels": [
+    {
+      "name": "/drivetrain",
+      "type": "frc971.control_loops.drivetrain.fb.Trajectory",
+      "source_node": "roborio",
+      "max_size": 600000,
+      "frequency": 4,
+      "num_senders": 2,
+      "read_method": "PIN",
+      "num_readers": 10,
+      "logger": "NOT_LOGGED"
+    }
+  ]
+})channel",
+            {aos::FlatbufferVector<
+                reflection::Schema>(aos::FlatbufferSpan<reflection::Schema>(
+                frc971::control_loops::drivetrain::fb::TrajectorySchema()))}));
+
+    factory_ = std::make_unique<aos::SimulatedEventLoopFactory>(
+        &updated_config_.message());
+
+    reader_.Register(factory_.get());
 
     roborio_ = aos::configuration::GetNode(reader_.configuration(), "roborio");
 
-    drivetrain_event_loop_ =
-        reader_.event_loop_factory()->MakeEventLoop("drivetrain", roborio_);
+    drivetrain_event_loop_ = factory_->MakeEventLoop("drivetrain", roborio_);
     drivetrain_event_loop_->SkipTimingReport();
 
     frc971::control_loops::drivetrain::DrivetrainConfig<double> config =
@@ -65,17 +90,25 @@
         std::make_unique<frc971::control_loops::drivetrain::DrivetrainLoop>(
             config, drivetrain_event_loop_.get(), localizer_.get());
 
-    test_event_loop_ =
-        reader_.event_loop_factory()->MakeEventLoop("drivetrain_test", roborio_);
+    test_event_loop_ = factory_->MakeEventLoop("drivetrain_test", roborio_);
 
-    status_fetcher_ = test_event_loop_->MakeFetcher<
-        frc971::control_loops::drivetrain::Status>("/drivetrain");
+    status_fetcher_ =
+        test_event_loop_
+            ->MakeFetcher<frc971::control_loops::drivetrain::Status>(
+                "/drivetrain");
   }
 
-  const aos::FlatbufferDetachedBuffer<aos::Configuration> config_;
+  ~DrivetrainReplayTest() {
+    reader_.Deregister();
+  }
+
   aos::logger::LogReader reader_;
   const aos::Node *roborio_;
 
+  aos::FlatbufferDetachedBuffer<aos::Configuration> updated_config_ =
+      aos::FlatbufferDetachedBuffer<aos::Configuration>::Empty();
+  std::unique_ptr<aos::SimulatedEventLoopFactory> factory_;
+
   std::unique_ptr<aos::EventLoop> drivetrain_event_loop_;
   std::unique_ptr<frc971::control_loops::drivetrain::DeadReckonEkf> localizer_;
   std::unique_ptr<frc971::control_loops::drivetrain::DrivetrainLoop>
diff --git a/y2020/control_loops/superstructure/superstructure_lib_test.cc b/y2020/control_loops/superstructure/superstructure_lib_test.cc
index b34273c..660d9bb 100644
--- a/y2020/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2020/control_loops/superstructure/superstructure_lib_test.cc
@@ -1139,10 +1139,8 @@
 class SuperstructureReplayTest : public ::testing::Test {
  public:
   SuperstructureReplayTest()
-      : config_(aos::configuration::ReadConfig(FLAGS_config)),
-        reader_(
-            aos::logger::SortParts(aos::logger::FindLogs(FLAGS_replay_logfile)),
-            &config_.message()) {
+      : reader_(aos::logger::SortParts(
+            aos::logger::FindLogs(FLAGS_replay_logfile))) {
     aos::network::OverrideTeamNumber(971);
 
     reader_.RemapLoggedChannel("/superstructure",
@@ -1172,7 +1170,6 @@
     }
   }
 
-  const aos::FlatbufferDetachedBuffer<aos::Configuration> config_;
   aos::logger::LogReader reader_;
   const aos::Node *roborio_;
 
diff --git a/y2020/vision/rootfs/change_hostname.sh b/y2020/vision/rootfs/change_hostname.sh
index f36c439..c9b0b35 100755
--- a/y2020/vision/rootfs/change_hostname.sh
+++ b/y2020/vision/rootfs/change_hostname.sh
@@ -38,9 +38,9 @@
   echo -e "${IP_BASE}.2\troborio" >> /etc/hosts
 fi
 
-if grep '^10\.[0-9]*\.[0-9]*\.13\s*laptop$' /etc/hosts >/dev/null;
+if grep '^10\.[0-9]*\.[0-9]*\.13\s*logger$' /etc/hosts >/dev/null;
 then
-  sed -i "s/^10\.[0-9]*\.[0-9]*\(\.13\s*laptop\)$/${IP_BASE}\1/" /etc/hosts
+  sed -i "s/^10\.[0-9]*\.[0-9]*\(\.13\s*logger\)$/${IP_BASE}\1/" /etc/hosts
 else
-  echo -e "${IP_BASE}.13\tlaptop" >> /etc/hosts
+  echo -e "${IP_BASE}.13\tlogger" >> /etc/hosts
 fi
diff --git a/y2020/y2020.json b/y2020/y2020.json
index 70e51b0..5e736ba 100644
--- a/y2020/y2020.json
+++ b/y2020/y2020.json
@@ -18,6 +18,6 @@
     "y2020_pi3.json",
     "y2020_pi4.json",
     "y2020_pi5.json",
-    "y2020_laptop.json"
+    "y2020_logger.json"
   ]
 }
diff --git a/y2020/y2020_laptop.json b/y2020/y2020_logger.json
similarity index 78%
rename from y2020/y2020_laptop.json
rename to y2020/y2020_logger.json
index 59aa47c..670cf99 100644
--- a/y2020/y2020_laptop.json
+++ b/y2020/y2020_logger.json
@@ -7,11 +7,11 @@
       "source_node": "roborio",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 2,
           "timestamp_logger": "LOCAL_LOGGER",
           "time_to_live": 10000000
@@ -25,11 +25,11 @@
       "source_node": "roborio",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000,
           "timestamp_logger" : "LOCAL_AND_REMOTE_LOGGER",
@@ -44,11 +44,11 @@
       "source_node": "roborio",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 2,
           "time_to_live": 50000000
         }
@@ -61,11 +61,11 @@
       "source_node": "pi1",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -77,11 +77,11 @@
       "source_node": "pi2",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -93,11 +93,11 @@
       "source_node": "pi3",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -109,11 +109,11 @@
       "source_node": "pi4",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -125,51 +125,66 @@
       "source_node": "pi5",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
       ]
     },
     {
-      "name": "/laptop/aos",
+      "name": "/logger/aos",
       "type": "aos.timing.Report",
-      "source_node": "laptop",
+      "source_node": "logger",
       "frequency": 50,
       "num_senders": 20,
       "max_size": 4096
     },
     {
-      "name": "/laptop/aos",
+      "name": "/logger/aos",
       "type": "aos.logging.LogMessageFbs",
-      "source_node": "laptop",
+      "source_node": "logger",
       "frequency": 400,
       "num_senders": 20
     },
     {
-      "name": "/laptop/aos",
+      "name": "/logger/aos",
       "type": "aos.message_bridge.ServerStatistics",
-      "source_node": "laptop",
+      "source_node": "logger",
       "frequency": 10,
       "num_senders": 2
     },
     {
-      "name": "/laptop/aos",
+      "name": "/logger/aos",
       "type": "aos.message_bridge.ClientStatistics",
-      "source_node": "laptop",
+      "source_node": "logger",
       "frequency": 10,
       "num_senders": 2
     },
     {
-      "name": "/laptop/aos",
+      "name": "/logger/aos",
+      "type": "aos.starter.Status",
+      "source_node": "logger",
+      "frequency": 50,
+      "num_senders": 20
+    },
+    {
+      "name": "/logger/aos",
+      "type": "aos.starter.StarterRpc",
+      "source_node": "logger",
+      "frequency": 10,
+      "max_size": 72,
+      "num_senders": 2
+    },
+    {
+      "name": "/logger/aos",
       "type": "aos.message_bridge.Timestamp",
       "logger_nodes": ["roborio"],
       "logger": "LOCAL_AND_REMOTE_LOGGER",
-      "source_node": "laptop",
+      "source_node": "logger",
       "frequency": 15,
       "num_senders": 2,
       "max_size": 400,
@@ -180,7 +195,7 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         },
         {
@@ -189,7 +204,7 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         },
         {
@@ -198,7 +213,7 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         },
         {
@@ -207,7 +222,7 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         },
         {
@@ -216,7 +231,7 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         },
         {
@@ -225,60 +240,60 @@
           "time_to_live": 5000000,
           "timestamp_logger": "LOCAL_AND_REMOTE_LOGGER",
           "timestamp_logger_nodes": [
-            "laptop"
+            "logger"
           ]
         }
       ]
     },
     {
-      "name": "/laptop/aos/remote_timestamps/roborio/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/roborio/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
       "max_size": 200
     },
     {
-      "name": "/laptop/aos/remote_timestamps/pi1/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/pi1/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
       "max_size": 200
     },
     {
-      "name": "/laptop/aos/remote_timestamps/pi2/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/pi2/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
       "max_size": 200
     },
     {
-      "name": "/laptop/aos/remote_timestamps/pi3/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/pi3/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
       "max_size": 200
     },
     {
-      "name": "/laptop/aos/remote_timestamps/pi4/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/pi4/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
       "max_size": 200
     },
     {
-      "name": "/laptop/aos/remote_timestamps/pi5/laptop/aos/aos-message_bridge-Timestamp",
+      "name": "/logger/aos/remote_timestamps/pi5/logger/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
-      "source_node": "laptop",
+      "source_node": "logger",
       "logger": "NOT_LOGGED",
       "frequency": 20,
       "num_senders": 2,
@@ -290,11 +305,11 @@
       "source_node": "pi1",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -306,11 +321,11 @@
       "source_node": "pi1",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -322,11 +337,11 @@
       "source_node": "pi2",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -338,11 +353,11 @@
       "source_node": "pi2",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -354,11 +369,11 @@
       "source_node": "pi3",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -370,11 +385,11 @@
       "source_node": "pi3",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -386,11 +401,11 @@
       "source_node": "pi4",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -402,11 +417,11 @@
       "source_node": "pi4",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -418,11 +433,11 @@
       "source_node": "pi5",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -434,11 +449,11 @@
       "source_node": "pi5",
       "logger": "LOCAL_AND_REMOTE_LOGGER",
       "logger_nodes": [
-        "laptop"
+        "logger"
       ],
       "destination_nodes": [
         {
-          "name": "laptop",
+          "name": "logger",
           "priority": 1,
           "time_to_live": 5000000
         }
@@ -449,18 +464,35 @@
     {
       "match": {
         "name": "/aos*",
-        "source_node": "laptop"
+        "source_node": "logger"
       },
       "rename": {
-        "name": "/laptop/aos"
+        "name": "/logger/aos"
       }
     }
   ],
+  "applications": [
+    {
+      "name": "message_bridge_client",
+      "executable_name": "message_bridge_client",
+      "nodes": [
+        "logger"
+      ]
+    },
+    {
+      "name": "message_bridge_server",
+      "executable_name": "message_bridge_server",
+      "nodes": [
+        "logger"
+      ]
+    }
+  ],
   "nodes": [
     {
-      "name": "laptop",
-      "hostname": "laptop",
+      "name": "logger",
+      "hostname": "logger",
       "hostnames": [
+        "pi-971-6",
         "ASchuh-T480s",
         "aschuh-3950x"
       ],
diff --git a/y2020/y2020_roborio.json b/y2020/y2020_roborio.json
index e7c54f2..a9c056e 100644
--- a/y2020/y2020_roborio.json
+++ b/y2020/y2020_roborio.json
@@ -59,7 +59,7 @@
       "num_senders": 2
     },
     {
-      "name": "/roborio/aos/remote_timestamps/laptop/roborio/aos/aos-message_bridge-Timestamp",
+      "name": "/roborio/aos/remote_timestamps/logger/roborio/aos/aos-message_bridge-Timestamp",
       "type": "aos.message_bridge.RemoteMessage",
       "frequency": 200,
       "logger": "NOT_LOGGED",