Move FEC display to the main code.
This commit is contained in:
parent
ed6c9573c0
commit
8df0eae8bb
|
@ -194,16 +194,22 @@ bool CYSFControl::writeModem(unsigned char *data)
|
|||
// LogDebug("YSF, FICH: FI: %u, DT: %u, FN: %u, FT: %u", fich.getFI(), fich.getDT(), fich.getFN(), fich.getFT());
|
||||
|
||||
switch (dt) {
|
||||
case YSF_DT_VD_MODE1:
|
||||
valid = m_rfPayload.processVDMode1Data(data + 2U, fn);
|
||||
m_rfErrs += m_rfPayload.processVDMode1Audio(data + 2U, m_rfFrames % 128U);
|
||||
m_rfBits += 235U;
|
||||
case YSF_DT_VD_MODE1: {
|
||||
valid = m_rfPayload.processVDMode1Data(data + 2U, fn);
|
||||
unsigned int errors = m_rfPayload.processVDMode1Audio(data + 2U);
|
||||
m_rfErrs += errors;
|
||||
m_rfBits += 235U;
|
||||
LogDebug("YSF, V/D Mode 1, seq %u, AMBE FEC %u/235 (%.1f%%)", m_rfFrames % 128, errors, float(errors) / 2.35F);
|
||||
}
|
||||
break;
|
||||
|
||||
case YSF_DT_VD_MODE2:
|
||||
valid = m_rfPayload.processVDMode2Data(data + 2U, fn);
|
||||
m_rfErrs += m_rfPayload.processVDMode2Audio(data + 2U, m_rfFrames % 128U);
|
||||
m_rfBits += 135U;
|
||||
case YSF_DT_VD_MODE2: {
|
||||
valid = m_rfPayload.processVDMode2Data(data + 2U, fn);
|
||||
unsigned int errors = m_rfPayload.processVDMode2Audio(data + 2U);
|
||||
m_rfErrs += errors;
|
||||
m_rfBits += 135U;
|
||||
LogDebug("YSF, V/D Mode 2, seq %u, Repetition FEC %u/135 (%.1f%%)", m_rfFrames % 128, errors, float(errors) / 1.35F);
|
||||
}
|
||||
break;
|
||||
|
||||
case YSF_DT_DATA_FR_MODE:
|
||||
|
@ -213,8 +219,10 @@ bool CYSFControl::writeModem(unsigned char *data)
|
|||
case YSF_DT_VOICE_FR_MODE:
|
||||
if (fn != 0U || ft != 1U) {
|
||||
// The first packet after the header is odd, don't try and regenerate it
|
||||
m_rfErrs += m_rfPayload.processVoiceFRModeAudio(data + 2U, m_rfFrames % 128U);
|
||||
unsigned int errors = m_rfPayload.processVoiceFRModeAudio(data + 2U);
|
||||
m_rfErrs += errors;
|
||||
m_rfBits += 720U;
|
||||
LogDebug("YSF, V Mode 3, seq %u, AMBE FEC %u/720 (%.1f%%)", m_rfFrames % 128, errors, float(errors) / 7.2F);
|
||||
}
|
||||
valid = false;
|
||||
break;
|
||||
|
@ -451,16 +459,22 @@ void CYSFControl::writeNetwork()
|
|||
|
||||
case YSF_FI_COMMUNICATIONS:
|
||||
switch (dt) {
|
||||
case YSF_DT_VD_MODE1:
|
||||
m_netPayload.processVDMode1Data(data + 35U, fn, gateway);
|
||||
m_netErrs += m_netPayload.processVDMode1Audio(data + 35U, n);
|
||||
m_netBits += 235U;
|
||||
case YSF_DT_VD_MODE1: {
|
||||
m_netPayload.processVDMode1Data(data + 35U, fn, gateway);
|
||||
unsigned int errors = m_netPayload.processVDMode1Audio(data + 35U);
|
||||
m_netErrs += errors;
|
||||
m_netBits += 235U;
|
||||
LogDebug("YSF, V/D Mode 1, seq %u, AMBE FEC %u/235 (%.1f%%)", n, errors, float(errors) / 2.35F);
|
||||
}
|
||||
break;
|
||||
|
||||
case YSF_DT_VD_MODE2:
|
||||
m_netPayload.processVDMode2Data(data + 35U, fn, gateway);
|
||||
m_netErrs += m_netPayload.processVDMode2Audio(data + 35U, n);
|
||||
m_netBits += 135U;
|
||||
case YSF_DT_VD_MODE2: {
|
||||
m_netPayload.processVDMode2Data(data + 35U, fn, gateway);
|
||||
unsigned int errors = m_netPayload.processVDMode2Audio(data + 35U);
|
||||
m_netErrs += errors;
|
||||
m_netBits += 135U;
|
||||
LogDebug("YSF, V/D Mode 2, seq %u, Repetition FEC %u/135 (%.1f%%)", n, errors, float(errors) / 1.35F);
|
||||
}
|
||||
break;
|
||||
|
||||
case YSF_DT_DATA_FR_MODE:
|
||||
|
@ -470,8 +484,10 @@ void CYSFControl::writeNetwork()
|
|||
case YSF_DT_VOICE_FR_MODE:
|
||||
if (fn != 0U || ft != 1U) {
|
||||
// The first packet after the header is odd, don't try and regenerate it
|
||||
m_netErrs += m_netPayload.processVoiceFRModeAudio(data + 35U, n);
|
||||
unsigned int errors = m_netPayload.processVoiceFRModeAudio(data + 35U);
|
||||
m_netErrs += errors;
|
||||
m_netBits += 720U;
|
||||
LogDebug("YSF, V Mode 3, seq %u, AMBE FEC %u/720 (%.1f%%)", n, errors, float(errors) / 7.2F);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ bool CYSFPayload::processHeaderData(unsigned char* data)
|
|||
return valid1;
|
||||
}
|
||||
|
||||
unsigned int CYSFPayload::processVDMode1Audio(unsigned char* data, unsigned int count)
|
||||
unsigned int CYSFPayload::processVDMode1Audio(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
|
@ -263,17 +263,6 @@ unsigned int CYSFPayload::processVDMode1Audio(unsigned char* data, unsigned int
|
|||
errors += m_fec.regenerateDMR(data + 63U);
|
||||
errors += m_fec.regenerateDMR(data + 81U);
|
||||
|
||||
unsigned int csum = 0U;
|
||||
for (unsigned int i = 0U; i < 9U; i++) {
|
||||
csum += data[i + 9U];
|
||||
csum += data[i + 27U];
|
||||
csum += data[i + 45U];
|
||||
csum += data[i + 63U];
|
||||
csum += data[i + 81U];
|
||||
}
|
||||
|
||||
LogDebug("YSF, V/D Mode 1, seq %u, AMBE FEC %u/235 (%.1f%%), csum: %u", count, errors, float(errors) / 2.35F, csum);
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
|
@ -397,7 +386,7 @@ bool CYSFPayload::processVDMode1Data(unsigned char* data, unsigned char fn, bool
|
|||
return ret && (fn == 0U);
|
||||
}
|
||||
|
||||
unsigned int CYSFPayload::processVDMode2Audio(unsigned char* data, unsigned int count)
|
||||
unsigned int CYSFPayload::processVDMode2Audio(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
|
@ -450,16 +439,6 @@ unsigned int CYSFPayload::processVDMode2Audio(unsigned char* data, unsigned int
|
|||
}
|
||||
}
|
||||
|
||||
unsigned int csum = 0U;
|
||||
for (unsigned int i = 0U; i < 13U; i++) {
|
||||
csum += data[i + 5U];
|
||||
csum += data[i + 23U];
|
||||
csum += data[i + 41U];
|
||||
csum += data[i + 59U];
|
||||
csum += data[i + 77U];
|
||||
}
|
||||
|
||||
LogDebug("YSF, V/D Mode 2, seq %u, Repetition FEC %u/135 (%.1f%%), csum: %u", count, errors, float(errors) / 1.35F, csum);
|
||||
// "errors" is the number of triplets that were recognized to be corrupted
|
||||
// and that were corrected. There are 27 of those per VCH and 5 VCH per CC,
|
||||
// yielding a total of 27*5 = 135. I believe the expected value of this
|
||||
|
@ -803,7 +782,7 @@ bool CYSFPayload::processDataFRModeData(unsigned char* data, unsigned char fn, b
|
|||
return ret1 && (fn == 0U);
|
||||
}
|
||||
|
||||
unsigned int CYSFPayload::processVoiceFRModeAudio(unsigned char* data, unsigned int count)
|
||||
unsigned int CYSFPayload::processVoiceFRModeAudio(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
|
@ -817,12 +796,6 @@ unsigned int CYSFPayload::processVoiceFRModeAudio(unsigned char* data, unsigned
|
|||
errors += m_fec.regenerateYSF3(data + 54U);
|
||||
errors += m_fec.regenerateYSF3(data + 72U);
|
||||
|
||||
unsigned int csum = 0U;
|
||||
for (unsigned int i = 0U; i < 90U; i++)
|
||||
csum += data[i];
|
||||
|
||||
LogDebug("YSF, V Mode 3, seq %u, AMBE FEC %u/720 (%.1f%%), csum: %u", count, errors, float(errors) / 7.2F, csum);
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,14 +31,14 @@ public:
|
|||
bool processHeaderData(unsigned char* bytes);
|
||||
|
||||
bool processVDMode1Data(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||
unsigned int processVDMode1Audio(unsigned char* bytes, unsigned int count);
|
||||
unsigned int processVDMode1Audio(unsigned char* bytes);
|
||||
|
||||
bool processVDMode2Data(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||
unsigned int processVDMode2Audio(unsigned char* bytes, unsigned int count);
|
||||
unsigned int processVDMode2Audio(unsigned char* bytes);
|
||||
|
||||
bool processDataFRModeData(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||
|
||||
unsigned int processVoiceFRModeAudio(unsigned char* bytes, unsigned int count);
|
||||
unsigned int processVoiceFRModeAudio(unsigned char* bytes);
|
||||
|
||||
unsigned char* getSource();
|
||||
unsigned char* getDest();
|
||||
|
|
Loading…
Reference in a new issue