From 32c9e0ce8fb9a0d90a45de8423d21f607235ae03 Mon Sep 17 00:00:00 2001 From: narspt Date: Tue, 13 Jul 2021 00:48:43 +0100 Subject: [PATCH] allow YSF clients to change linked module by DG-ID --- src/cysfprotocol.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/cysfprotocol.cpp b/src/cysfprotocol.cpp index f0573a3..7b49a8a 100644 --- a/src/cysfprotocol.cpp +++ b/src/cysfprotocol.cpp @@ -132,6 +132,19 @@ void CYsfProtocol::Task(void) //std::cout << "YSF DV header:" << std::endl << *Header << std::endl; //std::cout << "YSF DV header:" << std::endl; + // handle changing linked module by DG-ID + if ( (Fich.getSQ() >= 1) && (Fich.getSQ() <= NB_OF_MODULES) ) { + char cModule = 'A' + (char)(Fich.getSQ() - 1); + CClient *client = g_Reflector.GetClients()->FindClient(Ip, PROTOCOL_YSF); + if ( client != NULL ) { + if ( client->GetReflectorModule() != cModule ) { + std::cout << "YSF client " << client->GetCallsign() << " linking by DG-ID on module " << cModule << std::endl; + client->SetReflectorModule(cModule); + } + } + g_Reflector.ReleaseClients(); + } + // node linked and callsign muted? if ( g_GateKeeper.MayTransmit(Header->GetMyCallsign(), Ip, PROTOCOL_YSF, Header->GetRpt2Module()) ) {