From 9cc2bfaaec4af1aac38b7cb243be61a72674ce56 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 28 Jan 2019 07:50:43 +0000 Subject: [PATCH] Fix the silence insertion for D-Star. --- DStarControl.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/DStarControl.cpp b/DStarControl.cpp index 993c551..e514635 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -708,10 +708,10 @@ void CDStarControl::writeNetwork() writeEndNet(); } } else if (type == TAG_DATA) { - unsigned char m_netN = data[1U]; + unsigned char n = data[1U]; // Check for the fast data signature - if (m_netState == RS_NET_AUDIO && (m_netN % 2U) == 1U) { + if (m_netState == RS_NET_AUDIO && (n % 2U) == 1U) { unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK; if (slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) { LogMessage("D-Star, switching to fast data mode"); @@ -727,6 +727,8 @@ void CDStarControl::writeNetwork() m_netBits += 72U; m_netErrs = 0U; + m_netN = n; + // Regenerate the sync if (m_netN == 0U) CSync::addDStarSync(data + 2U); @@ -756,13 +758,15 @@ void CDStarControl::writeNetwork() data[1U] = TAG_DATA; // Insert silence and reject if in the past - bool ret = insertSilence(data + 1U, m_netN); + bool ret = insertSilence(data + 1U, n); if (!ret) return; m_netErrs += errors; m_netBits += 48U; + m_netN = n; + // Regenerate the sync if (m_netN == 0U) CSync::addDStarSync(data + 2U);