From a0fd7f15aae999d428562cacf062e9063504ec81 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Thu, 16 Jul 2020 15:20:52 -0700 Subject: [PATCH] 2 new config params, better new stream msg, CYsfNodeDir not derived from std::map --- radmin | 4 +++- rconfig | 28 +++++++++++++++++++++++++++- src/creflector.cpp | 6 ++---- src/cysfnodedir.h | 15 +++++++++++---- src/cysfutils.h | 10 ---------- src/main.h | 5 +++-- 6 files changed, 46 insertions(+), 22 deletions(-) diff --git a/radmin b/radmin index 71ffc4f..e361db6 100755 --- a/radmin +++ b/radmin @@ -107,6 +107,8 @@ ambserv='/etc/systemd/system/ambed.service' #ip6addr='none' tcaddress='none' #tcmodules='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +#ysfenable=false +#ysfmodule='D' g3support=false #dbsupport=false @@ -128,7 +130,7 @@ do ps -aux | grep -e xlxd -e xrfd -e ambed | grep -v grep fi echo - echo " Reflector Administration, Version #200715" + echo " Reflector Administration, Version #200716" echo echo "ls : List the configuration file" echo "cl : Clean (remove) compiled objects and executables" diff --git a/rconfig b/rconfig index e25744c..a24a379 100755 --- a/rconfig +++ b/rconfig @@ -69,6 +69,8 @@ WriteMemFile () { [ -z ${ip6addr+x} ] || echo "ip6addr='$ip6addr'" >> $file [ -z ${tcaddress+x} ] || echo "tcaddress='$tcaddress'" >> $file [ -z ${tcmodules+x} ] || echo "tcmodules='$tcmodules'" >> $file + [ -z ${ysfenable+x} ] || echo "ysfenable=$ysfenable" >> $file + [ -z ${ysfmodule+x} ] || echo "ysfmodule='$ysfmodule'" >> $file [ -z ${g3support+x} ] || echo "g3support=$g3support" >> $file [ -z ${dbsupport+x} ] || echo "dbsupport=$dbsupport" >> $file } @@ -96,6 +98,16 @@ WriteSRCHFile () { echo "#define TRANSCODED_MODULES \"${tcmodules}\"" >> $file fi fi + if [ -z ${ysfenable+x} ]; then + echo "#define YSF_AUTOLINK_ENABLE ${ysfenable_d}" >> $file + else + echo "#define YSF_AUTOLINK_ENABLE ${ysfenable}" >> $file + fi + if [ -z ${ysfmodule+x} ]; then + echo "#define YSF_AUTOLINK_MODULE '${ysfmodule_d}'" >> $file + else + echo "#define YSF_AUTOLINK_MODULE '${ysfmodule}'" >> $file + fi if [ -z ${g3support+x} ]; then m=${g3support_d} else @@ -192,6 +204,8 @@ ip4addr_d='none' ip6addr_d='none' tcaddress_d='none' tcmodules_d='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +ysfenable_d=false +ysfmodule_d='D' g3support_d=false dbsupport_d=false @@ -229,7 +243,7 @@ while [[ "$key" != q* ]] do clear echo - echo " Reflector Configuration, Version #200715" + echo " Reflector Configuration, Version #200716" echo echo -n "cs : Reflector Callsign = "; EvaluateVar callsign{,_d} echo -n "nm : Number of Modules = "; EvaluateVar nummod{,_d} @@ -240,6 +254,12 @@ do if [ ! -z ${tcaddress+x} ]; then echo -n "tm : Transcoder Modules = "; EvaluateVar tcmodules{,_d} fi + echo -n "ye : YSF Autolink Enable = "; EvaluateVar ysfenable{,_d} + if [ ! -z ${ysfenable+x} ]; then + if [[ "$ysfenable" == true ]]; then + echo -n "ym : YSF Autolink Module = "; EvaluateVar ysfmodule{,_d} + fi + fi fi echo -n "g3 : Icom G3 Support = "; EvaluateVar g3support{,_d} echo -n "db : Debugging Support = "; EvaluateVar dbsupport{,_d} @@ -263,6 +283,10 @@ do elif [[ "$key" == i6* ]]; then ip6addr="$value" elif [[ "$key" == tc* ]]; then tcaddress="$value" elif [[ "$key" == tm* ]]; then tcmodules="${value^^}" + elif [[ "$key" == ye* ]]; then SetBooleanValue ysfenable "$value" + elif [[ "$key" == ym* ]]; then + ysfmodule="${value^^}" + ysfmodule="${ysfmodule:0:1}" elif [[ "$key" == g3* ]]; then SetBooleanValue g3support "$value" elif [[ "$key" == db* ]]; then SetBooleanValue dbsupport "$value" elif [[ "$key" == w* ]]; then @@ -276,6 +300,8 @@ do elif [[ "$value" == i6* ]]; then unset ip6addr elif [[ "$value" == tc* ]]; then unset tcaddress elif [[ "$value" == tm* ]]; then unset tcmodules + elif [[ "$value" == ye* ]]; then unset ysfenable ysfmodule + elif [[ "$value" == ym* ]]; then unset ysfmodule elif [[ "$value" == g3* ]]; then unset g3support elif [[ "$value" == db* ]]; then unset dbsupport fi diff --git a/src/creflector.cpp b/src/creflector.cpp index f7da52c..7dc1a09 100644 --- a/src/creflector.cpp +++ b/src/creflector.cpp @@ -234,8 +234,7 @@ CPacketStream *CReflector::OpenStream(CDvHeaderPacket *DvHeader, CClient *client stream->Push(DvHeader); // report - std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() - << " with sid " << DvHeader->GetStreamId() << std::endl; + std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() << " with sid " << DvHeader->GetStreamId() << " by user " << DvHeader->GetMyCallsign() << std::endl; // notify g_Reflector.OnStreamOpen(stream->GetUserCallsign()); @@ -248,8 +247,7 @@ CPacketStream *CReflector::OpenStream(CDvHeaderPacket *DvHeader, CClient *client else { // report - std::cout << "Detected stream loop on module " << DvHeader->GetRpt2Module() << " for client " << client->GetCallsign() - << " with sid " << DvHeader->GetStreamId() << std::endl; + std::cerr << "Detected stream loop on module " << DvHeader->GetRpt2Module() << " for client " << client->GetCallsign() << " with sid " << DvHeader->GetStreamId() << std::endl; } } } diff --git a/src/cysfnodedir.h b/src/cysfnodedir.h index 48d976c..23f9810 100644 --- a/src/cysfnodedir.h +++ b/src/cysfnodedir.h @@ -34,9 +34,6 @@ #include "cysfnode.h" //////////////////////////////////////////////////////////////////////////////////////// -// define - - // compare function for std::map::find struct CYsfNodeDirCallsignCompare @@ -48,7 +45,9 @@ struct CYsfNodeDirCallsignCompare //////////////////////////////////////////////////////////////////////////////////////// // class -class CYsfNodeDir : public std::map +using CsNodeMap = std::map; + +class CYsfNodeDir { public: // constructor @@ -71,6 +70,13 @@ public: // find bool FindFrequencies(const CCallsign &, uint32 *, uint32 *); + // pass-thru + void clear() { m_map.clear(); } + size_t size() { return m_map.size(); } + CsNodeMap::iterator find(const CCallsign &cs) { return m_map.find(cs); } + CsNodeMap::iterator end() { return m_map.end(); } + std::pair insert(const std::pair &pair) { return m_map.insert(pair); } + protected: // thread static void Thread(CYsfNodeDir *); @@ -88,6 +94,7 @@ protected: // thread std::atomic keep_running; std::thread *m_pThread; + CsNodeMap m_map; }; diff --git a/src/cysfutils.h b/src/cysfutils.h index 90a9a01..fe65394 100644 --- a/src/cysfutils.h +++ b/src/cysfutils.h @@ -34,19 +34,9 @@ class CYsfUtils { public: - // constructor - CYsfUtils() {}; - - // destructor - virtual ~CYsfUtils() {}; - // operation static void DecodeVD2Vchs(uint8 *, uint8 **); static void EncodeVD2Vch(uint8 *, uint8 *); - - -protected: - // data }; //////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/main.h b/src/main.h index ea96b43..5e67cdd 100644 --- a/src/main.h +++ b/src/main.h @@ -137,8 +137,9 @@ #define YSF_KEEPALIVE_TIMEOUT (YSF_KEEPALIVE_PERIOD*10) // in seconds #define YSF_DEFAULT_NODE_TX_FREQ 437000000 // in Hz #define YSF_DEFAULT_NODE_RX_FREQ 437000000 // in Hz -#define YSF_AUTOLINK_ENABLE 0 // 1 = enable, 0 = disable auto-link -#define YSF_AUTOLINK_MODULE 'B' // module for client to auto-link to +// the following two defines are now in configure.h +// #define YSF_AUTOLINK_ENABLE 0 // 1 = enable, 0 = disable auto-link +// #define YSF_AUTOLINK_MODULE 'B' // module for client to auto-link to #endif #ifndef NO_G3