From 9289d48939b8fbe8a2ead979d69c458603b759f2 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Sat, 16 Sep 2017 14:33:04 +0100 Subject: [PATCH] Optionally suppress location information info being sent to the masters. --- Conf.cpp | 16 ++++++++++++++++ Conf.h | 4 ++++ DMRGateway.cpp | 10 ++++++++++ DMRGateway.ini | 2 ++ 4 files changed, 32 insertions(+) diff --git a/Conf.cpp b/Conf.cpp index 0e90b62..c26d126 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -63,6 +63,7 @@ m_dmrNetwork1Local(0U), m_dmrNetwork1Password(), m_dmrNetwork1Options(), m_dmrNetwork1Debug(false), +m_dmrNetwork1Location(true), m_dmrNetwork1TGRewrites(), m_dmrNetwork1PCRewrites(), m_dmrNetwork1TypeRewrites(), @@ -77,6 +78,7 @@ m_dmrNetwork2Port(0U), m_dmrNetwork2Local(0U), m_dmrNetwork2Password(), m_dmrNetwork2Options(), +m_dmrNetwork2Location(true), m_dmrNetwork2Debug(false), m_dmrNetwork2TGRewrites(), m_dmrNetwork2PCRewrites(), @@ -271,6 +273,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) { @@ -355,6 +359,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) { @@ -694,6 +700,11 @@ std::string CConf::getDMRNetwork1Options() const return m_dmrNetwork1Options; } +bool CConf::getDMRNetwork1Location() const +{ + return m_dmrNetwork1Location; +} + bool CConf::getDMRNetwork1Debug() const { return m_dmrNetwork1Debug; @@ -772,6 +783,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 f596dbb..a24a33f 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; @@ -176,6 +178,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; @@ -192,6 +195,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 226630f..fa62f9a 100644 --- a/DMRGateway.cpp +++ b/DMRGateway.cpp @@ -968,6 +968,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(); @@ -983,6 +984,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); @@ -998,6 +1000,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(); @@ -1090,6 +1095,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(); @@ -1105,6 +1111,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); @@ -1120,6 +1127,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 a904d98..2f64676 100644 --- a/DMRGateway.ini +++ b/DMRGateway.ini @@ -70,6 +70,7 @@ SrcRewrite=2,4000,2,9,1001 PassAllPC=1 PassAllPC=2 Password=PASSWORD +Location=1 Debug=0 # DMR+ @@ -89,4 +90,5 @@ PCRewrite=2,84000,2,4000,1001 PassAllTG=1 PassAllTG=2 Password=PASSWORD +Location=0 Debug=0