diff --git a/plotjuggler_plugins/DataLoadULog/ulog_parser.cpp b/plotjuggler_plugins/DataLoadULog/ulog_parser.cpp index 324ee1eb9..bfc3170cf 100644 --- a/plotjuggler_plugins/DataLoadULog/ulog_parser.cpp +++ b/plotjuggler_plugins/DataLoadULog/ulog_parser.cpp @@ -656,44 +656,45 @@ bool ULogParser::readInfo(DataStream& datastream, uint16_t msg_size) message++; std::string raw_key((char*)message, key_len); message += key_len; + std::string raw_value((char*)message, msg_size - key_len - 1); auto key_parts = splitString(raw_key, ' '); std::string key = key_parts[1].to_string(); - std::string value; + if (key_parts[0].starts_with("char[")) { - value = std::string((char*)message, msg_size - key_len - 1); + value = raw_value; } else if (key_parts[0] == StringView("bool")) { - bool val = *reinterpret_cast(key_parts[0].data()); + bool val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("uint8_t")) { - uint8_t val = *reinterpret_cast(key_parts[0].data()); + uint8_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("int8_t")) { - int8_t val = *reinterpret_cast(key_parts[0].data()); + int8_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("uint16_t")) { - uint16_t val = *reinterpret_cast(key_parts[0].data()); + uint16_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("int16_t")) { - int16_t val = *reinterpret_cast(key_parts[0].data()); + int16_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("uint32_t")) { - uint32_t val = *reinterpret_cast(key_parts[0].data()); + uint32_t val = *reinterpret_cast(raw_value.data()); if (key_parts[1].starts_with("ver_") && key_parts[1].ends_with("_release")) { value = int_to_hex(val); @@ -705,27 +706,27 @@ bool ULogParser::readInfo(DataStream& datastream, uint16_t msg_size) } else if (key_parts[0] == StringView("int32_t")) { - int32_t val = *reinterpret_cast(key_parts[0].data()); + int32_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("float")) { - float val = *reinterpret_cast(key_parts[0].data()); + float val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("double")) { - double val = *reinterpret_cast(key_parts[0].data()); + double val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("uint64_t")) { - uint64_t val = *reinterpret_cast(key_parts[0].data()); + uint64_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); } else if (key_parts[0] == StringView("int64_t")) { - int64_t val = *reinterpret_cast(key_parts[0].data()); + int64_t val = *reinterpret_cast(raw_value.data()); value = std::to_string(val); }