cleanup implementation;

pull/12/head
Bryan Biedenkapp 4 years ago
parent 7a73a93cdf
commit 71c18d9aa9

@ -158,9 +158,9 @@ void TrunkPacket::resetNet()
/// </summary>
/// <param name="data">Buffer containing data frame.</param>
/// <param name="len">Length of data frame.</param>
/// <param name="blockData">Flag indicating the data parameter contains raw TSBK data.</param>
/// <param name="blockData">Flag indicating the TSBK data is pre-decoded TSBK data.</param>
/// <returns></returns>
bool TrunkPacket::process(uint8_t* data, uint32_t len, bool blockData)
bool TrunkPacket::process(uint8_t* data, uint32_t len, bool mbtDecoded)
{
assert(data != NULL);
@ -168,7 +168,7 @@ bool TrunkPacket::process(uint8_t* data, uint32_t len, bool blockData)
return false;
uint8_t duid = 0U;
if (!blockData) {
if (!mbtDecoded) {
// Decode the NID
bool valid = m_p25->m_nid.decode(data + 2U);
@ -190,17 +190,19 @@ bool TrunkPacket::process(uint8_t* data, uint32_t len, bool blockData)
m_p25->m_queue.clear();
// special case to avoid resetting the TSBK state and handle MBTs (this is a horrible hack)
if (len > 1U && !blockData) {
if (!mbtDecoded) {
resetRF();
resetNet();
bool ret = m_rfTSBK.decode(data + 2U);
if (!ret) {
LogWarning(LOG_RF, P25_TSDU_STR ", undecodable LC");
m_p25->m_rfState = prevRfState;
return false;
}
}
resetNet();
bool ret = m_rfTSBK.decode(data + 2U);
if (!ret) {
LogWarning(LOG_RF, P25_TSDU_STR ", undecodable LC");
m_p25->m_rfState = prevRfState;
return false;
else {
resetNet();
}
uint32_t srcId = m_rfTSBK.getSrcId();

@ -63,7 +63,7 @@ namespace p25
void resetNet();
/// <summary>Process a data frame from the RF interface.</summary>
bool process(uint8_t* data, uint32_t len, bool blockData = false);
bool process(uint8_t* data, uint32_t len, bool mbtDecoded = false);
/// <summary>Process a data frame from the network.</summary>
bool processNetwork(uint8_t* data, uint32_t len, lc::LC& control, data::LowSpeedData& lsd, uint8_t& duid);

@ -188,20 +188,10 @@ bool TSBK::decodeMBT(const data::DataHeader dataHeader, data::DataBlock block)
uint8_t pduBlock[P25_PDU_UNCONFIRMED_LENGTH_BYTES];
uint32_t len = block.getData(pduBlock);
if (len != P25_PDU_UNCONFIRMED_LENGTH_BYTES) {
m_decodedMBT = false;
LogError(LOG_P25, "TSBK::decode(), failed to read PDU data block");
LogError(LOG_P25, "TSBK::decodeMBT(), failed to read PDU data block");
return false;
}
/*
bool ret = block.decode(pduBlock, dataHeader);
if (!ret) {
m_decodedMBT = false;
LogError(LOG_P25, "TSBK::decode(), failed to decode PDU data block");
return false;
}
*/
m_lco = dataHeader.getAMBTOpcode(); // LCO
m_lastBlock = true;
m_mfId = dataHeader.getMFId(); // Mfg Id.
@ -279,7 +269,6 @@ bool TSBK::decodeMBT(const data::DataHeader dataHeader, data::DataBlock block)
break;
}
m_decodedMBT = true;
return true;
}
@ -290,11 +279,6 @@ bool TSBK::decodeMBT(const data::DataHeader dataHeader, data::DataBlock block)
/// <returns>True, if TSBK was decoded, otherwise false.</returns>
bool TSBK::decode(const uint8_t* data)
{
if (!m_decodedMBT) {
m_decodedMBT = false;
return true;
}
assert(data != NULL);
// deinterleave

Loading…
Cancel
Save

Powered by TurnKey Linux.