From 5824c9a6c09d87a51127f3bde20fc9ba83ac75d6 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Thu, 6 Feb 2025 11:16:17 +1100 Subject: [PATCH] * bug fix for rxdelay 0 --- examples/simple_repeater/main.cpp | 1 + examples/simple_room_server/main.cpp | 1 + src/Dispatcher.cpp | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 6a7f555c..9775e750 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -197,6 +197,7 @@ protected: } int calcRxDelay(float score, uint32_t air_time) const override { + if (_prefs.rx_delay_base <= 0.0f) return 0; return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time); } diff --git a/examples/simple_room_server/main.cpp b/examples/simple_room_server/main.cpp index 2a88bddd..48f718b6 100644 --- a/examples/simple_room_server/main.cpp +++ b/examples/simple_room_server/main.cpp @@ -251,6 +251,7 @@ protected: } int calcRxDelay(float score, uint32_t air_time) const override { + if (_prefs.rx_delay_base <= 0.0f) return 0; return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time); } diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index be48c582..81822baf 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -8,6 +8,8 @@ namespace mesh { +#define MAX_RX_DELAY_MILLIS 32000 // 32 seconds + void Dispatcher::begin() { n_sent_flood = n_sent_direct = 0; n_recv_flood = n_recv_direct = 0; @@ -127,6 +129,9 @@ void Dispatcher::checkRecv() { processRecvPacket(pkt); // is below the score delay threshold, so process immediately } else { MESH_DEBUG_PRINTLN("Dispatcher::checkRecv(), score delay is: %d millis", _delay); + if (_delay > MAX_RX_DELAY_MILLIS) { + _delay = MAX_RX_DELAY_MILLIS; + } _mgr->queueInbound(pkt, futureMillis(_delay)); // add to delayed inbound queue } } else {