From 04934c5dcca5ad5ff89b427afb10cd7606115a99 Mon Sep 17 00:00:00 2001 From: Andy CA6JAU Date: Fri, 9 Feb 2018 17:30:53 -0300 Subject: [PATCH] Drop duplicate packets --- DMRSlot.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 7da67dc..6eeee6c 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -1353,10 +1353,10 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netLost = 0U; } - insertSilence(data, dmrData.getN()); - - if (!m_netTimeout) - writeQueueNet(data); + if (insertSilence(data, dmrData.getN())) { + if (!m_netTimeout) + writeQueueNet(data); + } m_netEmbeddedReadN = (m_netEmbeddedReadN + 1U) % 2U; m_netEmbeddedWriteN = (m_netEmbeddedWriteN + 1U) % 2U; @@ -1505,10 +1505,10 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netLost = 0U; } - insertSilence(data, dmrData.getN()); - - if (!m_netTimeout) - writeQueueNet(data); + if (insertSilence(data, dmrData.getN())) { + if (!m_netTimeout) + writeQueueNet(data); + } m_packetTimer.start(); m_elapsed.start(); @@ -1989,6 +1989,10 @@ bool CDMRSlot::insertSilence(const unsigned char* data, unsigned char seqNo) { assert(data != NULL); + // Do not send duplicate + if (seqNo == m_netN) + return false; + // Check to see if we have any spaces to fill? unsigned char seq = (m_netN + 1U) % 6U;