apply network watchdog logic to data packets as well as voice;

pull/121/merge
Bryan Biedenkapp 1 month ago
parent 05d939027b
commit cf96c35758

@ -1063,6 +1063,7 @@ void Control::clock()
m_tailOnIdle = true;
m_voice->resetNet();
m_data->resetReceivedBlocks();
m_netTimeout.stop();
}

@ -400,6 +400,8 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
LogInfoEx(LOG_NET, P25_PDU_STR ", received block %u, len = %u, totalBlocks = %u",
currentBlock, blockLength, totalBlocks);
m_p25->m_networkWatchdog.start();
// store the received block
uint8_t* blockData = new uint8_t[blockLength];
::memcpy(blockData, data + 24U, blockLength);
@ -416,6 +418,7 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
bool ret = m_netAssembler->disassemble(m_netReceivedBlocks[i], blockLength, true);
if (!ret) {
m_p25->m_netState = RS_NET_IDLE;
m_p25->m_networkWatchdog.stop();
resetReceivedBlocks();
return false;
}
@ -427,6 +430,7 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
}
m_p25->m_netState = RS_NET_IDLE;
m_p25->m_networkWatchdog.stop();
resetReceivedBlocks();
return false;
}
@ -434,6 +438,7 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
// did we receive a response header?
if (m_netAssembler->dataHeader.getFormat() == PDUFormatType::RSP) {
m_p25->m_netState = RS_NET_IDLE;
m_p25->m_networkWatchdog.stop();
if (m_verbose) {
LogInfoEx(LOG_NET, P25_PDU_STR ", FNE ISP, response, fmt = $%02X, rspClass = $%02X, rspType = $%02X, rspStatus = $%02X, llId = %u, srcLlId = %u",
@ -484,6 +489,7 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
bool ret = m_netAssembler->disassemble(m_netReceivedBlocks[i], blockLength);
if (!ret) {
m_p25->m_netState = RS_NET_IDLE;
m_p25->m_networkWatchdog.stop();
resetReceivedBlocks();
return false;
}
@ -541,6 +547,7 @@ bool Data::processNetwork(uint8_t* data, uint32_t len, uint8_t currentBlock, uin
m_netPduUserDataLength = 0U;
m_p25->m_netState = RS_NET_IDLE;
m_p25->m_networkWatchdog.stop();
m_p25->m_network->resetP25();
resetReceivedBlocks();
break;

Loading…
Cancel
Save

Powered by TurnKey Linux.