The first version of the multi network version.

This commit is contained in:
Jonathan Naylor
2017-05-03 17:48:55 +01:00
parent eb4d559230
commit 90f3e0e597
8 changed files with 703 additions and 242 deletions

222
Conf.cpp
View File

@@ -31,15 +31,14 @@ enum SECTION {
SECTION_GENERAL,
SECTION_LOG,
SECTION_VOICE,
SECTION_DMR_NETWORK,
SECTION_DMR_NETWORK_1,
SECTION_DMR_NETWORK_2,
SECTION_XLX_NETWORK
};
CConf::CConf(const std::string& file) :
m_file(file),
m_daemon(false),
m_xlxSlot(2U),
m_xlxTG(9U),
m_rptAddress("127.0.0.1"),
m_rptPort(62032U),
m_localAddress("127.0.0.1"),
@@ -53,15 +52,31 @@ m_logFileRoot(),
m_voiceEnabled(true),
m_voiceLanguage("en_GB"),
m_voiceDirectory(),
m_dmrNetworkAddress(),
m_dmrNetworkPort(0U),
m_dmrNetworkLocal(0U),
m_dmrNetworkPassword(),
m_dmrNetworkDebug(false),
m_dmrNetwork1Enabled(false),
m_dmrNetwork1Address(),
m_dmrNetwork1Port(0U),
m_dmrNetwork1Local(0U),
m_dmrNetwork1Password(),
m_dmrNetwork1Debug(false),
m_dmrNetwork1Rewrites(),
m_dmrNetwork1PrivateSlot1(false),
m_dmrNetwork1PrivateSlot2(false),
m_dmrNetwork2Enabled(false),
m_dmrNetwork2Address(),
m_dmrNetwork2Port(0U),
m_dmrNetwork2Local(0U),
m_dmrNetwork2Password(),
m_dmrNetwork2Debug(false),
m_dmrNetwork2Rewrites(),
m_dmrNetwork2PrivateSlot1(false),
m_dmrNetwork2PrivateSlot2(false),
m_xlxNetworkEnabled(false),
m_xlxNetworkAddress(),
m_xlxNetworkPort(0U),
m_xlxNetworkLocal(0U),
m_xlxNetworkPassword(),
m_xlxNetworkSlot(2U),
m_xlxNetworkTG(9U),
m_xlxNetworkOptions(),
m_xlxNetworkDebug(false)
{
@@ -95,8 +110,10 @@ bool CConf::read()
section = SECTION_VOICE;
else if (::strncmp(buffer, "[XLX Network]", 13U) == 0)
section = SECTION_XLX_NETWORK;
else if (::strncmp(buffer, "[DMR Network]", 13U) == 0)
section = SECTION_DMR_NETWORK;
else if (::strncmp(buffer, "[DMR Network 1]", 15U) == 0)
section = SECTION_DMR_NETWORK_1;
else if (::strncmp(buffer, "[DMR Network 2]", 15U) == 0)
section = SECTION_DMR_NETWORK_2;
else
section = SECTION_NONE;
@@ -114,10 +131,6 @@ bool CConf::read()
if (section == SECTION_GENERAL) {
if (::strcmp(key, "Daemon") == 0)
m_daemon = ::atoi(value) == 1;
else if (::strcmp(key, "XLXSlot") == 0)
m_xlxSlot = (unsigned int)::atoi(value);
else if (::strcmp(key, "XLXTG") == 0)
m_xlxTG = (unsigned int)::atoi(value);
else if (::strcmp(key, "Timeout") == 0)
m_timeout = (unsigned int)::atoi(value);
else if (::strcmp(key, "RptAddress") == 0)
@@ -147,7 +160,9 @@ bool CConf::read()
else if (::strcmp(key, "Directory") == 0)
m_voiceDirectory = value;
} else if (section == SECTION_XLX_NETWORK) {
if (::strcmp(key, "Address") == 0)
if (::strcmp(key, "Enabled") == 0)
m_xlxNetworkEnabled = ::atoi(value) == 1;
else if (::strcmp(key, "Address") == 0)
m_xlxNetworkAddress = value;
else if (::strcmp(key, "Port") == 0)
m_xlxNetworkPort = (unsigned int)::atoi(value);
@@ -155,21 +170,74 @@ bool CConf::read()
m_xlxNetworkLocal = (unsigned int)::atoi(value);
else if (::strcmp(key, "Password") == 0)
m_xlxNetworkPassword = value;
else if (::strcmp(key, "Slot") == 0)
m_xlxNetworkSlot = (unsigned int)::atoi(value);
else if (::strcmp(key, "TG") == 0)
m_xlxNetworkTG = (unsigned int)::atoi(value);
else if (::strcmp(key, "Options") == 0)
m_xlxNetworkOptions = value;
else if (::strcmp(key, "Debug") == 0)
m_xlxNetworkDebug = ::atoi(value) == 1;
} else if (section == SECTION_DMR_NETWORK) {
if (::strcmp(key, "Address") == 0)
m_dmrNetworkAddress = value;
} else if (section == SECTION_DMR_NETWORK_1) {
if (::strcmp(key, "Enabled") == 0)
m_dmrNetwork1Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Address") == 0)
m_dmrNetwork1Address = value;
else if (::strcmp(key, "Port") == 0)
m_dmrNetworkPort = (unsigned int)::atoi(value);
m_dmrNetwork1Port = (unsigned int)::atoi(value);
else if (::strcmp(key, "Local") == 0)
m_dmrNetworkLocal = (unsigned int)::atoi(value);
m_dmrNetwork1Local = (unsigned int)::atoi(value);
else if (::strcmp(key, "Password") == 0)
m_dmrNetworkPassword = value;
m_dmrNetwork1Password = value;
else if (::strcmp(key, "Debug") == 0)
m_dmrNetworkDebug = ::atoi(value) == 1;
m_dmrNetwork1Debug = ::atoi(value) == 1;
else if (::strcmp(key, "Rewrites") == 0) {
char* p1 = ::strtok(value, ", ");
char* p2 = ::strtok(NULL, ", ");
char* p3 = ::strtok(NULL, ", ");
char* p4 = ::strtok(NULL, " \r\n");
if (p1 != NULL && p2 != NULL && p3 != NULL && p4 != NULL) {
CRewriteStruct rewrite;
rewrite.m_fromSlot = ::atoi(p1);
rewrite.m_fromTG = ::atoi(p2);
rewrite.m_toSlot = ::atoi(p3);
rewrite.m_toTG = ::atoi(p4);
m_dmrNetwork1Rewrites.push_back(rewrite);
}
} else if (::strcmp(key, "PrivateSlot1") == 0)
m_dmrNetwork1PrivateSlot1 = ::atoi(value) == 1;
else if (::strcmp(key, "PrivateSlot2") == 0)
m_dmrNetwork1PrivateSlot2 = ::atoi(value) == 1;
} else if (section == SECTION_DMR_NETWORK_2) {
if (::strcmp(key, "Enabled") == 0)
m_dmrNetwork2Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Address") == 0)
m_dmrNetwork2Address = value;
else if (::strcmp(key, "Port") == 0)
m_dmrNetwork2Port = (unsigned int)::atoi(value);
else if (::strcmp(key, "Local") == 0)
m_dmrNetwork2Local = (unsigned int)::atoi(value);
else if (::strcmp(key, "Password") == 0)
m_dmrNetwork2Password = value;
else if (::strcmp(key, "Debug") == 0)
m_dmrNetwork2Debug = ::atoi(value) == 1;
else if (::strcmp(key, "Rewrites") == 0) {
char* p1 = ::strtok(value, ", ");
char* p2 = ::strtok(NULL, ", ");
char* p3 = ::strtok(NULL, ", ");
char* p4 = ::strtok(NULL, " \r\n");
if (p1 != NULL && p2 != NULL && p3 != NULL && p4 != NULL) {
CRewriteStruct rewrite;
rewrite.m_fromSlot = ::atoi(p1);
rewrite.m_fromTG = ::atoi(p2);
rewrite.m_toSlot = ::atoi(p3);
rewrite.m_toTG = ::atoi(p4);
m_dmrNetwork2Rewrites.push_back(rewrite);
}
} else if (::strcmp(key, "PrivateSlot1") == 0)
m_dmrNetwork2PrivateSlot1 = ::atoi(value) == 1;
else if (::strcmp(key, "PrivateSlot2") == 0)
m_dmrNetwork2PrivateSlot2 = ::atoi(value) == 1;
}
}
@@ -183,16 +251,6 @@ bool CConf::getDaemon() const
return m_daemon;
}
unsigned int CConf::getXLXSlot() const
{
return m_xlxSlot;
}
unsigned int CConf::getXLXTG() const
{
return m_xlxTG;
}
std::string CConf::getRptAddress() const
{
return m_rptAddress;
@@ -258,6 +316,11 @@ std::string CConf::getVoiceDirectory() const
return m_voiceDirectory;
}
bool CConf::getXLXNetworkEnabled() const
{
return m_xlxNetworkEnabled;
}
std::string CConf::getXLXNetworkAddress() const
{
return m_xlxNetworkAddress;
@@ -273,6 +336,16 @@ unsigned int CConf::getXLXNetworkLocal() const
return m_xlxNetworkLocal;
}
unsigned int CConf::getXLXNetworkSlot() const
{
return m_xlxNetworkSlot;
}
unsigned int CConf::getXLXNetworkTG() const
{
return m_xlxNetworkTG;
}
std::string CConf::getXLXNetworkPassword() const
{
return m_xlxNetworkPassword;
@@ -288,27 +361,92 @@ bool CConf::getXLXNetworkDebug() const
return m_xlxNetworkDebug;
}
std::string CConf::getDMRNetworkAddress() const
bool CConf::getDMRNetwork1Enabled() const
{
return m_dmrNetworkAddress;
return m_dmrNetwork1Enabled;
}
unsigned int CConf::getDMRNetworkPort() const
std::string CConf::getDMRNetwork1Address() const
{
return m_dmrNetworkPort;
return m_dmrNetwork1Address;
}
unsigned int CConf::getDMRNetworkLocal() const
unsigned int CConf::getDMRNetwork1Port() const
{
return m_dmrNetworkLocal;
return m_dmrNetwork1Port;
}
std::string CConf::getDMRNetworkPassword() const
unsigned int CConf::getDMRNetwork1Local() const
{
return m_dmrNetworkPassword;
return m_dmrNetwork1Local;
}
bool CConf::getDMRNetworkDebug() const
std::string CConf::getDMRNetwork1Password() const
{
return m_dmrNetworkDebug;
return m_dmrNetwork1Password;
}
bool CConf::getDMRNetwork1Debug() const
{
return m_dmrNetwork1Debug;
}
std::vector<CRewriteStruct> CConf::getDMRNetwork1Rewrites() const
{
return m_dmrNetwork1Rewrites;
}
bool CConf::getDMRNetwork1PrivateSlot1() const
{
return m_dmrNetwork1PrivateSlot1;
}
bool CConf::getDMRNetwork1PrivateSlot2() const
{
return m_dmrNetwork1PrivateSlot2;
}
bool CConf::getDMRNetwork2Enabled() const
{
return m_dmrNetwork2Enabled;
}
std::string CConf::getDMRNetwork2Address() const
{
return m_dmrNetwork2Address;
}
unsigned int CConf::getDMRNetwork2Port() const
{
return m_dmrNetwork2Port;
}
unsigned int CConf::getDMRNetwork2Local() const
{
return m_dmrNetwork2Local;
}
std::string CConf::getDMRNetwork2Password() const
{
return m_dmrNetwork2Password;
}
bool CConf::getDMRNetwork2Debug() const
{
return m_dmrNetwork2Debug;
}
std::vector<CRewriteStruct> CConf::getDMRNetwork2Rewrites() const
{
return m_dmrNetwork2Rewrites;
}
bool CConf::getDMRNetwork2PrivateSlot1() const
{
return m_dmrNetwork2PrivateSlot1;
}
bool CConf::getDMRNetwork2PrivateSlot2() const
{
return m_dmrNetwork2PrivateSlot2;
}