implement proper LDU2 encode/decode; implement proper HDU (Header) encode/decode

This commit is contained in:
Bryan Biedenkapp
2018-10-03 23:06:56 -04:00
parent f5a70aa6ce
commit 85bc8357aa
6 changed files with 433 additions and 108 deletions

View File

@@ -208,9 +208,24 @@ bool CP25Control::writeModem(unsigned char* data, unsigned int len)
m_rssiCount++;
}
if (duid == P25_DUID_LDU1) {
if (duid == P25_DUID_HEADER) {
if (m_rfState == RS_RF_LISTENING) {
m_rfData.reset();
bool ret = m_rfData.decodeHeader(data + 2U);
if (!ret) {
m_lastDUID = duid;
return false;
}
LogMessage("P25, received RF header");
m_lastDUID = duid;
return true;
}
}
else if (duid == P25_DUID_LDU1) {
if (m_rfState == RS_RF_LISTENING) {
//m_rfData.reset();
bool ret = m_rfData.decodeLDU1(data + 2U);
if (!ret) {
m_lastDUID = duid;
@@ -262,6 +277,11 @@ bool CP25Control::writeModem(unsigned char* data, unsigned int len)
}
if (m_rfState == RS_RF_AUDIO) {
bool ret = m_rfData.decodeLDU1(data + 2U);
if (!ret) {
return false;
}
// Regenerate Sync
CSync::addP25Sync(data + 2U);
@@ -306,6 +326,11 @@ bool CP25Control::writeModem(unsigned char* data, unsigned int len)
}
} else if (duid == P25_DUID_LDU2) {
if (m_rfState == RS_RF_AUDIO) {
bool ret = m_rfData.decodeLDU2(data + 2U);
if (!ret) {
return false;
}
writeNetwork(m_rfLDU, m_lastDUID, false);
// Regenerate Sync