logger: fix initial subscribing to topics

write_all_add_logged_msg() requires at least some subscriptions to be added
initially, as this message is used to separate ULog header from data.
This commit is contained in:
Beat Küng
2020-03-20 10:41:14 +01:00
parent fb27d96ca1
commit 40af5b0fbe
+8
View File
@@ -506,6 +506,7 @@ bool Logger::initialize_topics()
// if we poll on a topic, we don't use the interval and let the polled topic define the maximum interval
uint16_t interval_ms = _polling_topic_meta ? 0 : sub.interval_ms;
_subscriptions[i] = LoggerSubscription(sub.id, interval_ms, sub.instance);
_subscriptions[i].subscribe();
}
}
@@ -1557,15 +1558,22 @@ void Logger::write_all_add_logged_msg(LogType type)
sub_count = _num_mission_subs;
}
bool added_subscriptions = false;
for (int i = 0; i < sub_count; ++i) {
LoggerSubscription &sub = _subscriptions[i];
if (sub.valid()) {
write_add_logged_msg(type, sub);
added_subscriptions = true;
}
}
_writer.unlock();
if (!added_subscriptions) {
PX4_ERR("No subscriptions added"); // this results in invalid log files
}
}
void Logger::write_add_logged_msg(LogType type, LoggerSubscription &subscription)