diff --git a/Conf.cpp b/Conf.cpp index 72dcc2d..6d620e7 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -62,6 +62,7 @@ m_dmrNetwork1Local(0U), m_dmrNetwork1Password(), m_dmrNetwork1Options(), m_dmrNetwork1Debug(false), +m_dmrNetwork1Location(true), m_dmrNetwork1TGRewrites(), m_dmrNetwork1PCRewrites(), m_dmrNetwork1TypeRewrites(), @@ -76,6 +77,7 @@ m_dmrNetwork2Port(0U), m_dmrNetwork2Local(0U), m_dmrNetwork2Password(), m_dmrNetwork2Options(), +m_dmrNetwork2Location(true), m_dmrNetwork2Debug(false), m_dmrNetwork2TGRewrites(), m_dmrNetwork2PCRewrites(), @@ -213,6 +215,8 @@ bool CConf::read() m_dmrNetwork1Password = value; else if (::strcmp(key, "Options") == 0) m_dmrNetwork1Options = value; + else if (::strcmp(key, "Location") == 0) + m_dmrNetwork1Location = ::atoi(value) == 1; else if (::strcmp(key, "Debug") == 0) m_dmrNetwork1Debug = ::atoi(value) == 1; else if (::strcmp(key, "TGRewrite") == 0) { @@ -297,6 +301,8 @@ bool CConf::read() m_dmrNetwork2Password = value; else if (::strcmp(key, "Options") == 0) m_dmrNetwork2Options = value; + else if (::strcmp(key, "Location") == 0) + m_dmrNetwork2Location = ::atoi(value) == 1; else if (::strcmp(key, "Debug") == 0) m_dmrNetwork2Debug = ::atoi(value) == 1; else if (::strcmp(key, "TGRewrite") == 0) { @@ -540,6 +546,11 @@ std::string CConf::getDMRNetwork1Options() const return m_dmrNetwork1Options; } +bool CConf::getDMRNetwork1Location() const +{ + return m_dmrNetwork1Location; +} + bool CConf::getDMRNetwork1Debug() const { return m_dmrNetwork1Debug; @@ -618,6 +629,11 @@ std::string CConf::getDMRNetwork2Options() const return m_dmrNetwork2Options; } +bool CConf::getDMRNetwork2Location() const +{ + return m_dmrNetwork2Location; +} + bool CConf::getDMRNetwork2Debug() const { return m_dmrNetwork2Debug; diff --git a/Conf.h b/Conf.h index a438903..b4c2801 100644 --- a/Conf.h +++ b/Conf.h @@ -91,6 +91,7 @@ public: unsigned int getDMRNetwork1Local() const; std::string getDMRNetwork1Password() const; std::string getDMRNetwork1Options() const; + bool getDMRNetwork1Location() const; bool getDMRNetwork1Debug() const; std::vector getDMRNetwork1TGRewrites() const; std::vector getDMRNetwork1PCRewrites() const; @@ -108,6 +109,7 @@ public: unsigned int getDMRNetwork2Local() const; std::string getDMRNetwork2Password() const; std::string getDMRNetwork2Options() const; + bool getDMRNetwork2Location() const; bool getDMRNetwork2Debug() const; std::vector getDMRNetwork2TGRewrites() const; std::vector getDMRNetwork2PCRewrites() const; @@ -156,6 +158,7 @@ private: unsigned int m_dmrNetwork1Local; std::string m_dmrNetwork1Password; std::string m_dmrNetwork1Options; + bool m_dmrNetwork1Location; bool m_dmrNetwork1Debug; std::vector m_dmrNetwork1TGRewrites; std::vector m_dmrNetwork1PCRewrites; @@ -172,6 +175,7 @@ private: unsigned int m_dmrNetwork2Local; std::string m_dmrNetwork2Password; std::string m_dmrNetwork2Options; + bool m_dmrNetwork2Location; bool m_dmrNetwork2Debug; std::vector m_dmrNetwork2TGRewrites; std::vector m_dmrNetwork2PCRewrites; diff --git a/DMRGateway.cpp b/DMRGateway.cpp index 847b95b..e1ab9ef 100644 --- a/DMRGateway.cpp +++ b/DMRGateway.cpp @@ -416,7 +416,6 @@ int CDMRGateway::run() } m_xlxReflector = m_xlxRoom; - if (voice != NULL) { if (m_xlxReflector < 4001U || m_xlxReflector > 4026U) voice->unlinked(); @@ -830,6 +829,7 @@ bool CDMRGateway::createDMRNetwork1() unsigned int local = m_conf.getDMRNetwork1Local(); unsigned int id = m_conf.getDMRNetwork1Id(); std::string password = m_conf.getDMRNetwork1Password(); + bool location = m_conf.getDMRNetwork1Location(); bool debug = m_conf.getDMRNetwork1Debug(); m_dmr1Name = m_conf.getDMRNetwork1Name(); @@ -845,6 +845,7 @@ bool CDMRGateway::createDMRNetwork1() LogInfo(" Local: %u", local); else LogInfo(" Local: random"); + LogInfo(" Location Data: %s", location ? "yes" : "no"); m_dmrNetwork1 = new CDMRNetwork(address, port, local, id, password, m_dmr1Name, debug); @@ -860,6 +861,9 @@ bool CDMRGateway::createDMRNetwork1() unsigned char config[400U]; unsigned int len = m_repeater->getConfig(config); + if (!location) + ::memcpy(config + 30U, "0.00000000.000000", 17U); + m_dmrNetwork1->setConfig(config, len); bool ret = m_dmrNetwork1->open(); @@ -952,6 +956,7 @@ bool CDMRGateway::createDMRNetwork2() unsigned int local = m_conf.getDMRNetwork2Local(); unsigned int id = m_conf.getDMRNetwork2Id(); std::string password = m_conf.getDMRNetwork2Password(); + bool location = m_conf.getDMRNetwork2Location(); bool debug = m_conf.getDMRNetwork2Debug(); m_dmr2Name = m_conf.getDMRNetwork2Name(); @@ -967,6 +972,7 @@ bool CDMRGateway::createDMRNetwork2() LogInfo(" Local: %u", local); else LogInfo(" Local: random"); + LogInfo(" Location Data: %s", location ? "yes" : "no"); m_dmrNetwork2 = new CDMRNetwork(address, port, local, id, password, m_dmr2Name, debug); @@ -982,6 +988,9 @@ bool CDMRGateway::createDMRNetwork2() unsigned char config[400U]; unsigned int len = m_repeater->getConfig(config); + if (!location) + ::memcpy(config + 30U, "0.00000000.000000", 17U); + m_dmrNetwork2->setConfig(config, len); bool ret = m_dmrNetwork2->open(); diff --git a/DMRGateway.ini b/DMRGateway.ini index 3387b9d..c7506f8 100644 --- a/DMRGateway.ini +++ b/DMRGateway.ini @@ -53,6 +53,7 @@ SrcRewrite=2,4000,2,9,1001 PassAllPC=1 PassAllPC=2 Password=PASSWORD +Location=1 Debug=0 # DMR+ @@ -72,4 +73,5 @@ PCRewrite=2,84000,2,4000,1001 PassAllTG=1 PassAllTG=2 Password=PASSWORD +Location=0 Debug=0 diff --git a/DMRGateway.vcxproj b/DMRGateway.vcxproj index 2cb8e1b..ef04032 100644 --- a/DMRGateway.vcxproj +++ b/DMRGateway.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -22,32 +22,32 @@ {862A3182-C71A-4B01-B58D-5F0725927A56} Win32Proj DMRGateway - 8.1 + 10.0.15063.0 Application true - v140 + v141 Unicode Application false - v140 + v141 true Unicode Application true - v140 + v141 Unicode Application false - v140 + v141 true Unicode