Store UUIDs as 16 bytes of data

This makes them much more efficient to write over shared memory to solve
the boot UUID logging problem when we add them.

Change-Id: Idf361d6b096bfa52cbc98f555c90bf1f6b90d3e0
diff --git a/aos/events/logging/log_writer.h b/aos/events/logging/log_writer.h
index 4c7d39f..eb08bb7 100644
--- a/aos/events/logging/log_writer.h
+++ b/aos/events/logging/log_writer.h
@@ -209,6 +209,18 @@
     bool header_valid = false;
 
     // Sets the source_node_boot_uuid, properly updating everything.
+    void SetBootUUID(const UUID &new_source_node_boot_uuid) {
+      new_source_node_boot_uuid.CopyTo(source_node_boot_uuid.data());
+      header_valid = false;
+      has_source_node_boot_uuid = true;
+
+      flatbuffers::String *source_node_boot_uuid_string =
+          log_file_header.mutable_message()->mutable_source_node_boot_uuid();
+      CHECK_EQ(source_node_boot_uuid.size(),
+               source_node_boot_uuid_string->size());
+      memcpy(source_node_boot_uuid_string->data(), source_node_boot_uuid.data(),
+             source_node_boot_uuid.size());
+    }
     void SetBootUUID(std::string_view new_source_node_boot_uuid) {
       source_node_boot_uuid = new_source_node_boot_uuid;
       header_valid = false;