mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-20 22:45:44 +08:00
Add the BER and a future RSSI to the DMR data.
This commit is contained in:
22
DMRSlot.cpp
22
DMRSlot.cpp
@@ -394,9 +394,10 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
// Convert the Audio Sync to be from the BS
|
||||
CSync::addDMRAudioSync(data + 2U);
|
||||
|
||||
unsigned int errors = 0U;
|
||||
unsigned char fid = m_rfLC->getFID();
|
||||
if (fid == FID_ETSI || fid == FID_DMRA) {
|
||||
unsigned int errors = m_fec.regenerateDMR(data + 2U);
|
||||
errors = m_fec.regenerateDMR(data + 2U);
|
||||
LogDebug("DMR Slot %u, audio sequence no. 0, errs: %u/141", m_slotNo, errors);
|
||||
m_rfErrs += errors;
|
||||
}
|
||||
@@ -409,7 +410,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
if (m_duplex)
|
||||
writeQueueRF(data);
|
||||
|
||||
writeNetworkRF(data, DT_VOICE_SYNC);
|
||||
writeNetworkRF(data, DT_VOICE_SYNC, errors);
|
||||
} else if (m_rfState == RS_RF_LISTENING) {
|
||||
m_rfState = RS_RF_LATE_ENTRY;
|
||||
}
|
||||
@@ -428,9 +429,10 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
emb.setLCSS(lcss);
|
||||
emb.getData(data + 2U);
|
||||
|
||||
unsigned int errors = 0U;
|
||||
unsigned char fid = m_rfLC->getFID();
|
||||
if (fid == FID_ETSI || fid == FID_DMRA) {
|
||||
unsigned int errors = m_fec.regenerateDMR(data + 2U);
|
||||
errors = m_fec.regenerateDMR(data + 2U);
|
||||
LogDebug("DMR Slot %u, audio sequence no. %u, errs: %u/141", m_slotNo, m_rfN, errors);
|
||||
m_rfErrs += errors;
|
||||
}
|
||||
@@ -443,7 +445,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
if (m_duplex)
|
||||
writeQueueRF(data);
|
||||
|
||||
writeNetworkRF(data, DT_VOICE);
|
||||
writeNetworkRF(data, DT_VOICE, errors);
|
||||
} else if (m_rfState == RS_RF_LATE_ENTRY) {
|
||||
CDMREMB emb;
|
||||
emb.putData(data + 2U);
|
||||
@@ -498,9 +500,10 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
emb.getData(data + 2U);
|
||||
|
||||
// Send the original audio frame out
|
||||
unsigned int errors = 0U;
|
||||
unsigned char fid = m_rfLC->getFID();
|
||||
if (fid == FID_ETSI || fid == FID_DMRA) {
|
||||
unsigned int errors = m_fec.regenerateDMR(data + 2U);
|
||||
errors = m_fec.regenerateDMR(data + 2U);
|
||||
LogDebug("DMR Slot %u, audio sequence no. %u, errs: %u/141", m_slotNo, m_rfN, errors);
|
||||
m_rfErrs += errors;
|
||||
}
|
||||
@@ -513,7 +516,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
||||
if (m_duplex)
|
||||
writeQueueRF(data);
|
||||
|
||||
writeNetworkRF(data, DT_VOICE);
|
||||
writeNetworkRF(data, DT_VOICE, errors);
|
||||
|
||||
m_rfState = RS_RF_AUDIO;
|
||||
|
||||
@@ -1133,7 +1136,7 @@ void CDMRSlot::writeQueueRF(const unsigned char *data)
|
||||
m_queue.addData(data, len);
|
||||
}
|
||||
|
||||
void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType, FLCO flco, unsigned int srcId, unsigned int dstId)
|
||||
void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType, FLCO flco, unsigned int srcId, unsigned int dstId, unsigned char errors)
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
@@ -1155,6 +1158,7 @@ void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType,
|
||||
dmrData.setFLCO(flco);
|
||||
dmrData.setN(m_rfN);
|
||||
dmrData.setSeqNo(m_rfSeqNo);
|
||||
dmrData.setBER(errors);
|
||||
|
||||
m_rfSeqNo++;
|
||||
|
||||
@@ -1163,12 +1167,12 @@ void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType,
|
||||
m_network->write(dmrData);
|
||||
}
|
||||
|
||||
void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType)
|
||||
void CDMRSlot::writeNetworkRF(const unsigned char* data, unsigned char dataType, unsigned char errors)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(m_rfLC != NULL);
|
||||
|
||||
writeNetworkRF(data, dataType, m_rfLC->getFLCO(), m_rfLC->getSrcId(), m_rfLC->getDstId());
|
||||
writeNetworkRF(data, dataType, m_rfLC->getFLCO(), m_rfLC->getSrcId(), m_rfLC->getDstId(), errors);
|
||||
}
|
||||
|
||||
void CDMRSlot::writeQueueNet(const unsigned char *data)
|
||||
|
||||
Reference in New Issue
Block a user