From 9d974062d0c7520e9292ac422d0e0774c96ad06b Mon Sep 17 00:00:00 2001 From: David Jablonski Date: Fri, 10 Sep 2021 10:13:11 +0200 Subject: [PATCH] replay: improved logging for format mismatchs --- src/modules/replay/Replay.cpp | 40 +++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/modules/replay/Replay.cpp b/src/modules/replay/Replay.cpp index cd4503a6e6..76d17430cf 100644 --- a/src/modules/replay/Replay.cpp +++ b/src/modules/replay/Replay.cpp @@ -371,7 +371,9 @@ Replay::readAndAddSubscription(std::ifstream &file, uint16_t msg_size) // FIXME: this should check recursively, all used nested types string file_format = _file_formats[topic_name]; - if (file_format != orb_meta->o_fields) { + std::string orb_fields(orb_meta->o_fields); + + if (file_format != orb_fields) { // check if we have a compatibility conversion available if (topic_name == "sensor_combined") { if (string(orb_meta->o_fields) == "uint64_t timestamp;float[3] gyro_rad;uint32_t gyro_integral_dt;" @@ -400,8 +402,42 @@ Replay::readAndAddSubscription(std::ifstream &file, uint16_t msg_size) if (!compat) { PX4_ERR("Formats for %s don't match. Will ignore it.", topic_name.c_str()); - PX4_WARN(" Internal format: %s", orb_meta->o_fields); + PX4_WARN(" Internal format:"); + size_t start = 0; + + for (size_t i = 0; i < orb_fields.length(); ++i) { + if (orb_fields[i] == ';') { + std::string field(orb_fields.substr(start, i - start)); + + if (file_format.find(field) != std::string::npos) { + PX4_WARN(" - %s", field.c_str()); + + } else { + PX4_ERR(" - %s", field.c_str()); + } + + start = i + 1; + } + } + PX4_WARN(" File format : %s", file_format.c_str()); + start = 0; + + for (size_t i = 0; i < file_format.length(); ++i) { + if (file_format[i] == ';') { + std::string field(file_format.substr(start, i - start)); + + if (orb_fields.find(field) != std::string::npos) { + PX4_WARN(" - %s", field.c_str()); + + } else { + PX4_ERR(" - %s", field.c_str()); + } + + start = i + 1; + } + } + return true; // not a fatal error } }