mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 10:26:52 +08:00
replay: print parameter changes and error on mismatch
This commit is contained in:
@@ -127,7 +127,9 @@ Replay::setupReplayFile(const char *file_name)
|
|||||||
void
|
void
|
||||||
Replay::setUserParams(const char *filename)
|
Replay::setUserParams(const char *filename)
|
||||||
{
|
{
|
||||||
string line, param_name, value_string;
|
string line;
|
||||||
|
string pname;
|
||||||
|
string value_string;
|
||||||
ifstream myfile(filename);
|
ifstream myfile(filename);
|
||||||
|
|
||||||
if (!myfile.is_open()) {
|
if (!myfile.is_open()) {
|
||||||
@@ -144,23 +146,37 @@ Replay::setUserParams(const char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
istringstream mystrstream(line);
|
istringstream mystrstream(line);
|
||||||
mystrstream >> param_name;
|
mystrstream >> pname;
|
||||||
mystrstream >> value_string;
|
mystrstream >> value_string;
|
||||||
|
|
||||||
double param_value_double = stod(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);
|
param_type_t param_format = param_type(handle);
|
||||||
_overridden_params.insert(param_name);
|
_overridden_params.insert(pname);
|
||||||
|
|
||||||
if (param_format == PARAM_TYPE_INT32) {
|
if (param_format == PARAM_TYPE_INT32) {
|
||||||
int32_t value = 0;
|
int32_t orig_value = 0;
|
||||||
value = (int32_t)param_value_double;
|
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);
|
param_set(handle, (const void *)&value);
|
||||||
|
|
||||||
} else if (param_format == PARAM_TYPE_FLOAT) {
|
} else if (param_format == PARAM_TYPE_FLOAT) {
|
||||||
float value = 0;
|
float orig_value = 0;
|
||||||
value = (float)param_value_double;
|
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);
|
param_set(handle, (const void *)&value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -383,7 +399,7 @@ Replay::readAndAddSubscription(std::ifstream &file, uint16_t msg_size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!compat) {
|
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(" Internal format: %s", orb_meta->o_fields);
|
||||||
PX4_WARN(" File format : %s", file_format.c_str());
|
PX4_WARN(" File format : %s", file_format.c_str());
|
||||||
return true; // not a fatal error
|
return true; // not a fatal error
|
||||||
@@ -549,7 +565,7 @@ Replay::readDropout(std::ifstream &file, uint16_t msg_size)
|
|||||||
uint16_t duration;
|
uint16_t duration;
|
||||||
file.read((char *)&duration, sizeof(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();
|
return file.good();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user