Workarounds for duplicate audio packets.
This commit is contained in:
parent
1643c1ddc5
commit
d6d44c0c2c
|
@ -47,6 +47,8 @@ m_netSource(NULL),
|
||||||
m_netDest(NULL),
|
m_netDest(NULL),
|
||||||
m_rfPayload(),
|
m_rfPayload(),
|
||||||
m_netPayload(),
|
m_netPayload(),
|
||||||
|
m_netSeqNo(0U),
|
||||||
|
m_netCsum(0U),
|
||||||
m_fp(NULL)
|
m_fp(NULL)
|
||||||
{
|
{
|
||||||
assert(display != NULL);
|
assert(display != NULL);
|
||||||
|
@ -383,7 +385,13 @@ void CYSFControl::writeNetwork()
|
||||||
m_netFrames = 0U;
|
m_netFrames = 0U;
|
||||||
m_netErrs = 0U;
|
m_netErrs = 0U;
|
||||||
m_netBits = 1U;
|
m_netBits = 1U;
|
||||||
|
m_netSeqNo = 0U;
|
||||||
|
m_netCsum = 0U;
|
||||||
} else {
|
} else {
|
||||||
|
// Check for duplicate frames, if we can
|
||||||
|
if (m_netSeqNo == data[34U] && m_netSeqNo != 0U)
|
||||||
|
return;
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0 && ::memcmp(m_netSource, "??????????", YSF_CALLSIGN_LENGTH) == 0) {
|
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0 && ::memcmp(m_netSource, "??????????", YSF_CALLSIGN_LENGTH) == 0) {
|
||||||
|
@ -403,6 +411,7 @@ void CYSFControl::writeNetwork()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_netFrames++;
|
m_netFrames++;
|
||||||
|
m_netSeqNo = data[34U];
|
||||||
|
|
||||||
unsigned char n = (data[34U] & 0xFEU) >> 1;
|
unsigned char n = (data[34U] & 0xFEU) >> 1;
|
||||||
bool end = (data[34U] & 0x01U) == 0x01U;
|
bool end = (data[34U] & 0x01U) == 0x01U;
|
||||||
|
@ -418,6 +427,17 @@ void CYSFControl::writeNetwork()
|
||||||
unsigned char fi = fich.getFI();
|
unsigned char fi = fich.getFI();
|
||||||
unsigned char ft = fich.getFT();
|
unsigned char ft = fich.getFT();
|
||||||
|
|
||||||
|
// XXX temporary duplicate removal, remove when everyone has upgraded their MMDVM Host
|
||||||
|
unsigned int csum = 0U;
|
||||||
|
for (unsigned int i = 0U; i < YSF_FRAME_LENGTH_BYTES; i++)
|
||||||
|
csum += data[i + 35U];
|
||||||
|
|
||||||
|
if (csum == m_netCsum)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_netCsum = csum;
|
||||||
|
// XXX temporary duplicate removal, remove when everyone has upgraded their MMDVM Host
|
||||||
|
|
||||||
// Set the downlink callsign
|
// Set the downlink callsign
|
||||||
switch (fi) {
|
switch (fi) {
|
||||||
case YSF_FI_HEADER:
|
case YSF_FI_HEADER:
|
||||||
|
|
|
@ -64,6 +64,8 @@ private:
|
||||||
unsigned char* m_netDest;
|
unsigned char* m_netDest;
|
||||||
CYSFPayload m_rfPayload;
|
CYSFPayload m_rfPayload;
|
||||||
CYSFPayload m_netPayload;
|
CYSFPayload m_netPayload;
|
||||||
|
unsigned char m_netSeqNo;
|
||||||
|
unsigned int m_netCsum;
|
||||||
FILE* m_fp;
|
FILE* m_fp;
|
||||||
|
|
||||||
void writeQueueRF(const unsigned char* data);
|
void writeQueueRF(const unsigned char* data);
|
||||||
|
|
Loading…
Reference in a new issue