Regularise the local address handling across all of the protocol.

This commit is contained in:
Jonathan Naylor 2021-04-25 11:10:35 +01:00
parent 8b45e04ea0
commit 7008c624d9
22 changed files with 158 additions and 96 deletions

View File

@ -100,6 +100,7 @@ m_modemI2CPort(),
m_modemI2CAddress(0x22U),
m_modemModemAddress(),
m_modemModemPort(0U),
m_modemLocalAddress(),
m_modemLocalPort(0U),
m_modemRXInvert(false),
m_modemTXInvert(false),
@ -233,14 +234,16 @@ m_ax25Trace(false),
m_dstarNetworkEnabled(false),
m_dstarGatewayAddress(),
m_dstarGatewayPort(0U),
m_dstarLocalAddress(),
m_dstarLocalPort(0U),
m_dstarNetworkModeHang(3U),
m_dstarNetworkDebug(false),
m_dmrNetworkEnabled(false),
m_dmrNetworkType("Gateway"),
m_dmrNetworkAddress(),
m_dmrNetworkPort(0U),
m_dmrNetworkLocal(0U),
m_dmrNetworkRemoteAddress(),
m_dmrNetworkRemotePort(0U),
m_dmrNetworkLocalAddress(),
m_dmrNetworkLocalPort(0U),
m_dmrNetworkPassword(),
m_dmrNetworkOptions(),
m_dmrNetworkDebug(false),
@ -249,8 +252,8 @@ m_dmrNetworkSlot1(true),
m_dmrNetworkSlot2(true),
m_dmrNetworkModeHang(3U),
m_fusionNetworkEnabled(false),
m_fusionNetworkMyAddress(),
m_fusionNetworkMyPort(0U),
m_fusionNetworkLocalAddress(),
m_fusionNetworkLocalPort(0U),
m_fusionNetworkGatewayAddress(),
m_fusionNetworkGatewayPort(0U),
m_fusionNetworkModeHang(3U),
@ -258,6 +261,7 @@ m_fusionNetworkDebug(false),
m_p25NetworkEnabled(false),
m_p25GatewayAddress(),
m_p25GatewayPort(0U),
m_p25LocalAddress(),
m_p25LocalPort(0U),
m_p25NetworkModeHang(3U),
m_p25NetworkDebug(false),
@ -272,6 +276,7 @@ m_nxdnNetworkDebug(false),
m_m17NetworkEnabled(false),
m_m17GatewayAddress(),
m_m17GatewayPort(0U),
m_m17LocalAddress(),
m_m17LocalPort(0U),
m_m17NetworkModeHang(3U),
m_m17NetworkDebug(false),
@ -536,6 +541,8 @@ bool CConf::read()
m_modemModemAddress = value;
else if (::strcmp(key, "ModemPort") == 0)
m_modemModemPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "LocalAddress") == 0)
m_modemLocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_modemLocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "RXInvert") == 0)
@ -897,6 +904,8 @@ bool CConf::read()
m_dstarGatewayAddress = value;
else if (::strcmp(key, "GatewayPort") == 0)
m_dstarGatewayPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "LocalAddress") == 0)
m_dstarLocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_dstarLocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "ModeHang") == 0)
@ -908,12 +917,14 @@ bool CConf::read()
m_dmrNetworkEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "Type") == 0)
m_dmrNetworkType = value;
else if (::strcmp(key, "Address") == 0)
m_dmrNetworkAddress = value;
else if (::strcmp(key, "Port") == 0)
m_dmrNetworkPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "Local") == 0)
m_dmrNetworkLocal = (unsigned short)::atoi(value);
else if (::strcmp(key, "RemoteAddress") == 0)
m_dmrNetworkRemoteAddress = value;
else if (::strcmp(key, "RemotePort") == 0)
m_dmrNetworkRemotePort = (unsigned short)::atoi(value);
else if (::strcmp(key, "LocalAddress") == 0)
m_dmrNetworkLocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_dmrNetworkLocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "Password") == 0)
m_dmrNetworkPassword = value;
else if (::strcmp(key, "Options") == 0)
@ -932,9 +943,9 @@ bool CConf::read()
if (::strcmp(key, "Enable") == 0)
m_fusionNetworkEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "LocalAddress") == 0)
m_fusionNetworkMyAddress = value;
m_fusionNetworkLocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_fusionNetworkMyPort = (unsigned short)::atoi(value);
m_fusionNetworkLocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "GatewayAddress") == 0)
m_fusionNetworkGatewayAddress = value;
else if (::strcmp(key, "GatewayPort") == 0)
@ -950,6 +961,8 @@ bool CConf::read()
m_p25GatewayAddress = value;
else if (::strcmp(key, "GatewayPort") == 0)
m_p25GatewayPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "LocalAddress") == 0)
m_p25LocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_p25LocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "ModeHang") == 0)
@ -974,6 +987,8 @@ bool CConf::read()
} else if (section == SECTION_M17_NETWORK) {
if (::strcmp(key, "Enable") == 0)
m_m17NetworkEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "LocalAddress") == 0)
m_m17LocalAddress = value;
else if (::strcmp(key, "LocalPort") == 0)
m_m17LocalPort = (unsigned short)::atoi(value);
else if (::strcmp(key, "GatewayAddress") == 0)
@ -1294,6 +1309,11 @@ unsigned short CConf::getModemModemPort() const
return m_modemModemPort;
}
std::string CConf::getModemLocalAddress() const
{
return m_modemLocalAddress;
}
unsigned short CConf::getModemLocalPort() const
{
return m_modemLocalPort;
@ -1959,6 +1979,11 @@ unsigned short CConf::getDStarGatewayPort() const
return m_dstarGatewayPort;
}
std::string CConf::getDStarLocalAddress() const
{
return m_dstarLocalAddress;
}
unsigned short CConf::getDStarLocalPort() const
{
return m_dstarLocalPort;
@ -1984,19 +2009,24 @@ std::string CConf::getDMRNetworkType() const
return m_dmrNetworkType;
}
std::string CConf::getDMRNetworkAddress() const
std::string CConf::getDMRNetworkRemoteAddress() const
{
return m_dmrNetworkAddress;
return m_dmrNetworkRemoteAddress;
}
unsigned short CConf::getDMRNetworkPort() const
unsigned short CConf::getDMRNetworkRemotePort() const
{
return m_dmrNetworkPort;
return m_dmrNetworkRemotePort;
}
unsigned short CConf::getDMRNetworkLocal() const
std::string CConf::getDMRNetworkLocalAddress() const
{
return m_dmrNetworkLocal;
return m_dmrNetworkLocalAddress;
}
unsigned short CConf::getDMRNetworkLocalPort() const
{
return m_dmrNetworkLocalPort;
}
std::string CConf::getDMRNetworkPassword() const
@ -2039,14 +2069,14 @@ bool CConf::getFusionNetworkEnabled() const
return m_fusionNetworkEnabled;
}
std::string CConf::getFusionNetworkMyAddress() const
std::string CConf::getFusionNetworkLocalAddress() const
{
return m_fusionNetworkMyAddress;
return m_fusionNetworkLocalAddress;
}
unsigned short CConf::getFusionNetworkMyPort() const
unsigned short CConf::getFusionNetworkLocalPort() const
{
return m_fusionNetworkMyPort;
return m_fusionNetworkLocalPort;
}
std::string CConf::getFusionNetworkGatewayAddress() const
@ -2084,6 +2114,11 @@ unsigned short CConf::getP25GatewayPort() const
return m_p25GatewayPort;
}
std::string CConf::getP25LocalAddress() const
{
return m_p25LocalAddress;
}
unsigned short CConf::getP25LocalPort() const
{
return m_p25LocalPort;
@ -2154,6 +2189,11 @@ unsigned short CConf::getM17GatewayPort() const
return m_m17GatewayPort;
}
std::string CConf::getM17LocalAddress() const
{
return m_m17LocalAddress;
}
unsigned short CConf::getM17LocalPort() const
{
return m_m17LocalPort;

30
Conf.h
View File

@ -77,6 +77,7 @@ public:
unsigned int getModemI2CAddress() const;
std::string getModemModemAddress() const;
unsigned short getModemModemPort() const;
std::string getModemLocalAddress() const;
unsigned short getModemLocalPort() const;
bool getModemRXInvert() const;
bool getModemTXInvert() const;
@ -232,6 +233,7 @@ public:
bool getDStarNetworkEnabled() const;
std::string getDStarGatewayAddress() const;
unsigned short getDStarGatewayPort() const;
std::string getDStarLocalAddress() const;
unsigned short getDStarLocalPort() const;
unsigned int getDStarNetworkModeHang() const;
bool getDStarNetworkDebug() const;
@ -239,9 +241,10 @@ public:
// The DMR Network section
bool getDMRNetworkEnabled() const;
std::string getDMRNetworkType() const;
std::string getDMRNetworkAddress() const;
unsigned short getDMRNetworkPort() const;
unsigned short getDMRNetworkLocal() const;
std::string getDMRNetworkRemoteAddress() const;
unsigned short getDMRNetworkRemotePort() const;
std::string getDMRNetworkLocalAddress() const;
unsigned short getDMRNetworkLocalPort() const;
std::string getDMRNetworkPassword() const;
std::string getDMRNetworkOptions() const;
bool getDMRNetworkDebug() const;
@ -252,8 +255,8 @@ public:
// The System Fusion Network section
bool getFusionNetworkEnabled() const;
std::string getFusionNetworkMyAddress() const;
unsigned short getFusionNetworkMyPort() const;
std::string getFusionNetworkLocalAddress() const;
unsigned short getFusionNetworkLocalPort() const;
std::string getFusionNetworkGatewayAddress() const;
unsigned short getFusionNetworkGatewayPort() const;
unsigned int getFusionNetworkModeHang() const;
@ -263,6 +266,7 @@ public:
bool getP25NetworkEnabled() const;
std::string getP25GatewayAddress() const;
unsigned short getP25GatewayPort() const;
std::string getP25LocalAddress() const;
unsigned short getP25LocalPort() const;
unsigned int getP25NetworkModeHang() const;
bool getP25NetworkDebug() const;
@ -281,6 +285,7 @@ public:
bool getM17NetworkEnabled() const;
std::string getM17GatewayAddress() const;
unsigned short getM17GatewayPort() const;
std::string getM17LocalAddress() const;
unsigned short getM17LocalPort() const;
unsigned int getM17NetworkModeHang() const;
bool getM17NetworkDebug() const;
@ -406,6 +411,7 @@ private:
unsigned int m_modemI2CAddress;
std::string m_modemModemAddress;
unsigned short m_modemModemPort;
std::string m_modemLocalAddress;
unsigned short m_modemLocalPort;
bool m_modemRXInvert;
bool m_modemTXInvert;
@ -550,15 +556,17 @@ private:
bool m_dstarNetworkEnabled;
std::string m_dstarGatewayAddress;
unsigned short m_dstarGatewayPort;
std::string m_dstarLocalAddress;
unsigned short m_dstarLocalPort;
unsigned int m_dstarNetworkModeHang;
bool m_dstarNetworkDebug;
bool m_dmrNetworkEnabled;
std::string m_dmrNetworkType;
std::string m_dmrNetworkAddress;
unsigned short m_dmrNetworkPort;
unsigned short m_dmrNetworkLocal;
std::string m_dmrNetworkRemoteAddress;
unsigned short m_dmrNetworkRemotePort;
std::string m_dmrNetworkLocalAddress;
unsigned short m_dmrNetworkLocalPort;
std::string m_dmrNetworkPassword;
std::string m_dmrNetworkOptions;
bool m_dmrNetworkDebug;
@ -568,8 +576,8 @@ private:
unsigned int m_dmrNetworkModeHang;
bool m_fusionNetworkEnabled;
std::string m_fusionNetworkMyAddress;
unsigned short m_fusionNetworkMyPort;
std::string m_fusionNetworkLocalAddress;
unsigned short m_fusionNetworkLocalPort;
std::string m_fusionNetworkGatewayAddress;
unsigned short m_fusionNetworkGatewayPort;
unsigned int m_fusionNetworkModeHang;
@ -578,6 +586,7 @@ private:
bool m_p25NetworkEnabled;
std::string m_p25GatewayAddress;
unsigned short m_p25GatewayPort;
std::string m_p25LocalAddress;
unsigned short m_p25LocalPort;
unsigned int m_p25NetworkModeHang;
bool m_p25NetworkDebug;
@ -594,6 +603,7 @@ private:
bool m_m17NetworkEnabled;
std::string m_m17GatewayAddress;
unsigned short m_m17GatewayPort;
std::string m_m17LocalAddress;
unsigned short m_m17LocalPort;
unsigned int m_m17NetworkModeHang;
bool m_m17NetworkDebug;

View File

@ -30,7 +30,7 @@ const unsigned int BUFFER_LENGTH = 500U;
const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U;
CDMRDirectNetwork::CDMRDirectNetwork(const std::string& address, unsigned short port, unsigned short local, unsigned int id, const std::string& password, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug) :
CDMRDirectNetwork::CDMRDirectNetwork(const std::string& address, unsigned short port, const std::string& localAddress, unsigned short localPort, unsigned int id, const std::string& password, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug) :
m_address(address),
m_port(port),
m_addr(),
@ -40,7 +40,7 @@ m_password(password),
m_duplex(duplex),
m_version(version),
m_debug(debug),
m_socket(local),
m_socket(localAddress, localPort),
m_enabled(false),
m_slot1(slot1),
m_slot2(slot2),

View File

@ -32,7 +32,7 @@
class CDMRDirectNetwork : public IDMRNetwork
{
public:
CDMRDirectNetwork(const std::string& address, unsigned short port, unsigned short local, unsigned int id, const std::string& password, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug);
CDMRDirectNetwork(const std::string& remoteAddress, unsigned short remotePort, const std::string& localAddress, unsigned short localPort, unsigned int id, const std::string& password, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug);
virtual ~CDMRDirectNetwork();
virtual void setOptions(const std::string& options);

View File

@ -31,7 +31,7 @@ const unsigned int BUFFER_LENGTH = 500U;
const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U;
CDMRGatewayNetwork::CDMRGatewayNetwork(const std::string& address, unsigned short port, unsigned short local, unsigned int id, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug) :
CDMRGatewayNetwork::CDMRGatewayNetwork(const std::string& address, unsigned short port, const std::string& localAddress, unsigned short localPort, unsigned int id, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug) :
m_addressStr(address),
m_addr(),
m_addrLen(0U),
@ -40,7 +40,7 @@ m_id(NULL),
m_duplex(duplex),
m_version(version),
m_debug(debug),
m_socket(local),
m_socket(localAddress, localPort),
m_enabled(false),
m_slot1(slot1),
m_slot2(slot2),

View File

@ -33,7 +33,7 @@
class CDMRGatewayNetwork : public IDMRNetwork
{
public:
CDMRGatewayNetwork(const std::string& address, unsigned short port, unsigned short local, unsigned int id, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug);
CDMRGatewayNetwork(const std::string& remoteAddress, unsigned short remotePort, const std::string& localAddress, unsigned short localPort, unsigned int id, bool duplex, const char* version, bool slot1, bool slot2, HW_TYPE hwType, bool debug);
virtual ~CDMRGatewayNetwork();
virtual void setOptions(const std::string& options);

View File

@ -30,8 +30,8 @@
const unsigned int BUFFER_LENGTH = 100U;
CDStarNetwork::CDStarNetwork(const std::string& gatewayAddress, unsigned short gatewayPort, unsigned short localPort, bool duplex, const char* version, bool debug) :
m_socket(localPort),
CDStarNetwork::CDStarNetwork(const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& localAddress, unsigned short localPort, bool duplex, const char* version, bool debug) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_duplex(duplex),

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2014,2016,2020 by Jonathan Naylor G4KLX
* Copyright (C) 2009-2014,2016,2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -30,7 +30,7 @@
class CDStarNetwork {
public:
CDStarNetwork(const std::string& gatewayAddress, unsigned short gatewayPort, unsigned short localPort, bool duplex, const char* version, bool debug);
CDStarNetwork(const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& localAddress, unsigned short localPort, bool duplex, const char* version, bool debug);
~CDStarNetwork();
bool open();

View File

@ -31,7 +31,7 @@ enum FM_NETWORK_PROTOCOL {
class CFMNetwork {
public:
CFMNetwork(const std::string& callsign, const std::string& protocol, const std::string& myAddress, unsigned short myPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug);
CFMNetwork(const std::string& callsign, const std::string& protocol, const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug);
~CFMNetwork();
bool open();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 by Jonathan Naylor G4KLX
* Copyright (C) 2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -29,8 +29,8 @@
const unsigned int BUFFER_LENGTH = 200U;
CM17Network::CM17Network(unsigned short localPort, const std::string& gwyAddress, unsigned short gwyPort, bool debug) :
m_socket(localPort),
CM17Network::CM17Network(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_debug(debug),
@ -41,7 +41,7 @@ m_buffer(1000U, "M17 Network"),
m_random(),
m_timer(1000U, 5U)
{
if (CUDPSocket::lookup(gwyAddress, gwyPort, m_addr, m_addrLen) != 0) {
if (CUDPSocket::lookup(gatewayAddress, gatewayPort, m_addr, m_addrLen) != 0) {
m_addrLen = 0U;
return;
}

View File

@ -29,7 +29,7 @@
class CM17Network {
public:
CM17Network(unsigned short localPort, const std::string& gwyAddress, unsigned short gwyPort, bool debug);
CM17Network(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug);
~CM17Network();
bool open();

View File

@ -56,6 +56,7 @@ I2CAddress=0x22
# IP parameters for UDP connection
ModemAddress=192.168.2.100
ModemPort=3334
LocalAddress=192.168.2.1
LocalPort=3335
TXInvert=1
@ -207,9 +208,10 @@ Trace=1
[D-Star Network]
Enable=1
LocalAddress=127.0.0.1
LocalPort=20011
GatewayAddress=127.0.0.1
GatewayPort=20010
LocalPort=20011
# ModeHang=3
Debug=0
@ -218,9 +220,10 @@ Enable=1
# Type may be either 'Direct' or 'Gateway'. When Direct you must provide the Master's
# address as well as the Password, and for DMR+, Options also.
Type=Gateway
Address=127.0.0.1
Port=62031
Local=62032
LocalAddress=127.0.0.1
LocalPort=62032
RemoteAddress=127.0.0.1
RemotePort=62031
# Password=P@ssw0rd1234
Jitter=360
Slot1=1
@ -240,9 +243,10 @@ Debug=0
[P25 Network]
Enable=1
LocalAddress=127.0.0.1
LocalPort=32010
GatewayAddress=127.0.0.1
GatewayPort=42020
LocalPort=32010
# ModeHang=3
Debug=0
@ -258,9 +262,10 @@ Debug=0
[M17 Network]
Enable=1
LocalAddress=127.0.0.1
LocalPort=17011
GatewayAddress=127.0.0.1
GatewayPort=17010
LocalPort=17011
# ModeHang=3
Debug=0

View File

@ -1330,8 +1330,9 @@ bool CMMDVMHost::createModem()
std::string i2cPort = m_conf.getModemI2CPort();
unsigned int i2cAddress = m_conf.getModemI2CAddress();
std::string modemAddress = m_conf.getModemModemAddress();
unsigned int modemPort = m_conf.getModemModemPort();
unsigned int localPort = m_conf.getModemLocalPort();
unsigned short modemPort = m_conf.getModemModemPort();
std::string localAddress = m_conf.getModemLocalAddress();
unsigned short localPort = m_conf.getModemLocalPort();
bool rxInvert = m_conf.getModemRXInvert();
bool txInvert = m_conf.getModemTXInvert();
bool pttInvert = m_conf.getModemPTTInvert();
@ -1378,8 +1379,9 @@ bool CMMDVMHost::createModem()
LogInfo(" UART Speed: %u", uartSpeed);
} else if (protocol == "udp") {
LogInfo(" Modem Address: %s", modemAddress.c_str());
LogInfo(" Modem Port: %u", modemPort);
LogInfo(" Local Port: %u", localPort);
LogInfo(" Modem Port: %hu", modemPort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
}
#if defined(__linux__)
else if (protocol == "i2c") {
@ -1418,7 +1420,7 @@ bool CMMDVMHost::createModem()
if (protocol == "uart")
port = new CUARTController(uartPort, uartSpeed, true);
else if (protocol == "udp")
port = new CUDPController(modemAddress, modemPort, localPort);
port = new CUDPController(modemAddress, modemPort, localAddress, localPort);
#if defined(__linux__)
else if (protocol == "i2c")
port = new CI2CController(i2cPort, i2cAddress);
@ -1540,6 +1542,7 @@ bool CMMDVMHost::createDStarNetwork()
{
std::string gatewayAddress = m_conf.getDStarGatewayAddress();
unsigned short gatewayPort = m_conf.getDStarGatewayPort();
std::string localAddress = m_conf.getDStarLocalAddress();
unsigned short localPort = m_conf.getDStarLocalPort();
bool debug = m_conf.getDStarNetworkDebug();
m_dstarNetModeHang = m_conf.getDStarNetworkModeHang();
@ -1547,10 +1550,11 @@ bool CMMDVMHost::createDStarNetwork()
LogInfo("D-Star Network Parameters");
LogInfo(" Gateway Address: %s", gatewayAddress.c_str());
LogInfo(" Gateway Port: %hu", gatewayPort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
LogInfo(" Mode Hang: %us", m_dstarNetModeHang);
m_dstarNetwork = new CDStarNetwork(gatewayAddress, gatewayPort, localPort, m_duplex, VERSION, debug);
m_dstarNetwork = new CDStarNetwork(gatewayAddress, gatewayPort, localAddress, localPort, m_duplex, VERSION, debug);
bool ret = m_dstarNetwork->open();
if (!ret) {
@ -1566,9 +1570,10 @@ bool CMMDVMHost::createDStarNetwork()
bool CMMDVMHost::createDMRNetwork()
{
std::string address = m_conf.getDMRNetworkAddress();
unsigned short port = m_conf.getDMRNetworkPort();
unsigned short local = m_conf.getDMRNetworkLocal();
std::string remoteAddress = m_conf.getDMRNetworkRemoteAddress();
unsigned short remotePort = m_conf.getDMRNetworkRemotePort();
std::string localAddress = m_conf.getDMRNetworkLocalAddress();
unsigned short localPort = m_conf.getDMRNetworkLocalPort();
unsigned int id = m_conf.getDMRId();
std::string password = m_conf.getDMRNetworkPassword();
bool debug = m_conf.getDMRNetworkDebug();
@ -1583,21 +1588,19 @@ bool CMMDVMHost::createDMRNetwork()
LogInfo("DMR Network Parameters");
LogInfo(" Type: %s", type.c_str());
LogInfo(" Address: %s", address.c_str());
LogInfo(" Port: %hu", port);
if (local > 0U)
LogInfo(" Local: %hu", local);
else
LogInfo(" Local: random");
LogInfo(" Remote Address: %s", remoteAddress.c_str());
LogInfo(" Remote Port: %hu", remotePort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
LogInfo(" Jitter: %ums", jitter);
LogInfo(" Slot 1: %s", slot1 ? "enabled" : "disabled");
LogInfo(" Slot 2: %s", slot2 ? "enabled" : "disabled");
LogInfo(" Mode Hang: %us", m_dmrNetModeHang);
if (type == "Direct")
m_dmrNetwork = new CDMRDirectNetwork(address, port, local, id, password, m_duplex, VERSION, slot1, slot2, hwType, debug);
m_dmrNetwork = new CDMRDirectNetwork(remoteAddress, remotePort, localAddress, localPort, id, password, m_duplex, VERSION, slot1, slot2, hwType, debug);
else
m_dmrNetwork = new CDMRGatewayNetwork(address, port, local, id, m_duplex, VERSION, slot1, slot2, hwType, debug);
m_dmrNetwork = new CDMRGatewayNetwork(remoteAddress, remotePort, localAddress, localPort, id, m_duplex, VERSION, slot1, slot2, hwType, debug);
unsigned int rxFrequency = m_conf.getRXFrequency();
unsigned int txFrequency = m_conf.getTXFrequency();
@ -1650,21 +1653,21 @@ bool CMMDVMHost::createDMRNetwork()
bool CMMDVMHost::createYSFNetwork()
{
std::string myAddress = m_conf.getFusionNetworkMyAddress();
unsigned short myPort = m_conf.getFusionNetworkMyPort();
std::string localAddress = m_conf.getFusionNetworkLocalAddress();
unsigned short localPort = m_conf.getFusionNetworkLocalPort();
std::string gatewayAddress = m_conf.getFusionNetworkGatewayAddress();
unsigned short gatewayPort = m_conf.getFusionNetworkGatewayPort();
m_ysfNetModeHang = m_conf.getFusionNetworkModeHang();
bool debug = m_conf.getFusionNetworkDebug();
LogInfo("System Fusion Network Parameters");
LogInfo(" Local Address: %s", myAddress.c_str());
LogInfo(" Local Port: %hu", myPort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
LogInfo(" Gateway Address: %s", gatewayAddress.c_str());
LogInfo(" Gateway Port: %hu", gatewayPort);
LogInfo(" Mode Hang: %us", m_ysfNetModeHang);
m_ysfNetwork = new CYSFNetwork(myAddress, myPort, gatewayAddress, gatewayPort, m_callsign, debug);
m_ysfNetwork = new CYSFNetwork(localAddress, localPort, gatewayAddress, gatewayPort, m_callsign, debug);
bool ret = m_ysfNetwork->open();
if (!ret) {
@ -1682,6 +1685,7 @@ bool CMMDVMHost::createP25Network()
{
std::string gatewayAddress = m_conf.getP25GatewayAddress();
unsigned short gatewayPort = m_conf.getP25GatewayPort();
std::string localAddress = m_conf.getP25LocalAddress();
unsigned short localPort = m_conf.getP25LocalPort();
m_p25NetModeHang = m_conf.getP25NetworkModeHang();
bool debug = m_conf.getP25NetworkDebug();
@ -1689,10 +1693,11 @@ bool CMMDVMHost::createP25Network()
LogInfo("P25 Network Parameters");
LogInfo(" Gateway Address: %s", gatewayAddress.c_str());
LogInfo(" Gateway Port: %hu", gatewayPort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
LogInfo(" Mode Hang: %us", m_p25NetModeHang);
m_p25Network = new CP25Network(gatewayAddress, gatewayPort, localPort, debug);
m_p25Network = new CP25Network(gatewayAddress, gatewayPort, localAddress, localPort, debug);
bool ret = m_p25Network->open();
if (!ret) {
@ -1745,6 +1750,7 @@ bool CMMDVMHost::createM17Network()
{
std::string gatewayAddress = m_conf.getM17GatewayAddress();
unsigned short gatewayPort = m_conf.getM17GatewayPort();
std::string localAddress = m_conf.getM17LocalAddress();
unsigned short localPort = m_conf.getM17LocalPort();
m_m17NetModeHang = m_conf.getM17NetworkModeHang();
bool debug = m_conf.getM17NetworkDebug();
@ -1752,10 +1758,11 @@ bool CMMDVMHost::createM17Network()
LogInfo("M17 Network Parameters");
LogInfo(" Gateway Address: %s", gatewayAddress.c_str());
LogInfo(" Gateway Port: %hu", gatewayPort);
LogInfo(" Local Address: %s", localAddress.c_str());
LogInfo(" Local Port: %hu", localPort);
LogInfo(" Mode Hang: %us", m_m17NetModeHang);
m_m17Network = new CM17Network(localPort, gatewayAddress, gatewayPort, debug);
m_m17Network = new CM17Network(localAddress, localPort, gatewayAddress, gatewayPort, debug);
bool ret = m_m17Network->open();
if (!ret) {
delete m_m17Network;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2014,2016,2019,2020 by Jonathan Naylor G4KLX
* Copyright (C) 2009-2014,2016,2019,2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -87,8 +87,8 @@ const unsigned char REC80[] = {
const unsigned int BUFFER_LENGTH = 100U;
CP25Network::CP25Network(const std::string& gatewayAddress, unsigned short gatewayPort, unsigned short localPort, bool debug) :
m_socket(localPort),
CP25Network::CP25Network(const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& localAddress, unsigned short localPort, bool debug) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_debug(debug),

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2014,2016,2020 by Jonathan Naylor G4KLX
* Copyright (C) 2009-2014,2016,2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -30,7 +30,7 @@
class CP25Network {
public:
CP25Network(const std::string& gatewayAddress, unsigned short gatewayPort, unsigned short localPort, bool debug);
CP25Network(const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& localAddress, unsigned short localPort, bool debug);
~CP25Network();
bool open();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018,2019,2020 by Jonathan Naylor G4KLX
* Copyright (C) 2018,2019,2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -28,8 +28,8 @@
const unsigned int BUFFER_LENGTH = 200U;
CPOCSAGNetwork::CPOCSAGNetwork(const std::string& myAddress, unsigned short myPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug) :
m_socket(myAddress, myPort),
CPOCSAGNetwork::CPOCSAGNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_debug(debug),

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018,2020 by Jonathan Naylor G4KLX
* Copyright (C) 2018,2020,2021 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -29,7 +29,7 @@
class CPOCSAGNetwork {
public:
CPOCSAGNetwork(const std::string& myAddress, unsigned short myPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug);
CPOCSAGNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug);
~CPOCSAGNetwork();
bool open();

View File

@ -24,8 +24,8 @@
const unsigned int BUFFER_LENGTH = 600U;
CUDPController::CUDPController(const std::string& modemAddress, unsigned int modemPort, unsigned int localPort) :
m_socket(localPort),
CUDPController::CUDPController(const std::string& modemAddress, unsigned int modemPort, const std::string& localAddress, unsigned int localPort) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_buffer(2000U, "UDP Controller Ring Buffer")

View File

@ -27,7 +27,7 @@
class CUDPController : public IModemPort {
public:
CUDPController(const std::string& modemAddress, unsigned int modemPort, unsigned int localPort);
CUDPController(const std::string& modemAddress, unsigned int modemPort, const std::string& localAddress, unsigned int localPort);
virtual ~CUDPController();
virtual bool open();

View File

@ -19,6 +19,6 @@
#if !defined(VERSION_H)
#define VERSION_H
const char* VERSION = "20210424";
const char* VERSION = "20210425";
#endif

View File

@ -28,8 +28,8 @@
const unsigned int BUFFER_LENGTH = 200U;
CYSFNetwork::CYSFNetwork(const std::string& myAddress, unsigned short myPort, const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& callsign, bool debug) :
m_socket(myAddress, myPort),
CYSFNetwork::CYSFNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& callsign, bool debug) :
m_socket(localAddress, localPort),
m_addr(),
m_addrLen(0U),
m_callsign(),

View File

@ -29,7 +29,7 @@
class CYSFNetwork {
public:
CYSFNetwork(const std::string& myAddress, unsigned short myPort, const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& callsign, bool debug);
CYSFNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, const std::string& callsign, bool debug);
~CYSFNetwork();
bool open();