Allow more control over NXDN networking.

This commit is contained in:
Jonathan Naylor
2018-03-12 20:55:53 +00:00
parent 6fe81109fd
commit 98a31e8d20
7 changed files with 64 additions and 22 deletions

View File

@@ -28,14 +28,18 @@
const unsigned int BUFFER_LENGTH = 200U;
CNXDNNetwork::CNXDNNetwork(const std::string& address, bool debug) :
m_socket("", NXCORE_ICOM_PORT),
CNXDNNetwork::CNXDNNetwork(const std::string& localAddress, unsigned int localPort, const std::string& gatewayAddress, unsigned int gatewayPort, bool debug) :
m_socket(localAddress, localPort),
m_address(),
m_port(gatewayPort),
m_debug(debug),
m_enabled(false),
m_buffer(1000U, "NXDN Network")
{
m_address = CUDPSocket::lookup(address);
assert(gatewayPort > 0U);
assert(!gatewayAddress.empty());
m_address = CUDPSocket::lookup(gatewayAddress);
}
CNXDNNetwork::~CNXDNNetwork()
@@ -77,7 +81,7 @@ bool CNXDNNetwork::write(const unsigned char* data, bool single)
if (m_debug)
CUtils::dump(1U, "NXDN Network Data Sent", buffer, 102U);
return m_socket.write(buffer, 102U, m_address, NXCORE_ICOM_PORT);
return m_socket.write(buffer, 102U, m_address, m_port);
}
void CNXDNNetwork::clock(unsigned int ms)
@@ -91,8 +95,8 @@ void CNXDNNetwork::clock(unsigned int ms)
return;
// Check if the data is for us
if (m_address.s_addr != address.s_addr || port != NXCORE_ICOM_PORT) {
LogMessage("NXDN packet received from an invalid source, %08X != %08X and/or %u != %u", m_address.s_addr, address.s_addr, NXCORE_ICOM_PORT, port);
if (m_address.s_addr != address.s_addr || port != m_port) {
LogMessage("NXDN packet received from an invalid source, %08X != %08X and/or %u != %u", m_address.s_addr, address.s_addr, m_port, port);
return;
}