Reset the layer3 data accumulator at end of transmissions.

This commit is contained in:
Jonathan Naylor 2018-02-02 07:34:59 +00:00
parent 6d0e95fb9b
commit 0f685095e5
3 changed files with 10 additions and 4 deletions

View file

@ -106,6 +106,7 @@ bool CNXDNControl::writeModem(unsigned char *data, unsigned int len)
if (type == TAG_LOST) {
m_rfState = RS_RF_LISTENING;
m_rfMask = 0x00U;
m_rfLayer3.reset();
return false;
}
@ -131,12 +132,8 @@ bool CNXDNControl::writeModem(unsigned char *data, unsigned int len)
m_rssiCount++;
}
// CUtils::dump(2U, "NXDN, raw data", data + 2U, NXDN_FRAME_LENGTH_BYTES);
scrambler(data + 2U);
// CUtils::dump(2U, "NXDN, after descrambling", data + 2U, NXDN_FRAME_LENGTH_BYTES);
CNXDNLICH lich;
bool valid = lich.decode(data + 2U);
@ -200,6 +197,7 @@ bool CNXDNControl::processVoice(unsigned char usc, unsigned char option, unsigne
if (m_rfState != RS_RF_AUDIO) {
m_rfState = RS_RF_LISTENING;
m_rfMask = 0x00U;
m_rfLayer3.reset();
return false;
}
} else {
@ -748,6 +746,7 @@ void CNXDNControl::writeEndRF()
m_rfState = RS_RF_LISTENING;
m_rfMask = 0x00U;
m_rfLayer3.reset();
m_rfTimeoutTimer.stop();

View file

@ -106,6 +106,11 @@ void CNXDNLayer3::getData(unsigned char* data) const
::memcpy(data, m_data, 22U);
}
void CNXDNLayer3::reset()
{
::memset(m_data, 0x00U, 22U);
}
CNXDNLayer3& CNXDNLayer3::operator=(const CNXDNLayer3& layer3)
{
if (&layer3 != this)

View file

@ -38,6 +38,8 @@ public:
void getData(unsigned char* data) const;
void reset();
CNXDNLayer3& operator=(const CNXDNLayer3& layer3);
private: