always reset states regardless of RS_NET_IDLE when performing a netTGHang resolution; be more verbose about network watchdog timeouts;

pull/128/head
Bryan Biedenkapp 3 months ago
parent 3324b67bc8
commit c3f337489f

@ -999,17 +999,18 @@ void Control::clock()
}
}
if (m_netState != RS_NET_IDLE) {
if (m_network != nullptr)
m_network->resetP25();
m_voice->resetNet();
m_data->resetReceivedBlocks();
m_netState = RS_NET_IDLE;
m_tailOnIdle = true;
m_netTimeoutTimer.stop();
m_netTimeout = false;
}
if (m_network != nullptr)
m_network->resetP25();
m_netState = RS_NET_IDLE;
m_tailOnIdle = true;
m_voice->resetNet();
m_data->resetReceivedBlocks();
m_netTimeoutTimer.stop();
m_netTimeout = false;
m_networkWatchdog.stop();
m_netLastDstId = 0U;
m_netLastSrcId = 0U;
@ -1044,11 +1045,14 @@ void Control::clock()
if (m_networkWatchdog.hasExpired() && !(m_netState == RS_NET_IDLE && m_rfState != RS_RF_LISTENING)) {
if (m_netState == RS_NET_AUDIO) {
if (m_voice->m_netFrames > 0.0F) {
::LogWarning(LOG_NET, "network watchdog has expired, %.1f seconds, %u%% packet loss",
float(m_voice->m_netFrames) / 50.0F, (m_voice->m_netLost * 100U) / m_voice->m_netFrames);
::ActivityLog("P25", false, "network watchdog has expired, %.1f seconds, %u%% packet loss",
float(m_voice->m_netFrames) / 50.0F, (m_voice->m_netLost * 100U) / m_voice->m_netFrames);
}
}
else {
::LogWarning(LOG_NET, "network watchdog has expired");
::ActivityLog("P25", false, "network watchdog has expired");
}

@ -735,6 +735,8 @@ bool ControlSignaling::processNetwork(uint8_t* data, uint32_t len, lc::LC& contr
switch (duid) {
case DUID::TSDU:
if (m_p25->m_netState == RS_NET_IDLE) {
m_p25->m_networkWatchdog.stop();
std::unique_ptr<lc::TSBK> tsbk = TSBKFactory::createTSBK(data);
if (tsbk == nullptr) {
return false;

Loading…
Cancel
Save

Powered by TurnKey Linux.