Add optional names for each network for use in the log,

This commit is contained in:
Jonathan Naylor
2017-08-01 21:51:22 +01:00
parent 49254bc7c9
commit 367116bdf4
19 changed files with 175 additions and 89 deletions

View File

@@ -55,6 +55,7 @@ m_logFileLevel(0U),
m_logFilePath(), m_logFilePath(),
m_logFileRoot(), m_logFileRoot(),
m_dmrNetwork1Enabled(false), m_dmrNetwork1Enabled(false),
m_dmrNetwork1Name(),
m_dmrNetwork1Id(0U), m_dmrNetwork1Id(0U),
m_dmrNetwork1Address(), m_dmrNetwork1Address(),
m_dmrNetwork1Port(0U), m_dmrNetwork1Port(0U),
@@ -69,6 +70,7 @@ m_dmrNetwork1SrcRewrites(),
m_dmrNetwork1PassAllPC(), m_dmrNetwork1PassAllPC(),
m_dmrNetwork1PassAllTG(), m_dmrNetwork1PassAllTG(),
m_dmrNetwork2Enabled(false), m_dmrNetwork2Enabled(false),
m_dmrNetwork2Name(),
m_dmrNetwork2Id(0U), m_dmrNetwork2Id(0U),
m_dmrNetwork2Address(), m_dmrNetwork2Address(),
m_dmrNetwork2Port(0U), m_dmrNetwork2Port(0U),
@@ -83,6 +85,7 @@ m_dmrNetwork2SrcRewrites(),
m_dmrNetwork2PassAllPC(), m_dmrNetwork2PassAllPC(),
m_dmrNetwork2PassAllTG(), m_dmrNetwork2PassAllTG(),
m_xlxNetwork1Enabled(false), m_xlxNetwork1Enabled(false),
m_xlxNetwork1Name(),
m_xlxNetwork1Id(0U), m_xlxNetwork1Id(0U),
m_xlxNetwork1Address(), m_xlxNetwork1Address(),
m_xlxNetwork1Port(0U), m_xlxNetwork1Port(0U),
@@ -96,6 +99,7 @@ m_xlxNetwork1Relink(0U),
m_xlxNetwork1Options(), m_xlxNetwork1Options(),
m_xlxNetwork1Debug(false), m_xlxNetwork1Debug(false),
m_xlxNetwork2Enabled(false), m_xlxNetwork2Enabled(false),
m_xlxNetwork2Name(),
m_xlxNetwork2Id(0U), m_xlxNetwork2Id(0U),
m_xlxNetwork2Address(), m_xlxNetwork2Address(),
m_xlxNetwork2Port(0U), m_xlxNetwork2Port(0U),
@@ -195,6 +199,8 @@ bool CConf::read()
} else if (section == SECTION_XLX_NETWORK_1) { } else if (section == SECTION_XLX_NETWORK_1) {
if (::strcmp(key, "Enabled") == 0) if (::strcmp(key, "Enabled") == 0)
m_xlxNetwork1Enabled = ::atoi(value) == 1; m_xlxNetwork1Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Name") == 0)
m_xlxNetwork1Name = value;
else if (::strcmp(key, "Id") == 0) else if (::strcmp(key, "Id") == 0)
m_xlxNetwork1Id = (unsigned int)::atoi(value); m_xlxNetwork1Id = (unsigned int)::atoi(value);
else if (::strcmp(key, "Address") == 0) else if (::strcmp(key, "Address") == 0)
@@ -222,6 +228,8 @@ bool CConf::read()
} else if (section == SECTION_XLX_NETWORK_2) { } else if (section == SECTION_XLX_NETWORK_2) {
if (::strcmp(key, "Enabled") == 0) if (::strcmp(key, "Enabled") == 0)
m_xlxNetwork2Enabled = ::atoi(value) == 1; m_xlxNetwork2Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Name") == 0)
m_xlxNetwork2Name = value;
else if (::strcmp(key, "Id") == 0) else if (::strcmp(key, "Id") == 0)
m_xlxNetwork2Id = (unsigned int)::atoi(value); m_xlxNetwork2Id = (unsigned int)::atoi(value);
else if (::strcmp(key, "Address") == 0) else if (::strcmp(key, "Address") == 0)
@@ -249,6 +257,8 @@ bool CConf::read()
} else if (section == SECTION_DMR_NETWORK_1) { } else if (section == SECTION_DMR_NETWORK_1) {
if (::strcmp(key, "Enabled") == 0) if (::strcmp(key, "Enabled") == 0)
m_dmrNetwork1Enabled = ::atoi(value) == 1; m_dmrNetwork1Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Name") == 0)
m_dmrNetwork1Name = value;
else if (::strcmp(key, "Id") == 0) else if (::strcmp(key, "Id") == 0)
m_dmrNetwork1Id = (unsigned int)::atoi(value); m_dmrNetwork1Id = (unsigned int)::atoi(value);
else if (::strcmp(key, "Address") == 0) else if (::strcmp(key, "Address") == 0)
@@ -331,6 +341,8 @@ bool CConf::read()
} else if (section == SECTION_DMR_NETWORK_2) { } else if (section == SECTION_DMR_NETWORK_2) {
if (::strcmp(key, "Enabled") == 0) if (::strcmp(key, "Enabled") == 0)
m_dmrNetwork2Enabled = ::atoi(value) == 1; m_dmrNetwork2Enabled = ::atoi(value) == 1;
else if (::strcmp(key, "Name") == 0)
m_dmrNetwork2Name = value;
else if (::strcmp(key, "Id") == 0) else if (::strcmp(key, "Id") == 0)
m_dmrNetwork2Id = (unsigned int)::atoi(value); m_dmrNetwork2Id = (unsigned int)::atoi(value);
else if (::strcmp(key, "Address") == 0) else if (::strcmp(key, "Address") == 0)
@@ -498,6 +510,14 @@ bool CConf::getXLXNetwork1Enabled() const
return m_xlxNetwork1Enabled; return m_xlxNetwork1Enabled;
} }
std::string CConf::getXLXNetwork1Name() const
{
if (m_xlxNetwork1Name.empty())
return "XLX-1";
else
return m_xlxNetwork1Name;
}
unsigned int CConf::getXLXNetwork1Id() const unsigned int CConf::getXLXNetwork1Id() const
{ {
return m_xlxNetwork1Id; return m_xlxNetwork1Id;
@@ -563,6 +583,14 @@ bool CConf::getXLXNetwork2Enabled() const
return m_xlxNetwork2Enabled; return m_xlxNetwork2Enabled;
} }
std::string CConf::getXLXNetwork2Name() const
{
if (m_xlxNetwork2Name.empty())
return "XLX-2";
else
return m_xlxNetwork2Name;
}
unsigned int CConf::getXLXNetwork2Id() const unsigned int CConf::getXLXNetwork2Id() const
{ {
return m_xlxNetwork2Id; return m_xlxNetwork2Id;
@@ -628,6 +656,14 @@ bool CConf::getDMRNetwork1Enabled() const
return m_dmrNetwork1Enabled; return m_dmrNetwork1Enabled;
} }
std::string CConf::getDMRNetwork1Name() const
{
if (m_dmrNetwork1Name.empty())
return "DMR-1";
else
return m_dmrNetwork1Name;
}
unsigned int CConf::getDMRNetwork1Id() const unsigned int CConf::getDMRNetwork1Id() const
{ {
return m_dmrNetwork1Id; return m_dmrNetwork1Id;
@@ -698,6 +734,14 @@ bool CConf::getDMRNetwork2Enabled() const
return m_dmrNetwork2Enabled; return m_dmrNetwork2Enabled;
} }
std::string CConf::getDMRNetwork2Name() const
{
if (m_dmrNetwork2Name.empty())
return "DMR-2";
else
return m_dmrNetwork2Name;
}
unsigned int CConf::getDMRNetwork2Id() const unsigned int CConf::getDMRNetwork2Id() const
{ {
return m_dmrNetwork2Id; return m_dmrNetwork2Id;

8
Conf.h
View File

@@ -84,6 +84,7 @@ public:
// The DMR Network 1 section // The DMR Network 1 section
bool getDMRNetwork1Enabled() const; bool getDMRNetwork1Enabled() const;
std::string getDMRNetwork1Name() const;
unsigned int getDMRNetwork1Id() const; unsigned int getDMRNetwork1Id() const;
std::string getDMRNetwork1Address() const; std::string getDMRNetwork1Address() const;
unsigned int getDMRNetwork1Port() const; unsigned int getDMRNetwork1Port() const;
@@ -100,6 +101,7 @@ public:
// The DMR Network 2 section // The DMR Network 2 section
bool getDMRNetwork2Enabled() const; bool getDMRNetwork2Enabled() const;
std::string getDMRNetwork2Name() const;
unsigned int getDMRNetwork2Id() const; unsigned int getDMRNetwork2Id() const;
std::string getDMRNetwork2Address() const; std::string getDMRNetwork2Address() const;
unsigned int getDMRNetwork2Port() const; unsigned int getDMRNetwork2Port() const;
@@ -116,6 +118,7 @@ public:
// The XLX Network 1 section // The XLX Network 1 section
bool getXLXNetwork1Enabled() const; bool getXLXNetwork1Enabled() const;
std::string getXLXNetwork1Name() const;
unsigned int getXLXNetwork1Id() const; unsigned int getXLXNetwork1Id() const;
std::string getXLXNetwork1Address() const; std::string getXLXNetwork1Address() const;
unsigned int getXLXNetwork1Port() const; unsigned int getXLXNetwork1Port() const;
@@ -131,6 +134,7 @@ public:
// The XLX Network 2 section // The XLX Network 2 section
bool getXLXNetwork2Enabled() const; bool getXLXNetwork2Enabled() const;
std::string getXLXNetwork2Name() const;
unsigned int getXLXNetwork2Id() const; unsigned int getXLXNetwork2Id() const;
std::string getXLXNetwork2Address() const; std::string getXLXNetwork2Address() const;
unsigned int getXLXNetwork2Port() const; unsigned int getXLXNetwork2Port() const;
@@ -165,6 +169,7 @@ private:
std::string m_logFileRoot; std::string m_logFileRoot;
bool m_dmrNetwork1Enabled; bool m_dmrNetwork1Enabled;
std::string m_dmrNetwork1Name;
unsigned int m_dmrNetwork1Id; unsigned int m_dmrNetwork1Id;
std::string m_dmrNetwork1Address; std::string m_dmrNetwork1Address;
unsigned int m_dmrNetwork1Port; unsigned int m_dmrNetwork1Port;
@@ -180,6 +185,7 @@ private:
std::vector<unsigned int> m_dmrNetwork1PassAllTG; std::vector<unsigned int> m_dmrNetwork1PassAllTG;
bool m_dmrNetwork2Enabled; bool m_dmrNetwork2Enabled;
std::string m_dmrNetwork2Name;
unsigned int m_dmrNetwork2Id; unsigned int m_dmrNetwork2Id;
std::string m_dmrNetwork2Address; std::string m_dmrNetwork2Address;
unsigned int m_dmrNetwork2Port; unsigned int m_dmrNetwork2Port;
@@ -195,6 +201,7 @@ private:
std::vector<unsigned int> m_dmrNetwork2PassAllTG; std::vector<unsigned int> m_dmrNetwork2PassAllTG;
bool m_xlxNetwork1Enabled; bool m_xlxNetwork1Enabled;
std::string m_xlxNetwork1Name;
unsigned int m_xlxNetwork1Id; unsigned int m_xlxNetwork1Id;
std::string m_xlxNetwork1Address; std::string m_xlxNetwork1Address;
unsigned int m_xlxNetwork1Port; unsigned int m_xlxNetwork1Port;
@@ -209,6 +216,7 @@ private:
bool m_xlxNetwork1Debug; bool m_xlxNetwork1Debug;
bool m_xlxNetwork2Enabled; bool m_xlxNetwork2Enabled;
std::string m_xlxNetwork2Name;
unsigned int m_xlxNetwork2Id; unsigned int m_xlxNetwork2Id;
std::string m_xlxNetwork2Address; std::string m_xlxNetwork2Address;
unsigned int m_xlxNetwork2Port; unsigned int m_xlxNetwork2Port;

View File

@@ -133,9 +133,13 @@ CDMRGateway::CDMRGateway(const std::string& confFile) :
m_conf(confFile), m_conf(confFile),
m_repeater(NULL), m_repeater(NULL),
m_dmrNetwork1(NULL), m_dmrNetwork1(NULL),
m_dmr1Name(),
m_dmrNetwork2(NULL), m_dmrNetwork2(NULL),
m_dmr2Name(),
m_xlxNetwork1(NULL), m_xlxNetwork1(NULL),
m_xlx1Name(),
m_xlxNetwork2(NULL), m_xlxNetwork2(NULL),
m_xlx2Name(),
m_xlx1Id(0U), m_xlx1Id(0U),
m_xlx1Reflector(4000U), m_xlx1Reflector(4000U),
m_xlx1Slot(0U), m_xlx1Slot(0U),
@@ -390,7 +394,7 @@ int CDMRGateway::run()
if (connected && !m_xlx1Connected) { if (connected && !m_xlx1Connected) {
if (m_xlx1Startup != 4000U) { if (m_xlx1Startup != 4000U) {
writeXLXLink(m_xlx1Id, m_xlx1Startup, m_xlxNetwork1); writeXLXLink(m_xlx1Id, m_xlx1Startup, m_xlxNetwork1);
LogMessage("XLX-1, Linking to reflector %u at startup", m_xlx1Startup); LogMessage("%s, Linking to reflector %u at startup", m_xlx1Name.c_str(), m_xlx1Startup);
if (voice1 != NULL) if (voice1 != NULL)
voice1->linkedTo(m_xlx1Startup); voice1->linkedTo(m_xlx1Startup);
} }
@@ -400,7 +404,7 @@ int CDMRGateway::run()
m_xlx1Relink.stop(); m_xlx1Relink.stop();
} else if (!connected && m_xlx1Connected) { } else if (!connected && m_xlx1Connected) {
if (m_xlx1Reflector != 4000U) { if (m_xlx1Reflector != 4000U) {
LogMessage("XLX-1, Unlinking due to loss of connection"); LogMessage("%s, Unlinking due to loss of connection", m_xlx1Name.c_str());
if (voice1 != NULL) if (voice1 != NULL)
voice1->unlinked(); voice1->unlinked();
} }
@@ -415,7 +419,7 @@ int CDMRGateway::run()
writeXLXLink(m_xlx1Id, 4000U, m_xlxNetwork1); writeXLXLink(m_xlx1Id, 4000U, m_xlxNetwork1);
writeXLXLink(m_xlx1Id, m_xlx1Startup, m_xlxNetwork1); writeXLXLink(m_xlx1Id, m_xlx1Startup, m_xlxNetwork1);
LogMessage("XLX-1, Re-linking to startup reflector %u due to RF inactivity timeout", m_xlx1Startup); LogMessage("%s, Re-linking to startup reflector %u due to RF inactivity timeout", m_xlx1Name.c_str(), m_xlx1Startup);
m_xlx1Reflector = m_xlx1Startup; m_xlx1Reflector = m_xlx1Startup;
if (voice1 != NULL) { if (voice1 != NULL) {
@@ -432,7 +436,7 @@ int CDMRGateway::run()
if (connected && !m_xlx2Connected) { if (connected && !m_xlx2Connected) {
if (m_xlx2Startup != 4000U) { if (m_xlx2Startup != 4000U) {
writeXLXLink(m_xlx2Id, m_xlx2Startup, m_xlxNetwork2); writeXLXLink(m_xlx2Id, m_xlx2Startup, m_xlxNetwork2);
LogMessage("XLX-2, Linking to reflector %u at startup", m_xlx2Startup); LogMessage("%s, Linking to reflector %u at startup", m_xlx2Name.c_str(), m_xlx2Startup);
if (voice2 != NULL) if (voice2 != NULL)
voice2->linkedTo(m_xlx2Startup); voice2->linkedTo(m_xlx2Startup);
} }
@@ -442,7 +446,7 @@ int CDMRGateway::run()
m_xlx2Relink.stop(); m_xlx2Relink.stop();
} else if (!connected && m_xlx2Connected) { } else if (!connected && m_xlx2Connected) {
if (m_xlx2Reflector != 4000U) { if (m_xlx2Reflector != 4000U) {
LogMessage("XLX-2, Unlinking due to loss of connection"); LogMessage("%s, Unlinking due to loss of connection", m_xlx2Name.c_str());
if (voice2 != NULL) if (voice2 != NULL)
voice2->unlinked(); voice2->unlinked();
} }
@@ -457,7 +461,7 @@ int CDMRGateway::run()
writeXLXLink(m_xlx2Id, 4000U, m_xlxNetwork2); writeXLXLink(m_xlx2Id, 4000U, m_xlxNetwork2);
writeXLXLink(m_xlx2Id, m_xlx2Startup, m_xlxNetwork2); writeXLXLink(m_xlx2Id, m_xlx2Startup, m_xlxNetwork2);
LogMessage("XLX-2, Re-linking to startup reflector %u due to RF inactivity timeout", m_xlx2Startup); LogMessage("%s, Re-linking to startup reflector %u due to RF inactivity timeout", m_xlx2Name.c_str(), m_xlx2Startup);
m_xlx2Reflector = m_xlx2Startup; m_xlx2Reflector = m_xlx2Startup;
if (voice1 != NULL) { if (voice1 != NULL) {
@@ -500,7 +504,7 @@ int CDMRGateway::run()
if (dstId != m_xlx1Reflector) { if (dstId != m_xlx1Reflector) {
if (dstId == 4000U) { if (dstId == 4000U) {
LogMessage("XLX-1, Unlinking"); LogMessage("%s, Unlinking", m_xlx1Name.c_str());
} else if (dstId == 5000U) { } else if (dstId == 5000U) {
if (m_xlx1Reflector != 4000U) if (m_xlx1Reflector != 4000U)
voice1->linkedTo(m_xlx1Reflector); voice1->linkedTo(m_xlx1Reflector);
@@ -510,7 +514,7 @@ int CDMRGateway::run()
if (m_xlx1Reflector != 4000U) if (m_xlx1Reflector != 4000U)
writeXLXLink(srcId, 4000U, m_xlxNetwork1); writeXLXLink(srcId, 4000U, m_xlxNetwork1);
LogMessage("XLX-1, Linking to reflector %u", dstId); LogMessage("%s, Linking to reflector %u", m_xlx1Name.c_str(), dstId);
} }
if (dstId != 5000U ) { if (dstId != 5000U ) {
@@ -546,7 +550,7 @@ int CDMRGateway::run()
if (dstId != m_xlx2Reflector) { if (dstId != m_xlx2Reflector) {
if (dstId == 4000U) { if (dstId == 4000U) {
LogMessage("XLX-2, Unlinking"); LogMessage("%s, Unlinking", m_xlx2Name.c_str());
} else if (dstId == 5000U) { } else if (dstId == 5000U) {
if (m_xlx2Reflector != 4000U) if (m_xlx2Reflector != 4000U)
voice2->linkedTo(m_xlx2Reflector); voice2->linkedTo(m_xlx2Reflector);
@@ -556,7 +560,7 @@ int CDMRGateway::run()
if (m_xlx2Reflector != 4000U) if (m_xlx2Reflector != 4000U)
writeXLXLink(srcId, 4000U, m_xlxNetwork2); writeXLXLink(srcId, 4000U, m_xlxNetwork2);
LogMessage("XLX-2, Linking to reflector %u", dstId); LogMessage("%s, Linking to reflector %u", m_xlx2Name.c_str(), dstId);
} }
if (dstId != 5000U ) { if (dstId != 5000U ) {
@@ -702,7 +706,7 @@ int CDMRGateway::run()
unsigned int slotNo = data.getSlotNo(); unsigned int slotNo = data.getSlotNo();
unsigned int dstId = data.getDstId(); unsigned int dstId = data.getDstId();
FLCO flco = data.getFLCO(); FLCO flco = data.getFLCO();
LogWarning("XLX-1, Unexpected data from slot %u %s%u", slotNo, flco == FLCO_GROUP ? "TG" : "", dstId); LogWarning("%s, Unexpected data from slot %u %s%u", m_xlx1Name.c_str(), slotNo, flco == FLCO_GROUP ? "TG" : "", dstId);
} }
} }
} }
@@ -722,7 +726,7 @@ int CDMRGateway::run()
unsigned int slotNo = data.getSlotNo(); unsigned int slotNo = data.getSlotNo();
unsigned int dstId = data.getDstId(); unsigned int dstId = data.getDstId();
FLCO flco = data.getFLCO(); FLCO flco = data.getFLCO();
LogWarning("XLX-2, Unexpected data from slot %u %s%u", slotNo, flco == FLCO_GROUP ? "TG" : "", dstId); LogWarning("%s, Unexpected data from slot %u %s%u", m_xlx2Name.c_str(), slotNo, flco == FLCO_GROUP ? "TG" : "", dstId);
} }
} }
} }
@@ -965,11 +969,13 @@ bool CDMRGateway::createDMRNetwork1()
unsigned int id = m_conf.getDMRNetwork1Id(); unsigned int id = m_conf.getDMRNetwork1Id();
std::string password = m_conf.getDMRNetwork1Password(); std::string password = m_conf.getDMRNetwork1Password();
bool debug = m_conf.getDMRNetwork1Debug(); bool debug = m_conf.getDMRNetwork1Debug();
m_dmr1Name = m_conf.getDMRNetwork1Name();
if (id == 0U) if (id == 0U)
id = m_repeater->getId(); id = m_repeater->getId();
LogInfo("DMR Network 1 Parameters"); LogInfo("DMR Network 1 Parameters");
LogInfo(" Name: %s", m_dmr1Name.c_str());
LogInfo(" Id: %u", id); LogInfo(" Id: %u", id);
LogInfo(" Address: %s", address.c_str()); LogInfo(" Address: %s", address.c_str());
LogInfo(" Port: %u", port); LogInfo(" Port: %u", port);
@@ -978,7 +984,7 @@ bool CDMRGateway::createDMRNetwork1()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_dmrNetwork1 = new CDMRNetwork(address, port, local, id, password, "DMR-1", debug); m_dmrNetwork1 = new CDMRNetwork(address, port, local, id, password, m_dmr1Name, debug);
std::string options = m_conf.getDMRNetwork1Options(); std::string options = m_conf.getDMRNetwork1Options();
if (options.empty()) if (options.empty())
@@ -1012,8 +1018,8 @@ bool CDMRGateway::createDMRNetwork1()
else else
LogInfo(" Rewrite Net: %u:TG%u-TG%u -> %u:TG%u-TG%u", (*it).m_toSlot, (*it).m_toTG, (*it).m_toTG + (*it).m_range - 1U, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_fromTG + (*it).m_range - 1U); LogInfo(" Rewrite Net: %u:TG%u-TG%u -> %u:TG%u-TG%u", (*it).m_toSlot, (*it).m_toTG, (*it).m_toTG + (*it).m_range - 1U, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_fromTG + (*it).m_range - 1U);
CRewriteTG* rfRewrite = new CRewriteTG("DMR-1", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toTG, (*it).m_range); CRewriteTG* rfRewrite = new CRewriteTG(m_dmr1Name, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toTG, (*it).m_range);
CRewriteTG* netRewrite = new CRewriteTG("DMR-1", (*it).m_toSlot, (*it).m_toTG, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_range); CRewriteTG* netRewrite = new CRewriteTG(m_dmr1Name, (*it).m_toSlot, (*it).m_toTG, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_range);
m_dmr1RFRewrites.push_back(rfRewrite); m_dmr1RFRewrites.push_back(rfRewrite);
m_dmr1NetRewrites.push_back(netRewrite); m_dmr1NetRewrites.push_back(netRewrite);
@@ -1026,7 +1032,7 @@ bool CDMRGateway::createDMRNetwork1()
else else
LogInfo(" Rewrite RF: %u:%u-%u -> %u:%u-%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toId, (*it).m_toId + (*it).m_range - 1U); LogInfo(" Rewrite RF: %u:%u-%u -> %u:%u-%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toId, (*it).m_toId + (*it).m_range - 1U);
CRewritePC* rewrite = new CRewritePC("DMR-1", (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toId, (*it).m_range); CRewritePC* rewrite = new CRewritePC(m_dmr1Name, (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toId, (*it).m_range);
m_dmr1RFRewrites.push_back(rewrite); m_dmr1RFRewrites.push_back(rewrite);
} }
@@ -1035,7 +1041,7 @@ bool CDMRGateway::createDMRNetwork1()
for (std::vector<CTypeRewriteStruct>::const_iterator it = typeRewrites.begin(); it != typeRewrites.end(); ++it) { for (std::vector<CTypeRewriteStruct>::const_iterator it = typeRewrites.begin(); it != typeRewrites.end(); ++it) {
LogInfo(" Rewrite RF: %u:TG%u -> %u:%u", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId); LogInfo(" Rewrite RF: %u:TG%u -> %u:%u", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId);
CRewriteType* rewrite = new CRewriteType("DMR-1", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId); CRewriteType* rewrite = new CRewriteType(m_dmr1Name, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId);
m_dmr1RFRewrites.push_back(rewrite); m_dmr1RFRewrites.push_back(rewrite);
} }
@@ -1047,7 +1053,7 @@ bool CDMRGateway::createDMRNetwork1()
else else
LogInfo(" Rewrite Net: %u:%u-%u -> %u:TG%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toTG); LogInfo(" Rewrite Net: %u:%u-%u -> %u:TG%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toTG);
CRewriteSrc* rewrite = new CRewriteSrc("DMR-1", (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toTG, (*it).m_range); CRewriteSrc* rewrite = new CRewriteSrc(m_dmr1Name, (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toTG, (*it).m_range);
m_dmr1NetRewrites.push_back(rewrite); m_dmr1NetRewrites.push_back(rewrite);
} }
@@ -1056,8 +1062,8 @@ bool CDMRGateway::createDMRNetwork1()
for (std::vector<unsigned int>::const_iterator it = tgPassAll.begin(); it != tgPassAll.end(); ++it) { for (std::vector<unsigned int>::const_iterator it = tgPassAll.begin(); it != tgPassAll.end(); ++it) {
LogInfo(" Pass All TG: %u", *it); LogInfo(" Pass All TG: %u", *it);
CPassAllTG* rfPassAllTG = new CPassAllTG("DMR-1", *it); CPassAllTG* rfPassAllTG = new CPassAllTG(m_dmr1Name, *it);
CPassAllTG* netPassAllTG = new CPassAllTG("DMR-1", *it); CPassAllTG* netPassAllTG = new CPassAllTG(m_dmr1Name, *it);
m_dmr1Passalls.push_back(rfPassAllTG); m_dmr1Passalls.push_back(rfPassAllTG);
m_dmr1NetRewrites.push_back(netPassAllTG); m_dmr1NetRewrites.push_back(netPassAllTG);
@@ -1067,8 +1073,8 @@ bool CDMRGateway::createDMRNetwork1()
for (std::vector<unsigned int>::const_iterator it = pcPassAll.begin(); it != pcPassAll.end(); ++it) { for (std::vector<unsigned int>::const_iterator it = pcPassAll.begin(); it != pcPassAll.end(); ++it) {
LogInfo(" Pass All PC: %u", *it); LogInfo(" Pass All PC: %u", *it);
CPassAllPC* rfPassAllPC = new CPassAllPC("DMR-1", *it); CPassAllPC* rfPassAllPC = new CPassAllPC(m_dmr1Name, *it);
CPassAllPC* netPassAllPC = new CPassAllPC("DMR-1", *it); CPassAllPC* netPassAllPC = new CPassAllPC(m_dmr1Name, *it);
m_dmr1Passalls.push_back(rfPassAllPC); m_dmr1Passalls.push_back(rfPassAllPC);
m_dmr1NetRewrites.push_back(netPassAllPC); m_dmr1NetRewrites.push_back(netPassAllPC);
@@ -1085,11 +1091,13 @@ bool CDMRGateway::createDMRNetwork2()
unsigned int id = m_conf.getDMRNetwork2Id(); unsigned int id = m_conf.getDMRNetwork2Id();
std::string password = m_conf.getDMRNetwork2Password(); std::string password = m_conf.getDMRNetwork2Password();
bool debug = m_conf.getDMRNetwork2Debug(); bool debug = m_conf.getDMRNetwork2Debug();
m_dmr2Name = m_conf.getDMRNetwork2Name();
if (id == 0U) if (id == 0U)
id = m_repeater->getId(); id = m_repeater->getId();
LogInfo("DMR Network 2 Parameters"); LogInfo("DMR Network 2 Parameters");
LogInfo(" Name: %s", m_dmr2Name.c_str());
LogInfo(" Id: %u", id); LogInfo(" Id: %u", id);
LogInfo(" Address: %s", address.c_str()); LogInfo(" Address: %s", address.c_str());
LogInfo(" Port: %u", port); LogInfo(" Port: %u", port);
@@ -1098,7 +1106,7 @@ bool CDMRGateway::createDMRNetwork2()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_dmrNetwork2 = new CDMRNetwork(address, port, local, id, password, "DMR-2", debug); m_dmrNetwork2 = new CDMRNetwork(address, port, local, id, password, m_dmr2Name, debug);
std::string options = m_conf.getDMRNetwork2Options(); std::string options = m_conf.getDMRNetwork2Options();
if (options.empty()) if (options.empty())
@@ -1132,8 +1140,8 @@ bool CDMRGateway::createDMRNetwork2()
else else
LogInfo(" Rewrite Net: %u:TG%u-TG%u -> %u:TG%u-TG%u", (*it).m_toSlot, (*it).m_toTG, (*it).m_toTG + (*it).m_range - 1U, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_fromTG + (*it).m_range - 1U); LogInfo(" Rewrite Net: %u:TG%u-TG%u -> %u:TG%u-TG%u", (*it).m_toSlot, (*it).m_toTG, (*it).m_toTG + (*it).m_range - 1U, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_fromTG + (*it).m_range - 1U);
CRewriteTG* rfRewrite = new CRewriteTG("DMR-2", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toTG, (*it).m_range); CRewriteTG* rfRewrite = new CRewriteTG(m_dmr2Name, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toTG, (*it).m_range);
CRewriteTG* netRewrite = new CRewriteTG("DMR-2", (*it).m_toSlot, (*it).m_toTG, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_range); CRewriteTG* netRewrite = new CRewriteTG(m_dmr2Name, (*it).m_toSlot, (*it).m_toTG, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_range);
m_dmr2RFRewrites.push_back(rfRewrite); m_dmr2RFRewrites.push_back(rfRewrite);
m_dmr2NetRewrites.push_back(netRewrite); m_dmr2NetRewrites.push_back(netRewrite);
@@ -1146,7 +1154,7 @@ bool CDMRGateway::createDMRNetwork2()
else else
LogInfo(" Rewrite RF: %u:%u-%u -> %u:%u-%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toId, (*it).m_toId + (*it).m_range - 1U); LogInfo(" Rewrite RF: %u:%u-%u -> %u:%u-%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toId, (*it).m_toId + (*it).m_range - 1U);
CRewritePC* rewrite = new CRewritePC("DMR-2", (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toId, (*it).m_range); CRewritePC* rewrite = new CRewritePC(m_dmr2Name, (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toId, (*it).m_range);
m_dmr2RFRewrites.push_back(rewrite); m_dmr2RFRewrites.push_back(rewrite);
} }
@@ -1155,7 +1163,7 @@ bool CDMRGateway::createDMRNetwork2()
for (std::vector<CTypeRewriteStruct>::const_iterator it = typeRewrites.begin(); it != typeRewrites.end(); ++it) { for (std::vector<CTypeRewriteStruct>::const_iterator it = typeRewrites.begin(); it != typeRewrites.end(); ++it) {
LogInfo(" Rewrite RF: %u:TG%u -> %u:%u", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId); LogInfo(" Rewrite RF: %u:TG%u -> %u:%u", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId);
CRewriteType* rewrite = new CRewriteType("DMR-2", (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId); CRewriteType* rewrite = new CRewriteType(m_dmr2Name, (*it).m_fromSlot, (*it).m_fromTG, (*it).m_toSlot, (*it).m_toId);
m_dmr2RFRewrites.push_back(rewrite); m_dmr2RFRewrites.push_back(rewrite);
} }
@@ -1167,7 +1175,7 @@ bool CDMRGateway::createDMRNetwork2()
else else
LogInfo(" Rewrite Net: %u:%u-%u -> %u:TG%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toTG); LogInfo(" Rewrite Net: %u:%u-%u -> %u:TG%u", (*it).m_fromSlot, (*it).m_fromId, (*it).m_fromId + (*it).m_range - 1U, (*it).m_toSlot, (*it).m_toTG);
CRewriteSrc* rewrite = new CRewriteSrc("DMR-2", (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toTG, (*it).m_range); CRewriteSrc* rewrite = new CRewriteSrc(m_dmr2Name, (*it).m_fromSlot, (*it).m_fromId, (*it).m_toSlot, (*it).m_toTG, (*it).m_range);
m_dmr2NetRewrites.push_back(rewrite); m_dmr2NetRewrites.push_back(rewrite);
} }
@@ -1176,8 +1184,8 @@ bool CDMRGateway::createDMRNetwork2()
for (std::vector<unsigned int>::const_iterator it = tgPassAll.begin(); it != tgPassAll.end(); ++it) { for (std::vector<unsigned int>::const_iterator it = tgPassAll.begin(); it != tgPassAll.end(); ++it) {
LogInfo(" Pass All TG: %u", *it); LogInfo(" Pass All TG: %u", *it);
CPassAllTG* rfPassAllTG = new CPassAllTG("DMR-2", *it); CPassAllTG* rfPassAllTG = new CPassAllTG(m_dmr2Name, *it);
CPassAllTG* netPassAllTG = new CPassAllTG("DMR-2", *it); CPassAllTG* netPassAllTG = new CPassAllTG(m_dmr2Name, *it);
m_dmr2Passalls.push_back(rfPassAllTG); m_dmr2Passalls.push_back(rfPassAllTG);
m_dmr2NetRewrites.push_back(netPassAllTG); m_dmr2NetRewrites.push_back(netPassAllTG);
@@ -1187,8 +1195,8 @@ bool CDMRGateway::createDMRNetwork2()
for (std::vector<unsigned int>::const_iterator it = pcPassAll.begin(); it != pcPassAll.end(); ++it) { for (std::vector<unsigned int>::const_iterator it = pcPassAll.begin(); it != pcPassAll.end(); ++it) {
LogInfo(" Pass All PC: %u", *it); LogInfo(" Pass All PC: %u", *it);
CPassAllPC* rfPassAllPC = new CPassAllPC("DMR-2", *it); CPassAllPC* rfPassAllPC = new CPassAllPC(m_dmr2Name, *it);
CPassAllPC* netPassAllPC = new CPassAllPC("DMR-2", *it); CPassAllPC* netPassAllPC = new CPassAllPC(m_dmr2Name, *it);
m_dmr2Passalls.push_back(rfPassAllPC); m_dmr2Passalls.push_back(rfPassAllPC);
m_dmr2NetRewrites.push_back(netPassAllPC); m_dmr2NetRewrites.push_back(netPassAllPC);
@@ -1203,6 +1211,7 @@ bool CDMRGateway::createXLXNetwork1()
unsigned int port = m_conf.getXLXNetwork1Port(); unsigned int port = m_conf.getXLXNetwork1Port();
unsigned int local = m_conf.getXLXNetwork1Local(); unsigned int local = m_conf.getXLXNetwork1Local();
m_xlx1Id = m_conf.getXLXNetwork1Id(); m_xlx1Id = m_conf.getXLXNetwork1Id();
m_xlx1Name = m_conf.getXLXNetwork1Name();
std::string password = m_conf.getXLXNetwork1Password(); std::string password = m_conf.getXLXNetwork1Password();
bool debug = m_conf.getXLXNetwork1Debug(); bool debug = m_conf.getXLXNetwork1Debug();
@@ -1210,6 +1219,7 @@ bool CDMRGateway::createXLXNetwork1()
m_xlx1Id = m_repeater->getId(); m_xlx1Id = m_repeater->getId();
LogInfo("XLX Network 1 Parameters"); LogInfo("XLX Network 1 Parameters");
LogInfo(" Name: %s", m_xlx1Name.c_str());
LogInfo(" Id: %u", m_xlx1Id); LogInfo(" Id: %u", m_xlx1Id);
LogInfo(" Address: %s", address.c_str()); LogInfo(" Address: %s", address.c_str());
LogInfo(" Port: %u", port); LogInfo(" Port: %u", port);
@@ -1218,7 +1228,7 @@ bool CDMRGateway::createXLXNetwork1()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_xlxNetwork1 = new CDMRNetwork(address, port, local, m_xlx1Id, password, "XLX-1", debug); m_xlxNetwork1 = new CDMRNetwork(address, port, local, m_xlx1Id, password, m_xlx1Name, debug);
std::string options = m_conf.getXLXNetwork1Options(); std::string options = m_conf.getXLXNetwork1Options();
if (!options.empty()) { if (!options.empty()) {
@@ -1259,8 +1269,8 @@ bool CDMRGateway::createXLXNetwork1()
LogInfo(" Relink: disabled"); LogInfo(" Relink: disabled");
} }
m_rpt1Rewrite = new CRewriteTG("XLX-1", XLX_SLOT, XLX_TG, m_xlx1Slot, m_xlx1TG, 1U); m_rpt1Rewrite = new CRewriteTG(m_xlx1Name, XLX_SLOT, XLX_TG, m_xlx1Slot, m_xlx1TG, 1U);
m_xlx1Rewrite = new CRewriteTG("XLX-1", m_xlx1Slot, m_xlx1TG, XLX_SLOT, XLX_TG, 1U); m_xlx1Rewrite = new CRewriteTG(m_xlx1Name, m_xlx1Slot, m_xlx1TG, XLX_SLOT, XLX_TG, 1U);
return true; return true;
} }
@@ -1271,6 +1281,7 @@ bool CDMRGateway::createXLXNetwork2()
unsigned int port = m_conf.getXLXNetwork2Port(); unsigned int port = m_conf.getXLXNetwork2Port();
unsigned int local = m_conf.getXLXNetwork2Local(); unsigned int local = m_conf.getXLXNetwork2Local();
m_xlx2Id = m_conf.getXLXNetwork2Id(); m_xlx2Id = m_conf.getXLXNetwork2Id();
m_xlx2Name = m_conf.getXLXNetwork2Name();
std::string password = m_conf.getXLXNetwork2Password(); std::string password = m_conf.getXLXNetwork2Password();
bool debug = m_conf.getXLXNetwork2Debug(); bool debug = m_conf.getXLXNetwork2Debug();
@@ -1278,6 +1289,7 @@ bool CDMRGateway::createXLXNetwork2()
m_xlx2Id = m_repeater->getId(); m_xlx2Id = m_repeater->getId();
LogInfo("XLX Network 2 Parameters"); LogInfo("XLX Network 2 Parameters");
LogInfo(" Name: %s", m_xlx2Name.c_str());
LogInfo(" Id: %u", m_xlx2Id); LogInfo(" Id: %u", m_xlx2Id);
LogInfo(" Address: %s", address.c_str()); LogInfo(" Address: %s", address.c_str());
LogInfo(" Port: %u", port); LogInfo(" Port: %u", port);
@@ -1286,7 +1298,7 @@ bool CDMRGateway::createXLXNetwork2()
else else
LogInfo(" Local: random"); LogInfo(" Local: random");
m_xlxNetwork2 = new CDMRNetwork(address, port, local, m_xlx2Id, password, "XLX-2", debug); m_xlxNetwork2 = new CDMRNetwork(address, port, local, m_xlx2Id, password, m_xlx2Name, debug);
std::string options = m_conf.getXLXNetwork2Options(); std::string options = m_conf.getXLXNetwork2Options();
if (!options.empty()) { if (!options.empty()) {
@@ -1327,8 +1339,8 @@ bool CDMRGateway::createXLXNetwork2()
LogInfo(" Relink: disabled"); LogInfo(" Relink: disabled");
} }
m_rpt2Rewrite = new CRewriteTG("XLX-2", XLX_SLOT, XLX_TG, m_xlx2Slot, m_xlx2TG, 1U); m_rpt2Rewrite = new CRewriteTG(m_xlx2Name, XLX_SLOT, XLX_TG, m_xlx2Slot, m_xlx2TG, 1U);
m_xlx2Rewrite = new CRewriteTG("XLX-2", m_xlx2Slot, m_xlx2TG, XLX_SLOT, XLX_TG, 1U); m_xlx2Rewrite = new CRewriteTG(m_xlx2Name, m_xlx2Slot, m_xlx2TG, XLX_SLOT, XLX_TG, 1U);
return true; return true;
} }

View File

@@ -41,9 +41,13 @@ private:
CConf m_conf; CConf m_conf;
IRepeaterProtocol* m_repeater; IRepeaterProtocol* m_repeater;
CDMRNetwork* m_dmrNetwork1; CDMRNetwork* m_dmrNetwork1;
std::string m_dmr1Name;
CDMRNetwork* m_dmrNetwork2; CDMRNetwork* m_dmrNetwork2;
std::string m_dmr2Name;
CDMRNetwork* m_xlxNetwork1; CDMRNetwork* m_xlxNetwork1;
std::string m_xlx1Name;
CDMRNetwork* m_xlxNetwork2; CDMRNetwork* m_xlxNetwork2;
std::string m_xlx2Name;
unsigned int m_xlx1Id; unsigned int m_xlx1Id;
unsigned int m_xlx1Reflector; unsigned int m_xlx1Reflector;
unsigned int m_xlx1Slot; unsigned int m_xlx1Slot;

View File

@@ -22,6 +22,7 @@ Directory=./Audio
[XLX Network 1] [XLX Network 1]
Enabled=1 Enabled=1
Name=XLX950
Address=xlx950.epf.lu Address=xlx950.epf.lu
Port=62030 Port=62030
# Local=3351 # Local=3351
@@ -36,6 +37,7 @@ Debug=0
[XLX Network 2] [XLX Network 2]
Enabled=0 Enabled=0
Name=XLX000
Address=44.131.4.1 Address=44.131.4.1
Port=62030 Port=62030
# Local=3351 # Local=3351
@@ -49,6 +51,7 @@ Debug=0
# BrandMeister # BrandMeister
[DMR Network 1] [DMR Network 1]
Enabled=0 Enabled=0
Name=BM
Address=44.131.4.1 Address=44.131.4.1
Port=62031 Port=62031
# Local=3352 # Local=3352
@@ -72,6 +75,7 @@ Debug=0
# DMR+ # DMR+
[DMR Network 2] [DMR Network 2]
Enabled=0 Enabled=0
Name=DMR+
Address=44.131.4.1 Address=44.131.4.1
Port=55555 Port=55555
# Local=3352 # Local=3352

View File

@@ -31,7 +31,7 @@ const unsigned int BUFFER_LENGTH = 500U;
const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U; const unsigned int HOMEBREW_DATA_PACKET_LENGTH = 55U;
CDMRNetwork::CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, const char* name, bool debug) : CDMRNetwork::CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, const std::string& name, bool debug) :
m_address(), m_address(),
m_port(port), m_port(port),
m_id(NULL), m_id(NULL),
@@ -92,7 +92,7 @@ void CDMRNetwork::setConfig(const unsigned char* data, unsigned int len)
bool CDMRNetwork::open() bool CDMRNetwork::open()
{ {
LogMessage("%s, Opening DMR Network", m_name); LogMessage("%s, Opening DMR Network", m_name.c_str());
m_status = WAITING_CONNECT; m_status = WAITING_CONNECT;
m_timeoutTimer.stop(); m_timeoutTimer.stop();
@@ -265,7 +265,7 @@ bool CDMRNetwork::isConnected() const
void CDMRNetwork::close() void CDMRNetwork::close()
{ {
LogMessage("%s, Closing DMR Network", m_name); LogMessage("%s, Closing DMR Network", m_name.c_str());
if (m_status == RUNNING) { if (m_status == RUNNING) {
unsigned char buffer[9U]; unsigned char buffer[9U];
@@ -305,7 +305,7 @@ void CDMRNetwork::clock(unsigned int ms)
unsigned int port; unsigned int port;
int length = m_socket.read(m_buffer, BUFFER_LENGTH, address, port); int length = m_socket.read(m_buffer, BUFFER_LENGTH, address, port);
if (length < 0) { if (length < 0) {
LogError("%s, Socket has failed, retrying connection to the master", m_name); LogError("%s, Socket has failed, retrying connection to the master", m_name.c_str());
close(); close();
open(); open();
return; return;
@@ -324,7 +324,7 @@ void CDMRNetwork::clock(unsigned int ms)
m_rxData.addData(m_buffer, len); m_rxData.addData(m_buffer, len);
} else if (::memcmp(m_buffer, "MSTNAK", 6U) == 0) { } else if (::memcmp(m_buffer, "MSTNAK", 6U) == 0) {
if (m_status == RUNNING) { if (m_status == RUNNING) {
LogWarning("%s, Login to the master has failed, retrying login ...", m_name); LogWarning("%s, Login to the master has failed, retrying login ...", m_name.c_str());
m_status = WAITING_LOGIN; m_status = WAITING_LOGIN;
m_timeoutTimer.start(); m_timeoutTimer.start();
m_retryTimer.start(); m_retryTimer.start();
@@ -332,7 +332,7 @@ void CDMRNetwork::clock(unsigned int ms)
/* Once the modem death spiral has been prevented in Modem.cpp /* Once the modem death spiral has been prevented in Modem.cpp
the Network sometimes times out and reaches here. the Network sometimes times out and reaches here.
We want it to reconnect so... */ We want it to reconnect so... */
LogError("%s, Login to the master has failed, retrying network ...", m_name); LogError("%s, Login to the master has failed, retrying network ...", m_name.c_str());
close(); close();
open(); open();
return; return;
@@ -340,7 +340,7 @@ void CDMRNetwork::clock(unsigned int ms)
} else if (::memcmp(m_buffer, "RPTACK", 6U) == 0) { } else if (::memcmp(m_buffer, "RPTACK", 6U) == 0) {
switch (m_status) { switch (m_status) {
case WAITING_LOGIN: case WAITING_LOGIN:
LogDebug("%s, Sending authorisation", m_name); LogDebug("%s, Sending authorisation", m_name.c_str());
::memcpy(m_salt, m_buffer + 6U, sizeof(uint32_t)); ::memcpy(m_salt, m_buffer + 6U, sizeof(uint32_t));
writeAuthorisation(); writeAuthorisation();
m_status = WAITING_AUTHORISATION; m_status = WAITING_AUTHORISATION;
@@ -348,7 +348,7 @@ void CDMRNetwork::clock(unsigned int ms)
m_retryTimer.start(); m_retryTimer.start();
break; break;
case WAITING_AUTHORISATION: case WAITING_AUTHORISATION:
LogDebug("%s, Sending configuration", m_name); LogDebug("%s, Sending configuration", m_name.c_str());
writeConfig(); writeConfig();
m_status = WAITING_CONFIG; m_status = WAITING_CONFIG;
m_timeoutTimer.start(); m_timeoutTimer.start();
@@ -356,10 +356,10 @@ void CDMRNetwork::clock(unsigned int ms)
break; break;
case WAITING_CONFIG: case WAITING_CONFIG:
if (m_options.empty()) { if (m_options.empty()) {
LogMessage("%s, Logged into the master successfully", m_name); LogMessage("%s, Logged into the master successfully", m_name.c_str());
m_status = RUNNING; m_status = RUNNING;
} else { } else {
LogDebug("%s, Sending options", m_name); LogDebug("%s, Sending options", m_name.c_str());
writeOptions(); writeOptions();
m_status = WAITING_OPTIONS; m_status = WAITING_OPTIONS;
} }
@@ -367,7 +367,7 @@ void CDMRNetwork::clock(unsigned int ms)
m_retryTimer.start(); m_retryTimer.start();
break; break;
case WAITING_OPTIONS: case WAITING_OPTIONS:
LogMessage("%s, Logged into the master successfully", m_name); LogMessage("%s, Logged into the master successfully", m_name.c_str());
m_status = RUNNING; m_status = RUNNING;
m_timeoutTimer.start(); m_timeoutTimer.start();
m_retryTimer.start(); m_retryTimer.start();
@@ -376,7 +376,7 @@ void CDMRNetwork::clock(unsigned int ms)
break; break;
} }
} else if (::memcmp(m_buffer, "MSTCL", 5U) == 0) { } else if (::memcmp(m_buffer, "MSTCL", 5U) == 0) {
LogError("%s, Master is closing down", m_name); LogError("%s, Master is closing down", m_name.c_str());
close(); close();
open(); open();
} else if (::memcmp(m_buffer, "MSTPONG", 7U) == 0) { } else if (::memcmp(m_buffer, "MSTPONG", 7U) == 0) {
@@ -384,7 +384,9 @@ void CDMRNetwork::clock(unsigned int ms)
} else if (::memcmp(m_buffer, "RPTSBKN", 7U) == 0) { } else if (::memcmp(m_buffer, "RPTSBKN", 7U) == 0) {
m_beacon = true; m_beacon = true;
} else { } else {
CUtils::dump("Unknown packet from the master", m_buffer, length); char buffer[100U];
::sprintf(buffer, "%s, Unknown packet from the master", m_name.c_str());
CUtils::dump(buffer, m_buffer, length);
} }
} }
@@ -415,7 +417,7 @@ void CDMRNetwork::clock(unsigned int ms)
m_timeoutTimer.clock(ms); m_timeoutTimer.clock(ms);
if (m_timeoutTimer.isRunning() && m_timeoutTimer.hasExpired()) { if (m_timeoutTimer.isRunning() && m_timeoutTimer.hasExpired()) {
LogError("%s, Connection to the master has timed out, retrying connection", m_name); LogError("%s, Connection to the master has timed out, retrying connection", m_name.c_str());
close(); close();
open(); open();
} }
@@ -503,7 +505,7 @@ bool CDMRNetwork::write(const unsigned char* data, unsigned int length)
bool ret = m_socket.write(data, length, m_address, m_port); bool ret = m_socket.write(data, length, m_address, m_port);
if (!ret) { if (!ret) {
LogError("%s, Socket has failed when writing data to the master, retrying connection", m_name); LogError("%s, Socket has failed when writing data to the master, retrying connection", m_name.c_str());
m_socket.close(); m_socket.close();
open(); open();
return false; return false;

View File

@@ -30,7 +30,7 @@
class CDMRNetwork class CDMRNetwork
{ {
public: public:
CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, const char* name, bool debug); CDMRNetwork(const std::string& address, unsigned int port, unsigned int local, unsigned int id, const std::string& password, const std::string& name, bool debug);
~CDMRNetwork(); ~CDMRNetwork();
void setOptions(const std::string& options); void setOptions(const std::string& options);
@@ -60,7 +60,7 @@ private:
unsigned int m_port; unsigned int m_port;
uint8_t* m_id; uint8_t* m_id;
std::string m_password; std::string m_password;
const char* m_name; std::string m_name;
bool m_debug; bool m_debug;
CUDPSocket m_socket; CUDPSocket m_socket;

View File

@@ -24,7 +24,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CPassAllPC::CPassAllPC(const char* name, unsigned int slot) : CPassAllPC::CPassAllPC(const std::string& name, unsigned int slot) :
m_name(name), m_name(name),
m_slot(slot) m_slot(slot)
{ {
@@ -43,7 +43,7 @@ bool CPassAllPC::process(CDMRData& data, bool trace)
bool ret = (flco == FLCO_USER_USER && slotNo == m_slot); bool ret = (flco == FLCO_USER_USER && slotNo == m_slot);
if (trace) if (trace)
LogDebug("Rule Trace,\tPassAllPC %s Slot=%u: %s", m_name, m_slot, ret ? "matched" : "not matched"); LogDebug("Rule Trace,\tPassAllPC %s Slot=%u: %s", m_name.c_str(), m_slot, ret ? "matched" : "not matched");
return ret; return ret;
} }

View File

@@ -22,15 +22,17 @@
#include "Rewrite.h" #include "Rewrite.h"
#include "DMRData.h" #include "DMRData.h"
#include <string>
class CPassAllPC : public IRewrite { class CPassAllPC : public IRewrite {
public: public:
CPassAllPC(const char* name, unsigned int slot); CPassAllPC(const std::string& name, unsigned int slot);
virtual ~CPassAllPC(); virtual ~CPassAllPC();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_slot; unsigned int m_slot;
}; };

View File

@@ -24,7 +24,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CPassAllTG::CPassAllTG(const char* name, unsigned int slot) : CPassAllTG::CPassAllTG(const std::string& name, unsigned int slot) :
m_name(name), m_name(name),
m_slot(slot) m_slot(slot)
{ {
@@ -43,7 +43,7 @@ bool CPassAllTG::process(CDMRData& data, bool trace)
bool ret = (flco == FLCO_GROUP && slotNo == m_slot); bool ret = (flco == FLCO_GROUP && slotNo == m_slot);
if (trace) if (trace)
LogDebug("Rule Trace,\tPassAllTG %s Slot=%u: %s", m_name, m_slot, ret ? "matched" : "not matched"); LogDebug("Rule Trace,\tPassAllTG %s Slot=%u: %s", m_name.c_str(), m_slot, ret ? "matched" : "not matched");
return ret; return ret;
} }

View File

@@ -22,15 +22,17 @@
#include "Rewrite.h" #include "Rewrite.h"
#include "DMRData.h" #include "DMRData.h"
#include <string>
class CPassAllTG : public IRewrite { class CPassAllTG : public IRewrite {
public: public:
CPassAllTG(const char* name, unsigned int slot); CPassAllTG(const std::string& name, unsigned int slot);
virtual ~CPassAllTG(); virtual ~CPassAllTG();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_slot; unsigned int m_slot;
}; };

View File

@@ -25,7 +25,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CRewritePC::CRewritePC(const char* name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toId, unsigned int range) : CRewritePC::CRewritePC(const std::string& name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toId, unsigned int range) :
m_name(name), m_name(name),
m_fromSlot(fromSlot), m_fromSlot(fromSlot),
m_fromIdStart(fromId), m_fromIdStart(fromId),
@@ -52,7 +52,7 @@ bool CRewritePC::process(CDMRData& data, bool trace)
if (flco != FLCO_USER_USER || slotNo != m_fromSlot || dstId < m_fromIdStart || dstId > m_fromIdEnd) { if (flco != FLCO_USER_USER || slotNo != m_fromSlot || dstId < m_fromIdStart || dstId > m_fromIdEnd) {
if (trace) if (trace)
LogDebug("Rule Trace,\tRewritePC from %s Slot=%u Dst=%u-%u: not matched", m_name, m_fromSlot, m_fromIdStart, m_fromIdEnd); LogDebug("Rule Trace,\tRewritePC from %s Slot=%u Dst=%u-%u: not matched", m_name.c_str(), m_fromSlot, m_fromIdStart, m_fromIdEnd);
return false; return false;
} }
@@ -84,8 +84,8 @@ bool CRewritePC::process(CDMRData& data, bool trace)
} }
if (trace) { if (trace) {
LogDebug("Rule Trace,\tRewritePC from %s Slot=%u Dst=%u-%u: not matched", m_name, m_fromSlot, m_fromIdStart, m_fromIdEnd); LogDebug("Rule Trace,\tRewritePC from %s Slot=%u Dst=%u-%u: not matched", m_name.c_str(), m_fromSlot, m_fromIdStart, m_fromIdEnd);
LogDebug("Rule Trace,\tRewritePC to %s Slot=%u Dst=%u-%u", m_name, m_toSlot, m_toIdStart, m_toIdEnd); LogDebug("Rule Trace,\tRewritePC to %s Slot=%u Dst=%u-%u", m_name.c_str(), m_toSlot, m_toIdStart, m_toIdEnd);
} }
return true; return true;

View File

@@ -24,15 +24,17 @@
#include "DMRData.h" #include "DMRData.h"
#include "DMRLC.h" #include "DMRLC.h"
#include <string>
class CRewritePC : public IRewrite { class CRewritePC : public IRewrite {
public: public:
CRewritePC(const char* name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toId, unsigned int range); CRewritePC(const std::string& name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toId, unsigned int range);
virtual ~CRewritePC(); virtual ~CRewritePC();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_fromSlot; unsigned int m_fromSlot;
unsigned int m_fromIdStart; unsigned int m_fromIdStart;
unsigned int m_fromIdEnd; unsigned int m_fromIdEnd;

View File

@@ -25,7 +25,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CRewriteSrc::CRewriteSrc(const char* name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toTG, unsigned int range) : CRewriteSrc::CRewriteSrc(const std::string& name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toTG, unsigned int range) :
m_name(name), m_name(name),
m_fromSlot(fromSlot), m_fromSlot(fromSlot),
m_fromIdStart(fromId), m_fromIdStart(fromId),
@@ -53,7 +53,7 @@ bool CRewriteSrc::process(CDMRData& data, bool trace)
if (flco != FLCO_USER_USER || slotNo != m_fromSlot || srcId < m_fromIdStart || srcId > m_fromIdEnd) { if (flco != FLCO_USER_USER || slotNo != m_fromSlot || srcId < m_fromIdStart || srcId > m_fromIdEnd) {
if (trace) if (trace)
LogDebug("Rule Trace,\tRewriteSrc from %s Slot=%u Src=%u-%u: not matched", m_name, m_fromSlot, m_fromIdStart, m_fromIdEnd); LogDebug("Rule Trace,\tRewriteSrc from %s Slot=%u Src=%u-%u: not matched", m_name.c_str(), m_fromSlot, m_fromIdStart, m_fromIdEnd);
return false; return false;
} }
@@ -82,8 +82,8 @@ bool CRewriteSrc::process(CDMRData& data, bool trace)
} }
if (trace) { if (trace) {
LogDebug("Rule Trace,\tRewriteSrc from %s Slot=%u Src=%u-%u: matched", m_name, m_fromSlot, m_fromIdStart, m_fromIdEnd); LogDebug("Rule Trace,\tRewriteSrc from %s Slot=%u Src=%u-%u: matched", m_name.c_str(), m_fromSlot, m_fromIdStart, m_fromIdEnd);
LogDebug("Rule Trace,\tRewriteSrc to %s Slot=%u Dst=TG%u", m_name, m_toSlot, m_toTG); LogDebug("Rule Trace,\tRewriteSrc to %s Slot=%u Dst=TG%u", m_name.c_str(), m_toSlot, m_toTG);
} }
return true; return true;

View File

@@ -24,15 +24,17 @@
#include "DMRData.h" #include "DMRData.h"
#include "DMRLC.h" #include "DMRLC.h"
#include <string>
class CRewriteSrc : public IRewrite { class CRewriteSrc : public IRewrite {
public: public:
CRewriteSrc(const char* name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toTG, unsigned int range); CRewriteSrc(const std::string& name, unsigned int fromSlot, unsigned int fromId, unsigned int toSlot, unsigned int toTG, unsigned int range);
virtual ~CRewriteSrc(); virtual ~CRewriteSrc();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_fromSlot; unsigned int m_fromSlot;
unsigned int m_fromIdStart; unsigned int m_fromIdStart;
unsigned int m_fromIdEnd; unsigned int m_fromIdEnd;

View File

@@ -25,7 +25,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CRewriteTG::CRewriteTG(const char* name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toTG, unsigned int range) : CRewriteTG::CRewriteTG(const std::string& name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toTG, unsigned int range) :
m_name(name), m_name(name),
m_fromSlot(fromSlot), m_fromSlot(fromSlot),
m_fromTGStart(fromTG), m_fromTGStart(fromTG),
@@ -53,9 +53,9 @@ bool CRewriteTG::process(CDMRData& data, bool trace)
if (flco != FLCO_GROUP || slotNo != m_fromSlot || dstId < m_fromTGStart || dstId > m_fromTGEnd) { if (flco != FLCO_GROUP || slotNo != m_fromSlot || dstId < m_fromTGStart || dstId > m_fromTGEnd) {
if (trace) { if (trace) {
if (m_fromTGStart == m_fromTGEnd) if (m_fromTGStart == m_fromTGEnd)
LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u: not matched", m_name, m_fromSlot, m_fromTGStart); LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u: not matched", m_name.c_str(), m_fromSlot, m_fromTGStart);
else else
LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u-TG%u: not matched", m_name, m_fromSlot, m_fromTGStart, m_fromTGEnd); LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u-TG%u: not matched", m_name.c_str(), m_fromSlot, m_fromTGStart, m_fromTGEnd);
} }
return false; return false;
} }
@@ -89,13 +89,13 @@ bool CRewriteTG::process(CDMRData& data, bool trace)
if (trace) { if (trace) {
if (m_fromTGStart == m_fromTGEnd) if (m_fromTGStart == m_fromTGEnd)
LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u: matched", m_name, m_fromSlot, m_fromTGStart); LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u: matched", m_name.c_str(), m_fromSlot, m_fromTGStart);
else else
LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u-TG%u: matched", m_name, m_fromSlot, m_fromTGStart, m_fromTGEnd); LogDebug("Rule Trace,\tRewriteTG from %s Slot=%u Dst=TG%u-TG%u: matched", m_name.c_str(), m_fromSlot, m_fromTGStart, m_fromTGEnd);
if (m_toTGStart == m_toTGEnd) if (m_toTGStart == m_toTGEnd)
LogDebug("Rule Trace,\tRewriteTG to %s Slot=%u Dst=TG%u", m_name, m_toSlot, m_toTGStart); LogDebug("Rule Trace,\tRewriteTG to %s Slot=%u Dst=TG%u", m_name.c_str(), m_toSlot, m_toTGStart);
else else
LogDebug("Rule Trace,\tRewriteTG to %s Slot=%u Dst=TG%u-TG%u", m_name, m_toSlot, m_toTGStart, m_toTGEnd); LogDebug("Rule Trace,\tRewriteTG to %s Slot=%u Dst=TG%u-TG%u", m_name.c_str(), m_toSlot, m_toTGStart, m_toTGEnd);
} }
return true; return true;

View File

@@ -24,15 +24,17 @@
#include "DMRData.h" #include "DMRData.h"
#include "DMRLC.h" #include "DMRLC.h"
#include <string>
class CRewriteTG : public IRewrite { class CRewriteTG : public IRewrite {
public: public:
CRewriteTG(const char*name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toTG, unsigned int range); CRewriteTG(const std::string& name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toTG, unsigned int range);
virtual ~CRewriteTG(); virtual ~CRewriteTG();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_fromSlot; unsigned int m_fromSlot;
unsigned int m_fromTGStart; unsigned int m_fromTGStart;
unsigned int m_fromTGEnd; unsigned int m_fromTGEnd;

View File

@@ -25,7 +25,7 @@
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>
CRewriteType::CRewriteType(const char* name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toId) : CRewriteType::CRewriteType(const std::string& name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toId) :
m_name(name), m_name(name),
m_fromSlot(fromSlot), m_fromSlot(fromSlot),
m_fromTG(fromTG), m_fromTG(fromTG),
@@ -50,7 +50,7 @@ bool CRewriteType::process(CDMRData& data, bool trace)
if (flco != FLCO_GROUP || slotNo != m_fromSlot || dstId != m_fromTG) { if (flco != FLCO_GROUP || slotNo != m_fromSlot || dstId != m_fromTG) {
if (trace) if (trace)
LogDebug("Rule Trace,\tRewriteType %s Slot=%u Dst=TG%u: not matched", m_name, m_fromSlot, m_fromTG); LogDebug("Rule Trace,\tRewriteType %s Slot=%u Dst=TG%u: not matched", m_name.c_str(), m_fromSlot, m_fromTG);
return false; return false;
} }
@@ -79,7 +79,7 @@ bool CRewriteType::process(CDMRData& data, bool trace)
} }
if (trace) if (trace)
LogDebug("Rule Trace,\tRewriteType %s Slot=%u Dst=TG%u: matched", m_name, m_fromSlot, m_fromTG); LogDebug("Rule Trace,\tRewriteType %s Slot=%u Dst=TG%u: matched", m_name.c_str(), m_fromSlot, m_fromTG);
return true; return true;
} }

View File

@@ -24,15 +24,17 @@
#include "DMRData.h" #include "DMRData.h"
#include "DMRLC.h" #include "DMRLC.h"
#include <string>
class CRewriteType : public IRewrite { class CRewriteType : public IRewrite {
public: public:
CRewriteType(const char* name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toId); CRewriteType(const std::string& name, unsigned int fromSlot, unsigned int fromTG, unsigned int toSlot, unsigned int toId);
virtual ~CRewriteType(); virtual ~CRewriteType();
virtual bool process(CDMRData& data, bool trace); virtual bool process(CDMRData& data, bool trace);
private: private:
const char* m_name; std::string m_name;
unsigned int m_fromSlot; unsigned int m_fromSlot;
unsigned int m_fromTG; unsigned int m_fromTG;
unsigned int m_toSlot; unsigned int m_toSlot;