diff --git a/libraries/AP_DroneCAN/AP_DroneCAN.cpp b/libraries/AP_DroneCAN/AP_DroneCAN.cpp index 1d7c68b0a7..657e7f62b2 100644 --- a/libraries/AP_DroneCAN/AP_DroneCAN.cpp +++ b/libraries/AP_DroneCAN/AP_DroneCAN.cpp @@ -312,9 +312,15 @@ void AP_DroneCAN::init(uint8_t driver_index, bool enable_filters) node_status_msg.sub_mode = 0; // Spin node for device discovery - for (uint8_t i = 0; i < 5; i++) { - send_node_status(); - canard_iface.process(1000); + uint32_t start_loop_ms = AP_HAL::millis(); + uint32_t last_send_ms = 0; + while (AP_HAL::millis() - start_loop_ms < 5000) { + uint32_t now = AP_HAL::millis(); + if (now - last_send_ms >= 1000) { + send_node_status(); + last_send_ms = now; + } + canard_iface.process(50); } hal.util->snprintf(_thread_name, sizeof(_thread_name), "dronecan_%u", driver_index);