Add per channel storage durations

This lets us save images for less time than everything else, since they
are the main driver of queue memory usage.

Change-Id: I677791e20af6aedb0288d09cf5963b4dde30ecce
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/logging/log_reader.cc b/aos/events/logging/log_reader.cc
index 874fe43..e3dd904 100644
--- a/aos/events/logging/log_reader.cc
+++ b/aos/events/logging/log_reader.cc
@@ -98,6 +98,10 @@
                                          std::string_view new_name,
                                          std::string_view new_type,
                                          flatbuffers::FlatBufferBuilder *fbb) {
+  CHECK_EQ(Channel::MiniReflectTypeTable()->num_elems, 14u)
+      << ": Merging logic needs to be updated when the number of channel "
+         "fields changes.";
+
   flatbuffers::Offset<flatbuffers::String> name_offset =
       fbb->CreateSharedString(new_name.empty() ? c->name()->string_view()
                                                : new_name);
@@ -148,6 +152,9 @@
   if (c->has_num_readers()) {
     channel_builder.add_num_readers(c->num_readers());
   }
+  if (c->has_channel_storage_duration()) {
+    channel_builder.add_channel_storage_duration(c->channel_storage_duration());
+  }
   return channel_builder.Finish();
 }
 
@@ -1475,7 +1482,7 @@
   fbb.ForceDefaults(true);
   std::vector<flatbuffers::Offset<Channel>> channel_offsets;
 
-  CHECK_EQ(Channel::MiniReflectTypeTable()->num_elems, 13u)
+  CHECK_EQ(Channel::MiniReflectTypeTable()->num_elems, 14u)
       << ": Merging logic needs to be updated when the number of channel "
          "fields changes.";
 
@@ -1547,6 +1554,10 @@
               if (c->has_frequency()) {
                 channel_builder.add_frequency(c->frequency());
               }
+              if (c->has_channel_storage_duration()) {
+                channel_builder.add_channel_storage_duration(
+                    c->channel_storage_duration());
+              }
               channel_offsets.emplace_back(channel_builder.Finish());
             }
             break;