Revert "Simplify the D-Star sequence number processing."

This reverts commit 99d4a9bc51.
This commit is contained in:
Tim Stewart 2020-11-27 17:45:19 -05:00
parent 7ea37fc5e9
commit bbbfbbbfad

View file

@ -730,8 +730,6 @@ void CDStarControl::writeNetwork()
writeEndNet(); writeEndNet();
} }
} else if (type == TAG_DATA) { } else if (type == TAG_DATA) {
unsigned char m_netN = data[1U];
// Check for the fast data signature // Check for the fast data signature
if (m_netState == RS_NET_AUDIO && (m_netN % 2U) == 1U) { if (m_netState == RS_NET_AUDIO && (m_netN % 2U) == 1U) {
unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK; unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK;
@ -744,13 +742,17 @@ void CDStarControl::writeNetwork()
} }
if (m_netState == RS_NET_DATA) { if (m_netState == RS_NET_DATA) {
unsigned char n = data[1U];
data[1U] = TAG_DATA; data[1U] = TAG_DATA;
m_netBits += 72U; m_netBits += 72U;
m_netErrs = 0U; m_netErrs = 0U;
m_netN = n;
// Regenerate the sync // Regenerate the sync
if (m_netN == 0U) if (n == 0U)
CSync::addDStarSync(data + 2U); CSync::addDStarSync(data + 2U);
m_packetTimer.start(); m_packetTimer.start();
@ -760,9 +762,12 @@ void CDStarControl::writeNetwork()
writeFile(data + 1U, length - 1U); writeFile(data + 1U, length - 1U);
#endif #endif
writeQueueDataNet(data + 1U); writeQueueDataNet(data + 1U);
} else if (m_netState == RS_NET_AUDIO) {
unsigned int errors = 0U;
m_netN = (m_netN + 1U) % 21U;
} else if (m_netState == RS_NET_AUDIO) {
unsigned char n = data[1U];
unsigned int errors = 0U;
if (!m_netHeader.isDataPacket()) { if (!m_netHeader.isDataPacket()) {
if (CUtils::compare(data + 2U, DSTAR_NULL_FRAME_DATA_SRAMBLED_BYTES, DSTAR_VOICE_FRAME_LENGTH_BYTES) < 5U) { 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 // Fix any scrambled null data frames, typically sent by Kenwood D-Star radios
@ -778,15 +783,17 @@ void CDStarControl::writeNetwork()
data[1U] = TAG_DATA; data[1U] = TAG_DATA;
// Insert silence and reject if in the past // Insert silence and reject if in the past
bool ret = insertSilence(data + 1U, m_netN); bool ret = insertSilence(data + 1U, n);
if (!ret) if (!ret)
return; return;
m_netErrs += errors; m_netErrs += errors;
m_netBits += 48U; m_netBits += 48U;
m_netN = n;
// Regenerate the sync // Regenerate the sync
if (m_netN == 0U) if (n == 0U)
CSync::addDStarSync(data + 2U); CSync::addDStarSync(data + 2U);
m_packetTimer.start(); m_packetTimer.start();
@ -796,6 +803,8 @@ void CDStarControl::writeNetwork()
writeFile(data + 1U, length - 1U); writeFile(data + 1U, length - 1U);
#endif #endif
writeQueueDataNet(data + 1U); writeQueueDataNet(data + 1U);
m_netN = (m_netN + 1U) % 21U;
} }
} else { } else {
CUtils::dump("D-Star, unknown data from network", data, DSTAR_FRAME_LENGTH_BYTES + 1U); CUtils::dump("D-Star, unknown data from network", data, DSTAR_FRAME_LENGTH_BYTES + 1U);