From 8382d4a08d010a101be69f8dec6e610bd1acea3a Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Fri, 21 Nov 2025 14:07:43 +0100 Subject: [PATCH] Fixed packet buffer FIFO state mismatch on high-bitrate queue processing if raw underlying byte buffer was full --- RNode_Firmware.ino | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino index 111f171..75fcffb 100644 --- a/RNode_Firmware.ino +++ b/RNode_Firmware.ino @@ -575,7 +575,7 @@ volatile bool queue_flushing = false; void flush_queue(void) { if (!queue_flushing) { queue_flushing = true; - led_tx_on(); uint16_t processed = 0; + led_tx_on(); #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 while (!fifo16_isempty(&packet_starts)) { @@ -592,7 +592,7 @@ void flush_queue(void) { tbuf[i] = packet_queue[pos]; } - transmit(length); processed++; + transmit(length); } } @@ -615,8 +615,7 @@ void flush_queue(void) { void pop_queue() { if (!queue_flushing) { - queue_flushing = true; - led_tx_on(); uint16_t processed = 0; + queue_flushing = true; led_tx_on(); #if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52 if (!fifo16_isempty(&packet_starts)) { @@ -632,9 +631,9 @@ void pop_queue() { tbuf[i] = packet_queue[pos]; } - transmit(length); processed++; + transmit(length); } - queue_height -= processed; + queue_height -= 1; queued_bytes -= length; }