Simplify the frame numbering logic.
This commit is contained in:
parent
3aa83328b7
commit
36e2f202c3
|
@ -52,7 +52,6 @@ m_lastMode(YSF_DT_VOICE_FR_MODE),
|
||||||
m_netN(0U),
|
m_netN(0U),
|
||||||
m_rfPayload(),
|
m_rfPayload(),
|
||||||
m_netPayload(),
|
m_netPayload(),
|
||||||
m_netSeqNo(0U),
|
|
||||||
m_fp(NULL)
|
m_fp(NULL)
|
||||||
{
|
{
|
||||||
assert(display != NULL);
|
assert(display != NULL);
|
||||||
|
@ -354,6 +353,7 @@ void CYSFControl::writeEndNet()
|
||||||
|
|
||||||
m_netTimeoutTimer.stop();
|
m_netTimeoutTimer.stop();
|
||||||
m_networkWatchdog.stop();
|
m_networkWatchdog.stop();
|
||||||
|
m_packetTimer.stop();
|
||||||
|
|
||||||
m_netPayload.reset();
|
m_netPayload.reset();
|
||||||
|
|
||||||
|
@ -377,7 +377,13 @@ void CYSFControl::writeNetwork()
|
||||||
|
|
||||||
bool gateway = ::memcmp(data + 4U, "GATEWAY ", YSF_CALLSIGN_LENGTH) == 0;
|
bool gateway = ::memcmp(data + 4U, "GATEWAY ", YSF_CALLSIGN_LENGTH) == 0;
|
||||||
|
|
||||||
|
unsigned char n = (data[34U] & 0xFEU) >> 1;
|
||||||
|
bool end = (data[34U] & 0x01U) == 0x01U;
|
||||||
|
|
||||||
if (!m_netTimeoutTimer.isRunning()) {
|
if (!m_netTimeoutTimer.isRunning()) {
|
||||||
|
if (end)
|
||||||
|
return;
|
||||||
|
|
||||||
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0)
|
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0)
|
||||||
::memcpy(m_netSource, data + 14U, YSF_CALLSIGN_LENGTH);
|
::memcpy(m_netSource, data + 14U, YSF_CALLSIGN_LENGTH);
|
||||||
else
|
else
|
||||||
|
@ -400,14 +406,11 @@ void CYSFControl::writeNetwork()
|
||||||
m_netLost = 0U;
|
m_netLost = 0U;
|
||||||
m_netErrs = 0U;
|
m_netErrs = 0U;
|
||||||
m_netBits = 1U;
|
m_netBits = 1U;
|
||||||
m_netSeqNo = 0U;
|
|
||||||
m_netN = 0U;
|
m_netN = 0U;
|
||||||
} else {
|
} else {
|
||||||
// Check for duplicate frames, if we can
|
// Check for duplicate frames, if we can
|
||||||
if (m_netSeqNo == data[34U]) {
|
if (m_netN == n)
|
||||||
LogDebug("YSF, removing network duplicate, seq %u", data[34U] >> 1);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
|
@ -427,12 +430,6 @@ void CYSFControl::writeNetwork()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_netFrames++;
|
|
||||||
m_netSeqNo = data[34U];
|
|
||||||
|
|
||||||
unsigned char n = (data[34U] & 0xFEU) >> 1;
|
|
||||||
bool end = (data[34U] & 0x01U) == 0x01U;
|
|
||||||
|
|
||||||
data[33U] = end ? TAG_EOT : TAG_DATA;
|
data[33U] = end ? TAG_EOT : TAG_DATA;
|
||||||
data[34U] = 0x00U;
|
data[34U] = 0x00U;
|
||||||
|
|
||||||
|
@ -448,6 +445,10 @@ void CYSFControl::writeNetwork()
|
||||||
unsigned char ft = fich.getFT();
|
unsigned char ft = fich.getFT();
|
||||||
unsigned char fi = fich.getFI();
|
unsigned char fi = fich.getFI();
|
||||||
|
|
||||||
|
fich.setVoIP(true);
|
||||||
|
fich.setMR(YSF_MR_BUSY);
|
||||||
|
fich.encode(data + 35U);
|
||||||
|
|
||||||
m_lastMode = dt;
|
m_lastMode = dt;
|
||||||
|
|
||||||
// Set the downlink callsign
|
// Set the downlink callsign
|
||||||
|
@ -509,10 +510,6 @@ void CYSFControl::writeNetwork()
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fich.setVoIP(true);
|
|
||||||
fich.setMR(YSF_MR_BUSY);
|
|
||||||
fich.encode(data + 35U);
|
|
||||||
} else {
|
} else {
|
||||||
send = insertSilence(data + 33U, n);
|
send = insertSilence(data + 33U, n);
|
||||||
}
|
}
|
||||||
|
@ -520,6 +517,7 @@ void CYSFControl::writeNetwork()
|
||||||
if (send) {
|
if (send) {
|
||||||
writeQueueNet(data + 33U);
|
writeQueueNet(data + 33U);
|
||||||
m_packetTimer.start();
|
m_packetTimer.start();
|
||||||
|
m_netFrames++;
|
||||||
m_netN = n;
|
m_netN = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,6 @@ private:
|
||||||
unsigned char m_netN;
|
unsigned char m_netN;
|
||||||
CYSFPayload m_rfPayload;
|
CYSFPayload m_rfPayload;
|
||||||
CYSFPayload m_netPayload;
|
CYSFPayload m_netPayload;
|
||||||
unsigned char m_netSeqNo;
|
|
||||||
FILE* m_fp;
|
FILE* m_fp;
|
||||||
|
|
||||||
void writeQueueRF(const unsigned char* data);
|
void writeQueueRF(const unsigned char* data);
|
||||||
|
|
Loading…
Reference in a new issue