From 4bad810674d8c9f3a2dcb8562ea06c24dedb4237 Mon Sep 17 00:00:00 2001 From: Wolfgang Hoenig Date: Wed, 1 Nov 2023 14:10:57 +0100 Subject: [PATCH] cpp backend: process all incoming radio messages Process all radio messages every millisecond. The behavior before was to process one message every 100 ms, which caused long delays for incoming messages (such as log topics). Fixes #300 --- crazyflie/deps/crazyflie_tools | 2 +- crazyflie/src/crazyflie_server.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/crazyflie/deps/crazyflie_tools b/crazyflie/deps/crazyflie_tools index f26165753..2e0ae6da8 160000 --- a/crazyflie/deps/crazyflie_tools +++ b/crazyflie/deps/crazyflie_tools @@ -1 +1 @@ -Subproject commit f26165753fb8cb527ca4f78f81b2db0a7c4c251f +Subproject commit 2e0ae6da886aff19bf93116c487e7c737fa3e417 diff --git a/crazyflie/src/crazyflie_server.cpp b/crazyflie/src/crazyflie_server.cpp index d0910f3b5..9594e2ee4 100644 --- a/crazyflie/src/crazyflie_server.cpp +++ b/crazyflie/src/crazyflie_server.cpp @@ -141,7 +141,11 @@ class CrazyflieROS subscription_cmd_position_ = node->create_subscription(name + "/cmd_position", rclcpp::SystemDefaultsQoS(), std::bind(&CrazyflieROS::cmd_position_changed, this, _1), sub_opt_cf_cmd); // spinning timer - spin_timer_ = node->create_wall_timer(std::chrono::milliseconds(100), std::bind(&CrazyflieROS::spin_once, this), callback_group_cf_srv); + // used to process all incoming radio messages + spin_timer_ = + node->create_wall_timer( + std::chrono::milliseconds(1), + std::bind(&CrazyflieROS::spin_once, this), callback_group_cf_srv); auto start = std::chrono::system_clock::now(); @@ -367,7 +371,8 @@ class CrazyflieROS void spin_once() { - cf_.spin_once(); + // process all packets from the receive queue + cf_.processAllPackets(); } std::string broadcastUri() const