From 449ca905ee51639fa3b39a71ff0969b643964eca Mon Sep 17 00:00:00 2001 From: Tim Stewart Date: Fri, 27 Nov 2020 17:47:04 -0500 Subject: [PATCH] Revert "Place the scrambled null data regeneration into the right place." This reverts commit 59cb07329d9479ce07d16ea9ef93184e57669475. --- DStarControl.cpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/DStarControl.cpp b/DStarControl.cpp index 40f1f89..68fbb13 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -356,6 +356,10 @@ bool CDStarControl::writeModem(unsigned char *data, unsigned int len) return false; } + // Fix any scrambled null data frames + if (CUtils::compare(data + 1U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES) < 5U) + ::memcpy(data + 1U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES); + // Check for the fast data signature if (m_rfState == RS_RF_AUDIO) { unsigned char slowDataType = (data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 1U] ^ DSTAR_SCRAMBLER_BYTE1) & DSTAR_SLOW_DATA_TYPE_MASK; @@ -390,14 +394,7 @@ bool CDStarControl::writeModem(unsigned char *data, unsigned int len) } else if (m_rfState == RS_RF_AUDIO) { unsigned int errors = 0U; if (!m_rfHeader.isDataPacket()) { - if (CUtils::compare(data + 1U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES) < 5U) { - // Fix any scrambled null data frames, typically sent by Kenwood D-Star radios - ::memcpy(data + 1U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES); - } else { - // This appears to be a normal FEC protected audio frame - errors = m_fec.regenerateDStar(data + 1U); - } - + errors = m_fec.regenerateDStar(data + 1U); m_display->writeDStarBER(float(errors) / 0.48F); LogDebug("D-Star, audio sequence no. %u, errs: %u/48 (%.1f%%)", m_rfN, errors, float(errors) / 0.48F); m_rfErrs += errors; @@ -728,6 +725,10 @@ void CDStarControl::writeNetwork() writeEndNet(); } } else if (type == TAG_DATA) { + // Fix any scrambled null data frames + if (CUtils::compare(data + 2U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES) < 5U) + ::memcpy(data + 2U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES); + // Check for the fast data signature if (m_netState == RS_NET_AUDIO) { unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK; @@ -762,15 +763,8 @@ void CDStarControl::writeNetwork() unsigned char n = data[1U]; unsigned int errors = 0U; - if (!m_netHeader.isDataPacket()) { - if (CUtils::compare(data + 2U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES) < 5U) { - // Fix any scrambled null data frames, typically sent by Kenwood D-Star radios - ::memcpy(data + 2U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES); - } else { - // This appears to be a normal FEC protected audio frame - errors = m_fec.regenerateDStar(data + 2U); - } - } + if (!m_netHeader.isDataPacket()) + errors = m_fec.regenerateDStar(data + 2U); blankDTMF(data + 2U);