From 1bc7927cb13325702953ff24c5d624399633d518 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Sun, 20 Feb 2022 10:22:11 -0700 Subject: [PATCH] YSFReflector Registry name and desc now in rconfig --- rconfig | 47 +++++++++++++++++++++++++++++---------- reflector/Main.h | 8 +++---- reflector/YSFProtocol.cpp | 27 ++++++++++++---------- 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/rconfig b/rconfig index 1cfd98c..55affec 100755 --- a/rconfig +++ b/rconfig @@ -159,6 +159,8 @@ WriteMemFile () [ -z ${ysflocaldb+x} ] || echo "ysflocaldb=$ysflocaldb" >> $file [ -z ${ysfdbname+x} ] || echo "ysfdbname='$ysfdbname'" >> $file [ -z ${ysfdbuser+x} ] || echo "ysfdbuser='$ysfdbuser'" >> $file + [ -z ${ysfrname+x} ] || echo "ysfrname='$ysfrname'" >> $file + [ -z ${ysfrdesc+x} ] || echo "ysfrdesc='$ysfrdesc'" >> $file [ -z ${ysfdbpw+x} ] || echo "ysfdbpw='$ysfdbpw'" >> $file [ -z ${g3support+x} ] || echo "g3support=$g3support" >> $file [ -z ${dbsupport+x} ] || echo "dbsupport=$dbsupport" >> $file @@ -202,6 +204,12 @@ WriteSRCHFile () else echo '#define YSF_DB_SUPPORT false' >> $file fi + if [ ! -z ${ysfrname+x} ]; then + echo "#define YSF_REFLECTOR_NAME \"$ysfrname\"" >> $file + fi + if [ ! -z ${ysfrdesc+x} ]; then + echo "#define YSF_REFLECTOR_DESCRIPTION \"$ysfrdesc\"" >> $file + fi if [ ! -z ${tcaddress+x} ]; then echo "#define TRANSCODER_IP \"${tcaddress}\"" >> $file echo "#define TRANSCODED_MODULES \"${tcmodules}\"" >> $file @@ -361,6 +369,19 @@ tcdm='../tcd/configure.mk' ysfs='wiresx/configure.php' dbcr='configure.sql' urfserv='/etc/systemd/system/urfd.service' + +# expert mode +if [[ "$1" == ex* ]]; then + expertmode="expertMode" +fi + +if [ -e reflector.cfg ]; then + source reflector.cfg +else + echo 'No configuration file found...' + sleep 1 +fi + # default values callsign_d='CHNGME' modules_d='ABCF' @@ -375,18 +396,12 @@ ysflocaldb_d=false ysfdbname_d='' ysfdbuser_d='' ysfdbpw_d='' - -# expert mode -if [[ "$1" == ex* ]]; then - expertmode="expertMode" -fi - -if [ -e reflector.cfg ]; then - source reflector.cfg +if [ -z ${callsign+x} ];then + ysfrname_d="$callsign_d" else - echo 'No configuration file found...' - sleep 1 + ysfrname_d="$callsign" fi +ysfrdesc_d='URF Reflector' if [ -z ${expertmode+x} ]; then if [ -e $urfserv ]; then @@ -408,7 +423,7 @@ while [[ "$key" != q* ]] do clear echo - echo " Reflector Configuration, Version #220119" + echo " Reflector Configuration, Version #220220" echo echo " ******* REFLECTOR ********" echo -n "cs : Reflector Callsign = "; EvaluateVar callsign{,_d} @@ -436,6 +451,9 @@ do echo -n "yu : YSF Database User = "; EvaluateVar ysfdbuser{,_d} echo -n "yp : YSF Database Password = "; EvaluateVar ysfdbpw{,_d} fi + echo " ******* YSFReflector Registry *******" + echo -n "rn : Registry Name = "; EvaluateVar ysfrname{,_d} + echo -n "rd : Registry Description = "; EvaluateVar ysfrdesc{,_d} echo " ******* DEBUGGING ********" echo -n "db : Debugging Support = "; EvaluateVar dbsupport{,_d} echo @@ -445,11 +463,12 @@ do echo "q : Quit without saving" echo "u : Unset the value of (revert to the default value)." echo - read -p "Please input - omit value to toggle a true/false : " key value garbage + read -p "Please input - omit value to toggle a true/false : " key value if [[ "$key" == cs* && ${value^^} == URF* ]]; then callsign="${value^^}" callsign="${callsign:0:6}" + ysfrname_d="${callsign}" unset tcaddress tcmodules ysf{autolink,module,localdb,dbname,dbuser,dbpw} elif [[ "$key" == am* ]]; then CheckModules "${value^^}" elif [[ "$key" == i4* ]]; then ip4addr="$value" @@ -466,6 +485,8 @@ do elif [[ "$key" == yd* ]]; then ysfdbname="$value" elif [[ "$key" == yu* ]]; then ysfdbuser="$value" elif [[ "$key" == yp* ]]; then ysfdbpw="$value" + elif [[ "$key" == rn* ]]; then ysfrname="${value:0:16}" + elif [[ "$key" == rd* ]]; then ysfrdesc="${value:0:14}" elif [[ "$key" == w* ]]; then WriteCFGFiles ListCFGFiles @@ -485,6 +506,8 @@ do elif [[ "$value" == yd* ]]; then unset ysfdbname elif [[ "$value" == yu* ]]; then unset ysfdbuser elif [[ "$value" == yp* ]]; then unset ysfdbpw + elif [[ "$value" == rn* ]]; then unset ysfrname + elif [[ "$value" == rd* ]]; then unset ysfrdesc fi fi done diff --git a/reflector/Main.h b/reflector/Main.h index e778aac..a9bc503 100644 --- a/reflector/Main.h +++ b/reflector/Main.h @@ -63,7 +63,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 0 -#define VERSION_REVISION 3 +#define VERSION_REVISION 4 // global ------------------------------------------------------ @@ -133,9 +133,9 @@ enum class EProtocol { any, none, dextra, dplus, dcs, bm, urf, dmrplus, dmrmmdvm #define YSF_DEFAULT_NODE_TX_FREQ 445500000 // in Hz #define YSF_DEFAULT_NODE_RX_FREQ 445500000 // in Hz //#define YSF_REFLECTOR_ID 12345 // 5 digit YSF ID, assigned by registry when not defined -//#define YSF_REFLECTOR_NAME "XLX000" // Max 16 characters, use reflector callsign when not defined -#define YSF_REFLECTOR_DESCRIPTION "XLX reflector" // Max 14 characters -// the following two defines are now in configure.h +// the following 4 defines are now in configure.h +//#define YSF_REFLECTOR_NAME "URF000" // Max 16 characters, use reflector callsign when not defined +//#define YSF_REFLECTOR_DESCRIPTION "XLX reflector" // Max 14 characters // #define YSF_AUTOLINK_ENABLE 0 // 1 = enable, 0 = disable auto-link // #define YSF_AUTOLINK_MODULE 'B' // module for client to auto-link to diff --git a/reflector/YSFProtocol.cpp b/reflector/YSFProtocol.cpp index b825282..eb261aa 100644 --- a/reflector/YSFProtocol.cpp +++ b/reflector/YSFProtocol.cpp @@ -422,13 +422,13 @@ bool CYsfProtocol::IsValidDvHeaderPacket(const CIp &Ip, const CYSFFICH &Fich, co char sz[YSF_CALLSIGN_LENGTH+1]; memcpy(sz, &(Buffer.data()[14]), YSF_CALLSIGN_LENGTH); sz[YSF_CALLSIGN_LENGTH] = 0; - + for(uint32_t i = 0; i < YSF_CALLSIGN_LENGTH; ++i){ if( (sz[i] == '/') || (sz[i] == '\\') || (sz[i] == '-') || (sz[i] == ' ') ){ sz[i] = 0; } } - + csMY = CCallsign((const char *)sz); memcpy(sz, &(Buffer.data()[4]), YSF_CALLSIGN_LENGTH); sz[YSF_CALLSIGN_LENGTH] = 0; @@ -475,17 +475,17 @@ bool CYsfProtocol::IsValidDvFramePacket(const CIp &Ip, const CYSFFICH &Fich, con uint8_t ambe4[9]; uint8_t *ambes[5] = { ambe0, ambe1, ambe2, ambe3, ambe4 }; CYsfUtils::DecodeVD2Vchs((unsigned char *)&(Buffer.data()[35]), ambes); - + char sz[YSF_CALLSIGN_LENGTH+1]; ::memcpy(sz, &(Buffer.data()[14]), YSF_CALLSIGN_LENGTH); sz[YSF_CALLSIGN_LENGTH] = 0; - + for(uint32_t i = 0; i < YSF_CALLSIGN_LENGTH; ++i){ if( (sz[i] == '/') || (sz[i] == '\\') || (sz[i] == '-') || (sz[i] == ' ') ){ sz[i] = 0; } } - + CCallsign csMY = CCallsign((const char *)sz); // get DV frames @@ -515,19 +515,19 @@ bool CYsfProtocol::IsValidDvLastFramePacket(const CIp &Ip, const CYSFFICH &Fich, { uint8_t uiAmbe[9]; memset(uiAmbe, 0x00, sizeof(uiAmbe)); - + char sz[YSF_CALLSIGN_LENGTH+1]; ::memcpy(sz, &(Buffer.data()[14]), YSF_CALLSIGN_LENGTH); sz[YSF_CALLSIGN_LENGTH] = 0; - + for(uint32_t i = 0; i < YSF_CALLSIGN_LENGTH; ++i){ if( (sz[i] == '/') || (sz[i] == '\\') || (sz[i] == '-') || (sz[i] == ' ') ){ sz[i] = 0; } } - + CCallsign csMY = CCallsign((const char *)sz); - + oneframe = std::unique_ptr(new CDvFramePacket(uiAmbe, uiStreamId, Fich.getFN(), 0, 0, csMY, false)); lastframe = std::unique_ptr(new CDvFramePacket(uiAmbe, uiStreamId, Fich.getFN(), 1, 0, csMY, true)); } @@ -889,14 +889,17 @@ bool CYsfProtocol::EncodeServerStatusPacket(CBuffer *Buffer) const uint8_t tag[] = { 'Y','S','F','S' }; uint8_t description[14]; uint8_t callsign[16]; - std::string desc = YSF_REFLECTOR_DESCRIPTION; - +#ifdef YSF_REFLECTOR_DESCRIPTION + const std::string desc = YSF_REFLECTOR_DESCRIPTION; +#else + const std::string desc("URF Reflector"); +#endif // tag Buffer->Set(tag, sizeof(tag)); // hash memset(callsign, ' ', sizeof(callsign)); #ifdef YSF_REFLECTOR_NAME - std::string cs = YSF_REFLECTOR_NAME; + const std::string cs = YSF_REFLECTOR_NAME; memcpy(callsign, cs.c_str(), cs.size() > 16 ? 16 : cs.size()); #else g_Reflector.GetCallsign().GetCallsign(callsign);