Fix the lost frames count and the data type when a frame is missing.

This commit is contained in:
Jonathan Naylor
2017-12-14 13:53:09 +00:00
parent 828a83d7a3
commit dc24abb23e
2 changed files with 20 additions and 16 deletions

View File

@@ -977,18 +977,18 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
bool missing = dmrData.isMissing();
unsigned char dataType;
if (missing) {
m_netN = (m_netN + 1U) % 6U;
repeatFrame(data + 2U);
m_netLost++;
dataType = repeatFrame(data + 2U);
} else {
dataType = dmrData.getDataType();
m_netN = dmrData.getN();
m_networkWatchdog.start();
m_netMissed = 0U;
}
unsigned char dataType = dmrData.getDataType();
if (dataType == DT_VOICE_LC_HEADER) {
if (m_netState == RS_NET_AUDIO)
return;
@@ -1324,10 +1324,6 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
// Convert the Audio Sync to be from the BS or MS as needed
CSync::addDMRAudioSync(data + 2U, m_duplex);
// Initialise the lost packet data
if (m_netFrames == 0U)
m_netLost = 0U;
if (!m_netTimeout)
writeQueueNet(data);
@@ -1336,6 +1332,9 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
m_netEmbeddedData[m_netEmbeddedWriteN].reset();
if (missing)
m_netLost++;
m_netFrames++;
#if defined(DUMP_DMR)
@@ -1464,13 +1463,12 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
data[0U] = TAG_DATA;
data[1U] = 0x00U;
// Initialise the lost packet data
if (m_netFrames == 0U)
m_netLost = 0U;
if (!m_netTimeout)
writeQueueNet(data);
if (missing)
m_netLost++;
m_netFrames++;
#if defined(DUMP_DMR)
@@ -1918,7 +1916,7 @@ void CDMRSlot::closeFile()
}
}
void CDMRSlot::repeatFrame(unsigned char* data)
unsigned char CDMRSlot::repeatFrame(unsigned char* data)
{
// Repeat the last audio for 60ms then silence after that
if (m_netMissed == 0U) {
@@ -1931,6 +1929,10 @@ void CDMRSlot::repeatFrame(unsigned char* data)
if (m_netN == 0U) {
CSync::addDMRAudioSync(data, m_duplex);
m_netMissed++;
return DT_VOICE_SYNC;
} else {
m_netEmbeddedLC.getData(data, 0U);
@@ -1938,7 +1940,9 @@ void CDMRSlot::repeatFrame(unsigned char* data)
emb.setColorCode(m_colorCode);
emb.setLCSS(0U);
emb.getData(data);
}
m_netMissed++;
m_netMissed++;
return DT_VOICE;
}
}

View File

@@ -139,7 +139,7 @@ private:
bool writeFile(const unsigned char* data);
void closeFile();
void repeatFrame(unsigned char* data);
unsigned char repeatFrame(unsigned char* data);
static void setShortLC(unsigned int slotNo, unsigned int id, FLCO flco = FLCO_GROUP, ACTIVITY_TYPE type = ACTIVITY_NONE);
};