diff --git a/NXDNGateway/Conf.cpp b/NXDNGateway/Conf.cpp index 3b10d1c..c0c704d 100644 --- a/NXDNGateway/Conf.cpp +++ b/NXDNGateway/Conf.cpp @@ -56,6 +56,8 @@ m_networkHosts2(), m_networkReloadTime(0U), m_networkParrotAddress("127.0.0.1"), m_networkParrotPort(0U), +m_networkNXDN2DMRAddress("127.0.0.1"), +m_networkNXDN2DMRPort(0U), m_networkStartup(9999U), m_networkInactivityTimeout(0U), m_networkDebug(false) @@ -149,6 +151,10 @@ bool CConf::read() m_networkParrotAddress = value; else if (::strcmp(key, "ParrotPort") == 0) m_networkParrotPort = (unsigned int)::atoi(value); + else if (::strcmp(key, "NXDN2DMRAddress") == 0) + m_networkNXDN2DMRAddress = value; + else if (::strcmp(key, "NXDN2DMRPort") == 0) + m_networkNXDN2DMRPort = (unsigned int)::atoi(value); else if (::strcmp(key, "Startup") == 0) m_networkStartup = (unsigned short)::atoi(value); else if (::strcmp(key, "InactivityTimeout") == 0) @@ -258,6 +264,16 @@ unsigned int CConf::getNetworkParrotPort() const return m_networkParrotPort; } +std::string CConf::getNetworkNXDN2DMRAddress() const +{ + return m_networkNXDN2DMRAddress; +} + +unsigned int CConf::getNetworkNXDN2DMRPort() const +{ + return m_networkNXDN2DMRPort; +} + unsigned short CConf::getNetworkStartup() const { return m_networkStartup; diff --git a/NXDNGateway/Conf.h b/NXDNGateway/Conf.h index 17dfb74..368c6db 100644 --- a/NXDNGateway/Conf.h +++ b/NXDNGateway/Conf.h @@ -58,6 +58,8 @@ public: unsigned int getNetworkReloadTime() const; std::string getNetworkParrotAddress() const; unsigned int getNetworkParrotPort() const; + std::string getNetworkNXDN2DMRAddress() const; + unsigned int getNetworkNXDN2DMRPort() const; unsigned short getNetworkStartup() const; unsigned int getNetworkInactivityTimeout() const; bool getNetworkDebug() const; @@ -87,6 +89,8 @@ private: unsigned int m_networkReloadTime; std::string m_networkParrotAddress; unsigned int m_networkParrotPort; + std::string m_networkNXDN2DMRAddress; + unsigned int m_networkNXDN2DMRPort; unsigned short m_networkStartup; unsigned int m_networkInactivityTimeout; bool m_networkDebug; diff --git a/NXDNGateway/NXDNGateway.cpp b/NXDNGateway/NXDNGateway.cpp index dc9939b..c48f6f2 100644 --- a/NXDNGateway/NXDNGateway.cpp +++ b/NXDNGateway/NXDNGateway.cpp @@ -184,6 +184,8 @@ void CNXDNGateway::run() CReflectors reflectors(m_conf.getNetworkHosts1(), m_conf.getNetworkHosts2(), m_conf.getNetworkReloadTime()); if (m_conf.getNetworkParrotPort() > 0U) reflectors.setParrot(m_conf.getNetworkParrotAddress(), m_conf.getNetworkParrotPort()); + if (m_conf.getNetworkNXDN2DMRPort() > 0U) + reflectors.setNXDN2DMR(m_conf.getNetworkNXDN2DMRAddress(), m_conf.getNetworkNXDN2DMRPort()); reflectors.load(); CNXDNLookup* lookup = new CNXDNLookup(m_conf.getLookupName(), m_conf.getLookupTime()); diff --git a/NXDNGateway/NXDNGateway.ini b/NXDNGateway/NXDNGateway.ini index 340eb94..1229776 100644 --- a/NXDNGateway/NXDNGateway.ini +++ b/NXDNGateway/NXDNGateway.ini @@ -26,6 +26,8 @@ HostsFile2=./private/NXDNHosts.txt ReloadTime=60 ParrotAddress=127.0.0.1 ParrotPort=42021 +NXDN2DMRAddress=127.0.0.1 +NXDN2DMRPort=42022 Startup=10200 InactivityTimeout=10 Debug=0 diff --git a/NXDNGateway/Reflectors.cpp b/NXDNGateway/Reflectors.cpp index 6ba082b..fe1f76d 100644 --- a/NXDNGateway/Reflectors.cpp +++ b/NXDNGateway/Reflectors.cpp @@ -52,6 +52,12 @@ void CReflectors::setParrot(const std::string& address, unsigned int port) m_parrotPort = port; } +void CReflectors::setNXDN2DMR(const std::string& address, unsigned int port) +{ + m_nxdn2dmrAddress = address; + m_nxdn2dmrPort = port; +} + bool CReflectors::load() { // Clear out the old reflector list @@ -131,6 +137,16 @@ bool CReflectors::load() LogInfo("Loaded NXDN parrot (TG%u)", refl->m_id); } + // Add the NXDN2DMR entry + if (m_nxdn2dmrPort > 0U) { + CNXDNReflector* refl = new CNXDNReflector; + refl->m_id = 20U; + refl->m_address = CUDPSocket::lookup(m_nxdn2dmrAddress); + refl->m_port = m_nxdn2dmrPort; + m_reflectors.push_back(refl); + LogInfo("Loaded NXDN2DMR reflector (TG%u)", refl->m_id); + } + size = m_reflectors.size(); if (size == 0U) return false; diff --git a/NXDNGateway/Reflectors.h b/NXDNGateway/Reflectors.h index d7343b6..3c3672c 100644 --- a/NXDNGateway/Reflectors.h +++ b/NXDNGateway/Reflectors.h @@ -45,6 +45,7 @@ public: ~CReflectors(); void setParrot(const std::string& address, unsigned int port); + void setNXDN2DMR(const std::string& address, unsigned int port); bool load(); @@ -57,6 +58,8 @@ private: std::string m_hostsFile2; std::string m_parrotAddress; unsigned int m_parrotPort; + std::string m_nxdn2dmrAddress; + unsigned int m_nxdn2dmrPort; std::vector m_reflectors; CTimer m_timer; };