From 24ca3d73eacfdcfdf806c73ee5db5b096d7e963e Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sat, 16 Aug 2025 10:50:10 +0200 Subject: [PATCH] make sure reconnect from config is use after reverting from remote initiated connect. Improve logging of reconnect time. #57 --- Common/Defs.h | 18 ++++++++ Common/RemoteHandler.cpp | 8 ++-- Common/RepeaterHandler.cpp | 92 +++++++++----------------------------- Common/RepeaterHandler.h | 2 + 4 files changed, 46 insertions(+), 74 deletions(-) diff --git a/Common/Defs.h b/Common/Defs.h index 9cb2d07..01edb0c 100644 --- a/Common/Defs.h +++ b/Common/Defs.h @@ -50,6 +50,24 @@ enum RECONNECT { RECONNECT_180MINS }; +inline const char* reconnectToString(RECONNECT r) { + switch (r) { + case RECONNECT_NEVER: return "never"; + case RECONNECT_FIXED: return "fixed"; + case RECONNECT_5MINS: return "5 minutes"; + case RECONNECT_10MINS: return "10 minutes"; + case RECONNECT_15MINS: return "15 minutes"; + case RECONNECT_20MINS: return "20 minutes"; + case RECONNECT_25MINS: return "25 minutes"; + case RECONNECT_30MINS: return "30 minutes"; + case RECONNECT_60MINS: return "60 minutes"; + case RECONNECT_90MINS: return "90 minutes"; + case RECONNECT_120MINS: return "120 minutes"; + case RECONNECT_180MINS: return "180 minutes"; + default: return "unknown"; + } +} + enum DIRECTION { DIR_INCOMING, DIR_OUTGOING diff --git a/Common/RemoteHandler.cpp b/Common/RemoteHandler.cpp index 09f922f..1722ec9 100644 --- a/Common/RemoteHandler.cpp +++ b/Common/RemoteHandler.cpp @@ -95,9 +95,9 @@ void CRemoteHandler::process() RECONNECT reconnect; m_handler.readLink(callsign, reconnect, reflector); if (reflector.empty()) - CLog::logInfo("Remote control user requesting link \"%s\" to \"None\" with reconnect %d", callsign.c_str(), int(reconnect)); + CLog::logInfo("Remote control user requesting link \"%s\" to \"None\" with reconnect %s", callsign.c_str(), reconnectToString(reconnect)); else - CLog::logInfo("Remote control user requesting link \"%s\" to \"%s\" with reconnect %d", callsign.c_str(), reflector.c_str(), int(reconnect)); + CLog::logInfo("Remote control user requesting link \"%s\" to \"%s\" with reconnect %s", callsign.c_str(), reflector.c_str(), reconnectToString(reconnect)); link(callsign, reconnect, reflector, true); } break; @@ -114,9 +114,9 @@ void CRemoteHandler::process() RECONNECT reconnect; m_handler.readLinkScr(callsign, reconnect, reflector); if (reflector.empty()) - CLog::logInfo("Remote control user requesting link \"%s\" to \"None\" with reconnect %d from localhost", callsign.c_str(), reconnect); + CLog::logInfo("Remote control user requesting link \"%s\" to \"None\" with reconnect %s from localhost", callsign.c_str(), reconnectToString(reconnect)); else - CLog::logInfo("Remote control user requesting link \"%s\" to \"%s\" with reconnect %d from localhost", callsign.c_str(), reflector.c_str(), reconnect); + CLog::logInfo("Remote control user requesting link \"%s\" to \"%s\" with reconnect %s from localhost", callsign.c_str(), reflector.c_str(), reconnectToString(reconnect)); link(callsign, reconnect, reflector, false); } break; diff --git a/Common/RepeaterHandler.cpp b/Common/RepeaterHandler.cpp index df9fc2f..380c0c8 100644 --- a/Common/RepeaterHandler.cpp +++ b/Common/RepeaterHandler.cpp @@ -169,40 +169,7 @@ m_heardTimer(1000U, 0U, 100U) // 100ms m_pollTimer.start(); - switch (m_linkReconnect) { - case RECONNECT_5MINS: - m_linkReconnectTimer.start(5U * 60U); - break; - case RECONNECT_10MINS: - m_linkReconnectTimer.start(10U * 60U); - break; - case RECONNECT_15MINS: - m_linkReconnectTimer.start(15U * 60U); - break; - case RECONNECT_20MINS: - m_linkReconnectTimer.start(20U * 60U); - break; - case RECONNECT_25MINS: - m_linkReconnectTimer.start(25U * 60U); - break; - case RECONNECT_30MINS: - m_linkReconnectTimer.start(30U * 60U); - break; - case RECONNECT_60MINS: - m_linkReconnectTimer.start(60U * 60U); - break; - case RECONNECT_90MINS: - m_linkReconnectTimer.start(90U * 60U); - break; - case RECONNECT_120MINS: - m_linkReconnectTimer.start(120U * 60U); - break; - case RECONNECT_180MINS: - m_linkReconnectTimer.start(180U * 60U); - break; - default: - break; - } + setReconnectTimer(m_linkReconnect); #ifdef USE_ANNOUNCE wxFileName messageFile; @@ -1504,7 +1471,7 @@ void CRepeaterHandler::clockInt(unsigned int ms) linkInt(m_linkStartup); } - m_linkReconnectTimer.start(); + setReconnectTimer(m_linkReconnect); } // If the ircDDB query timer has expired @@ -1846,41 +1813,8 @@ void CRepeaterHandler::link(RECONNECT reconnect, const std::string& reflector) //m_linkReconnect = reconnect; m_linkReconnectTimer.stop(); - - switch (reconnect) { - case RECONNECT_5MINS: - m_linkReconnectTimer.start(5U * 60U); - break; - case RECONNECT_10MINS: - m_linkReconnectTimer.start(10U * 60U); - break; - case RECONNECT_15MINS: - m_linkReconnectTimer.start(15U * 60U); - break; - case RECONNECT_20MINS: - m_linkReconnectTimer.start(20U * 60U); - break; - case RECONNECT_25MINS: - m_linkReconnectTimer.start(25U * 60U); - break; - case RECONNECT_30MINS: - m_linkReconnectTimer.start(30U * 60U); - break; - case RECONNECT_60MINS: - m_linkReconnectTimer.start(60U * 60U); - break; - case RECONNECT_90MINS: - m_linkReconnectTimer.start(90U * 60U); - break; - case RECONNECT_120MINS: - m_linkReconnectTimer.start(120U * 60U); - break; - case RECONNECT_180MINS: - m_linkReconnectTimer.start(180U * 60U); - break; - default: - break; - } + + setReconnectTimer(reconnect); // Nothing to do if ((m_linkStatus != LS_NONE && m_linkRepeater == reflector) || @@ -3085,6 +3019,24 @@ void CRepeaterHandler::readAPRSFrame(CAPRSFrame& frame) } } +void CRepeaterHandler::setReconnectTimer(RECONNECT reconnect) +{ + CLog::logDebug("Reconnect timer set to %s", reconnectToString(reconnect)); + switch (reconnect) { + case RECONNECT_5MINS: m_linkReconnectTimer.start( 5U * 60U); break; + case RECONNECT_10MINS: m_linkReconnectTimer.start(10U * 60U); break; + case RECONNECT_15MINS: m_linkReconnectTimer.start(15U * 60U); break; + case RECONNECT_20MINS: m_linkReconnectTimer.start(20U * 60U); break; + case RECONNECT_25MINS: m_linkReconnectTimer.start(25U * 60U); break; + case RECONNECT_30MINS: m_linkReconnectTimer.start(30U * 60U); break; + case RECONNECT_60MINS: m_linkReconnectTimer.start(60U * 60U); break; + case RECONNECT_90MINS: m_linkReconnectTimer.start(90U * 60U); break; + case RECONNECT_120MINS: m_linkReconnectTimer.start(120U * 60U); break; + case RECONNECT_180MINS: m_linkReconnectTimer.start(180U * 60U); break; + default: break; + } +} + #ifdef USE_CCS bool CRepeaterHandler::isCCSCommand(const std::string& command) const { diff --git a/Common/RepeaterHandler.h b/Common/RepeaterHandler.h index c5ed834..7587472 100644 --- a/Common/RepeaterHandler.h +++ b/Common/RepeaterHandler.h @@ -317,6 +317,8 @@ private: void triggerInfo(); + void setReconnectTimer(RECONNECT reconnect); + #ifdef USE_CCS bool isCCSCommand(const std::string& command) const; #endif