From d72b604aa9e31594bbfdbbc938a38471818364f1 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 4 Aug 2026 19:46:42 -0400 Subject: [PATCH] implement the same fix for DMR and NXDN; --- src/host/dmr/Slot.cpp | 4 +++- src/host/nxdn/Control.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/host/dmr/Slot.cpp b/src/host/dmr/Slot.cpp index 724b6fb0..af460581 100644 --- a/src/host/dmr/Slot.cpp +++ b/src/host/dmr/Slot.cpp @@ -230,7 +230,9 @@ bool Slot::processFrame(uint8_t *data, uint32_t len) } if (m_rfState == RS_RF_AUDIO || m_rfState == RS_RF_DATA) { - if (m_rfLossWatchdog.isRunning()) { + // if RF TG hang is disabled, keep the loss watchdog alive from inbound + // RF frames so abrupt stream loss can still recover state. + if (m_rfTGHang.getTimeout() == 0U || m_rfLossWatchdog.isRunning()) { m_rfLossWatchdog.start(); } } diff --git a/src/host/nxdn/Control.cpp b/src/host/nxdn/Control.cpp index c1c341b1..384c2eb4 100644 --- a/src/host/nxdn/Control.cpp +++ b/src/host/nxdn/Control.cpp @@ -403,7 +403,9 @@ bool Control::processFrame(uint8_t* data, uint32_t len) } if (m_rfState == RS_RF_AUDIO || m_rfState == RS_RF_DATA) { - if (m_rfLossWatchdog.isRunning()) { + // if RF TG hang is disabled, keep the loss watchdog alive from inbound + // RF frames so abrupt stream loss can still recover state. + if (m_rfTGHang.getTimeout() == 0U || m_rfLossWatchdog.isRunning()) { m_rfLossWatchdog.start(); } }