listener: only clear screen with multiple messages (#24019)

* listener: only clear screen with multiple messages

* listener: fully clear before printing again

Otherwise, we end up seeing artifacts from the previous print.
This commit is contained in:
Julian Oes
2024-12-11 10:00:36 +13:00
committed by GitHub
parent 0f1a4eb72c
commit 091974e6c5
@@ -113,9 +113,6 @@ void listener(const orb_id_t &id, unsigned num_msgs, int topic_instance,
fds[1].fd = sub;
fds[1].events = POLLIN;
// Clear screen
dprintf(1, "\033[2J\n");
while (msgs_received < num_msgs) {
if (poll(&fds[0], 2, int(MESSAGE_TIMEOUT_S * 1000)) > 0) {
@@ -142,8 +139,13 @@ void listener(const orb_id_t &id, unsigned num_msgs, int topic_instance,
if (fds[1].revents & POLLIN) {
msgs_received++;
// Move cursor to home position
dprintf(1, "\033[H");
if (num_msgs > 1) {
// Clear screen
dprintf(1, "\033[2J\n");
// Move cursor to home position
dprintf(1, "\033[H");
}
PX4_INFO_RAW("\nTOPIC: %s instance %d #%d\n", id->o_name, topic_instance, msgs_received);
int ret = listener_print_topic(id, sub);