Send timing report when sending data in config validator

SkipTimingReport() is called by default in simulation_logger. We want
to send timing report while sending data on channels in
config_validator_lib so add flexibility for this.

Change-Id: I3193fad4725d67297175956311b79063d2771872
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/util/config_validator_lib.cc b/aos/util/config_validator_lib.cc
index 2bd660a..e388bb7 100644
--- a/aos/util/config_validator_lib.cc
+++ b/aos/util/config_validator_lib.cc
@@ -182,6 +182,8 @@
     if (!send_data_on_channels && (configuration::NodesCount(config) == 1u)) {
       continue;
     }
+    // Send timing report when we are sending data.
+    const bool do_skip_timing_report = !send_data_on_channels;
     for (const LoggerNodeSetValidation *logger_set :
          *validation_config->logging()->logger_sets()) {
       SCOPED_TRACE(aos::FlatbufferToJson(logger_set));
@@ -192,9 +194,11 @@
         for (const auto &node : *logger_set->loggers()) {
           logger_nodes.push_back(node->str());
         }
-        loggers = MakeLoggersForNodes(&factory, logger_nodes, log_path);
+        loggers = MakeLoggersForNodes(&factory, logger_nodes, log_path,
+                                      do_skip_timing_report);
       } else {
-        loggers = MakeLoggersForAllNodes(&factory, log_path);
+        loggers =
+            MakeLoggersForAllNodes(&factory, log_path, do_skip_timing_report);
       }
 
       std::vector<std::unique_ptr<EventLoop>> test_loops;
diff --git a/aos/util/simulation_logger.cc b/aos/util/simulation_logger.cc
index 24691ef..513fa65 100644
--- a/aos/util/simulation_logger.cc
+++ b/aos/util/simulation_logger.cc
@@ -4,13 +4,16 @@
 
 namespace aos::util {
 LoggerState::LoggerState(aos::SimulatedEventLoopFactory *factory,
-                         const aos::Node *node, std::string_view output_folder)
+                         const aos::Node *node, std::string_view output_folder,
+                         bool do_skip_timing_report)
     : event_loop_(factory->MakeEventLoop("logger", node)),
       namer_(std::make_unique<aos::logger::MultiNodeFilesLogNamer>(
           absl::StrCat(output_folder, "/", logger::MaybeNodeName(node), "/"),
           event_loop_.get())),
       logger_(std::make_unique<aos::logger::Logger>(event_loop_.get())) {
-  event_loop_->SkipTimingReport();
+  if (do_skip_timing_report) {
+    event_loop_->SkipTimingReport();
+  }
   event_loop_->SkipAosLog();
   event_loop_->OnRun([this]() { logger_->StartLogging(std::move(namer_)); });
 }
@@ -18,23 +21,24 @@
 std::vector<std::unique_ptr<LoggerState>> MakeLoggersForNodes(
     aos::SimulatedEventLoopFactory *factory,
     const std::vector<std::string> &nodes_to_log,
-    std::string_view output_folder) {
+    std::string_view output_folder, bool do_skip_timing_report) {
   std::vector<std::unique_ptr<LoggerState>> loggers;
   for (const std::string &node : nodes_to_log) {
     loggers.emplace_back(std::make_unique<LoggerState>(
         factory, aos::configuration::GetNode(factory->configuration(), node),
-        output_folder));
+        output_folder, do_skip_timing_report));
   }
   return loggers;
 }
 
 std::vector<std::unique_ptr<LoggerState>> MakeLoggersForAllNodes(
-    aos::SimulatedEventLoopFactory *factory, std::string_view output_folder) {
+    aos::SimulatedEventLoopFactory *factory, std::string_view output_folder,
+    bool do_skip_timing_report) {
   std::vector<std::unique_ptr<LoggerState>> loggers;
   for (const aos::Node *node :
        configuration::GetNodes(factory->configuration())) {
-    loggers.emplace_back(
-        std::make_unique<LoggerState>(factory, node, output_folder));
+    loggers.emplace_back(std::make_unique<LoggerState>(
+        factory, node, output_folder, do_skip_timing_report));
   }
   return loggers;
 }
diff --git a/aos/util/simulation_logger.h b/aos/util/simulation_logger.h
index f431b4c..af43d02 100644
--- a/aos/util/simulation_logger.h
+++ b/aos/util/simulation_logger.h
@@ -9,7 +9,8 @@
 class LoggerState {
  public:
   LoggerState(aos::SimulatedEventLoopFactory *factory, const aos::Node *node,
-              std::string_view output_folder);
+              std::string_view output_folder,
+              bool do_skip_timing_report = true);
 
  private:
   std::unique_ptr<aos::EventLoop> event_loop_;
@@ -23,11 +24,12 @@
 std::vector<std::unique_ptr<LoggerState>> MakeLoggersForNodes(
     aos::SimulatedEventLoopFactory *factory,
     const std::vector<std::string> &nodes_to_log,
-    std::string_view output_folder);
+    std::string_view output_folder, bool do_skip_timing_report = true);
 
 // Creates loggers for all of the nodes.
 std::vector<std::unique_ptr<LoggerState>> MakeLoggersForAllNodes(
-    aos::SimulatedEventLoopFactory *factory, std::string_view output_folder);
+    aos::SimulatedEventLoopFactory *factory, std::string_view output_folder,
+    bool do_skip_timing_report = true);
 
 }  // namespace aos::util
 #endif  // AOS_UTIL_SIMULATION_LOGGER_H_