actually write matrix logs to the log file
diff --git a/aos/linux_code/logging/log_displayer.cc b/aos/linux_code/logging/log_displayer.cc
index 98021b5..1cc5f43 100644
--- a/aos/linux_code/logging/log_displayer.cc
+++ b/aos/linux_code/logging/log_displayer.cc
@@ -227,7 +227,39 @@
log_message.type = ::aos::logging::LogMessage::Type::kStruct;
break;
}
- case LogFileMessageHeader::MessageType::kString:
+ case LogFileMessageHeader::MessageType::kMatrix: {
+ const char *position =
+ reinterpret_cast<const char *>(msg + 1) + msg->name_size;
+ memcpy(&log_message.matrix.type, position,
+ sizeof(log_message.matrix.type));
+ position += sizeof(log_message.matrix.type);
+
+ uint32_t length;
+ memcpy(&length, position, sizeof(length));
+ log_message.matrix.string_length = length;
+ position += sizeof(length);
+
+ uint16_t rows;
+ memcpy(&rows, position, sizeof(rows));
+ log_message.matrix.rows = rows;
+ position += sizeof(rows);
+ uint16_t cols;
+ memcpy(&cols, position, sizeof(cols));
+ log_message.matrix.cols = cols;
+ position += sizeof(cols);
+
+ log_message.message_length -=
+ sizeof(log_message.matrix.type) + sizeof(uint32_t) +
+ sizeof(uint16_t) + sizeof(uint16_t) + length;
+ CHECK_EQ(
+ log_message.message_length,
+ ::aos::MessageType::Sizeof(log_message.matrix.type) * rows * cols);
+ memcpy(log_message.matrix.data, position,
+ log_message.message_length + length);
+
+ log_message.type = ::aos::logging::LogMessage::Type::kMatrix;
+ break;
+ } case LogFileMessageHeader::MessageType::kString:
memcpy(
log_message.message,
reinterpret_cast<const char *>(msg) + sizeof(*msg) + msg->name_size,