From 142452f80c2017ffcb67d25c65dc782bab2fec47 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 2 Nov 2020 19:47:38 -0500 Subject: [PATCH] replay: print parameter changes and error on mismatch --- src/modules/replay/Replay.cpp | 36 +++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/modules/replay/Replay.cpp b/src/modules/replay/Replay.cpp index cbedc43c39..8869b0a153 100644 --- a/src/modules/replay/Replay.cpp +++ b/src/modules/replay/Replay.cpp @@ -127,7 +127,9 @@ Replay::setupReplayFile(const char *file_name) void Replay::setUserParams(const char *filename) { - string line, param_name, value_string; + string line; + string pname; + string value_string; ifstream myfile(filename); if (!myfile.is_open()) { @@ -144,23 +146,37 @@ Replay::setUserParams(const char *filename) } istringstream mystrstream(line); - mystrstream >> param_name; + mystrstream >> pname; mystrstream >> value_string; double param_value_double = stod(value_string); - param_t handle = param_find(param_name.c_str()); + param_t handle = param_find(pname.c_str()); param_type_t param_format = param_type(handle); - _overridden_params.insert(param_name); + _overridden_params.insert(pname); if (param_format == PARAM_TYPE_INT32) { - int32_t value = 0; - value = (int32_t)param_value_double; + int32_t orig_value = 0; + param_get(handle, &orig_value); + + int32_t value = (int32_t)param_value_double; + + if (orig_value != value) { + PX4_WARN("setting %s (INT32) %d -> %d", param_name(handle), orig_value, value); + } + param_set(handle, (const void *)&value); } else if (param_format == PARAM_TYPE_FLOAT) { - float value = 0; - value = (float)param_value_double; + float orig_value = 0; + param_get(handle, &orig_value); + + float value = (float)param_value_double; + + if (fabsf(orig_value - value) > FLT_EPSILON) { + PX4_WARN("setting %s (FLOAT) %.3f -> %.3f", param_name(handle), (double)orig_value, (double)value); + } + param_set(handle, (const void *)&value); } } @@ -383,7 +399,7 @@ Replay::readAndAddSubscription(std::ifstream &file, uint16_t msg_size) } if (!compat) { - PX4_WARN("Formats for %s don't match. Will ignore it.", topic_name.c_str()); + 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(" File format : %s", file_format.c_str()); return true; // not a fatal error @@ -549,7 +565,7 @@ Replay::readDropout(std::ifstream &file, uint16_t msg_size) uint16_t duration; file.read((char *)&duration, sizeof(duration)); - PX4_INFO("Dropout in replayed log, %i ms", (int)duration); + PX4_ERR("Dropout in replayed log, %i ms", (int)duration); return file.good(); }