From fa558552d89c7f9f378c33c36acdd654129243f1 Mon Sep 17 00:00:00 2001 From: Alexander Mokrov UR6LKW Date: Sun, 1 Jun 2025 17:43:06 +0300 Subject: [PATCH] [unlim-networks] Config --- Conf.cpp | 1129 +++++------------------------------------------------- Conf.h | 236 +++--------- 2 files changed, 140 insertions(+), 1225 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 2c92546..d7e959f 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -23,6 +23,7 @@ #include #include #include +#include const int BUFFER_SIZE = 500; @@ -32,11 +33,7 @@ enum class SECTION { LOG, VOICE, INFO, - DMR_NETWORK_1, - DMR_NETWORK_2, - DMR_NETWORK_3, - DMR_NETWORK_4, - DMR_NETWORK_5, + DMR_NETWORK_N, XLX_NETWORK, GPSD, APRS, @@ -69,96 +66,7 @@ m_infoHeight(0), m_infoLocation(), m_infoDescription(), m_infoURL(), -m_dmrNetwork1Enabled(false), -m_dmrNetwork1Name(), -m_dmrNetwork1Id(0U), -m_dmrNetwork1Address(), -m_dmrNetwork1Port(0U), -m_dmrNetwork1Local(0U), -m_dmrNetwork1Password(), -m_dmrNetwork1Options(), -m_dmrNetwork1Location(true), -m_dmrNetwork1Debug(false), -m_dmrNetwork1TGRewrites(), -m_dmrNetwork1PCRewrites(), -m_dmrNetwork1TypeRewrites(), -m_dmrNetwork1SrcRewrites(), -m_dmrNetwork1TGDynRewrites(), -m_dmrNetwork1IdRewrites(), -m_dmrNetwork1PassAllPC(), -m_dmrNetwork1PassAllTG(), -m_dmrNetwork2Enabled(false), -m_dmrNetwork2Name(), -m_dmrNetwork2Id(0U), -m_dmrNetwork2Address(), -m_dmrNetwork2Port(0U), -m_dmrNetwork2Local(0U), -m_dmrNetwork2Password(), -m_dmrNetwork2Options(), -m_dmrNetwork2Location(true), -m_dmrNetwork2Debug(false), -m_dmrNetwork2TGRewrites(), -m_dmrNetwork2PCRewrites(), -m_dmrNetwork2TypeRewrites(), -m_dmrNetwork2SrcRewrites(), -m_dmrNetwork2TGDynRewrites(), -m_dmrNetwork2IdRewrites(), -m_dmrNetwork2PassAllPC(), -m_dmrNetwork2PassAllTG(), -m_dmrNetwork3Enabled(false), -m_dmrNetwork3Name(), -m_dmrNetwork3Id(0U), -m_dmrNetwork3Address(), -m_dmrNetwork3Port(0U), -m_dmrNetwork3Local(0U), -m_dmrNetwork3Password(), -m_dmrNetwork3Options(), -m_dmrNetwork3Location(true), -m_dmrNetwork3Debug(false), -m_dmrNetwork3TGRewrites(), -m_dmrNetwork3PCRewrites(), -m_dmrNetwork3TypeRewrites(), -m_dmrNetwork3SrcRewrites(), -m_dmrNetwork3TGDynRewrites(), -m_dmrNetwork3IdRewrites(), -m_dmrNetwork3PassAllPC(), -m_dmrNetwork3PassAllTG(), -m_dmrNetwork4Enabled(false), -m_dmrNetwork4Name(), -m_dmrNetwork4Id(0U), -m_dmrNetwork4Address(), -m_dmrNetwork4Port(0U), -m_dmrNetwork4Local(0U), -m_dmrNetwork4Password(), -m_dmrNetwork4Options(), -m_dmrNetwork4Location(true), -m_dmrNetwork4Debug(false), -m_dmrNetwork4TGRewrites(), -m_dmrNetwork4PCRewrites(), -m_dmrNetwork4TypeRewrites(), -m_dmrNetwork4SrcRewrites(), -m_dmrNetwork4TGDynRewrites(), -m_dmrNetwork4IdRewrites(), -m_dmrNetwork4PassAllPC(), -m_dmrNetwork4PassAllTG(), -m_dmrNetwork5Enabled(false), -m_dmrNetwork5Name(), -m_dmrNetwork5Id(0U), -m_dmrNetwork5Address(), -m_dmrNetwork5Port(0U), -m_dmrNetwork5Local(0U), -m_dmrNetwork5Password(), -m_dmrNetwork5Options(), -m_dmrNetwork5Location(true), -m_dmrNetwork5Debug(false), -m_dmrNetwork5TGRewrites(), -m_dmrNetwork5PCRewrites(), -m_dmrNetwork5TypeRewrites(), -m_dmrNetwork5SrcRewrites(), -m_dmrNetwork5TGDynRewrites(), -m_dmrNetwork5IdRewrites(), -m_dmrNetwork5PassAllPC(), -m_dmrNetwork5PassAllTG(), +m_dmrNetworks(), m_xlxNetworkEnabled(false), m_xlxNetworkId(0U), m_xlxNetworkFile(), @@ -204,6 +112,7 @@ bool CConf::read() } SECTION section = SECTION::NONE; + CDMRNetConfStruct *lastDmrNet = nullptr; char buffer[BUFFER_SIZE]; while (::fgets(buffer, BUFFER_SIZE, fp) != nullptr) { @@ -211,36 +120,30 @@ bool CConf::read() continue; if (buffer[0U] == '[') { - if (::strncmp(buffer, "[General]", 9U) == 0) + if (::strncmp(buffer, "[General]", 9U) == 0) { section = SECTION::GENERAL; - else if (::strncmp(buffer, "[Log]", 5U) == 0) + } else if (::strncmp(buffer, "[Log]", 5U) == 0) { section = SECTION::LOG; - else if (::strncmp(buffer, "[Voice]", 7U) == 0) + } else if (::strncmp(buffer, "[Voice]", 7U) == 0) { section = SECTION::VOICE; - else if (::strncmp(buffer, "[Info]", 6U) == 0) + } else if (::strncmp(buffer, "[Info]", 6U) == 0) { section = SECTION::INFO; - else if (::strncmp(buffer, "[XLX Network]", 13U) == 0) + } else if (::strncmp(buffer, "[XLX Network]", 13U) == 0) { section = SECTION::XLX_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 if (::strncmp(buffer, "[DMR Network 3]", 15U) == 0) - section = SECTION::DMR_NETWORK_3; - else if (::strncmp(buffer, "[DMR Network 4]", 15U) == 0) - section = SECTION::DMR_NETWORK_4; - else if (::strncmp(buffer, "[DMR Network 5]", 15U) == 0) - section = SECTION::DMR_NETWORK_5; - else if (::strncmp(buffer, "[GPSD]", 6U) == 0) + } else if (::strncmp(buffer, "[DMR Network", 12U) == 0) { + section = SECTION::DMR_NETWORK_N; + lastDmrNet = addDMRNetwork(); + } else if (::strncmp(buffer, "[GPSD]", 6U) == 0) { section = SECTION::GPSD; - else if (::strncmp(buffer, "[APRS]", 6U) == 0) + } else if (::strncmp(buffer, "[APRS]", 6U) == 0) { section = SECTION::APRS; - else if (::strncmp(buffer, "[Dynamic TG Control]", 20U) == 0) + } else if (::strncmp(buffer, "[Dynamic TG Control]", 20U) == 0) { section = SECTION::DYNAMIC_TG_CONTROL; - else if (::strncmp(buffer, "[Remote Control]", 16U) == 0) + } else if (::strncmp(buffer, "[Remote Control]", 16U) == 0) { section = SECTION::REMOTE_CONTROL; - else + } else { section = SECTION::NONE; + } continue; } @@ -362,27 +265,28 @@ bool CConf::read() m_xlxNetworkUserControl = ::atoi(value) ==1; else if (::strcmp(key, "Module") == 0) m_xlxNetworkModule = ::toupper(value[0]); - } else if (section == SECTION::DMR_NETWORK_1) { + } else if (section == SECTION::DMR_NETWORK_N) { + assert(lastDmrNet != nullptr); if (::strcmp(key, "Enabled") == 0) - m_dmrNetwork1Enabled = ::atoi(value) == 1; + lastDmrNet->m_Enabled = ::atoi(value) == 1; else if (::strcmp(key, "Name") == 0) - m_dmrNetwork1Name = value; + lastDmrNet->m_Name = value; else if (::strcmp(key, "Id") == 0) - m_dmrNetwork1Id = (unsigned int)::atoi(value); + lastDmrNet->m_Id = (unsigned int)::atoi(value); else if (::strcmp(key, "Address") == 0) - m_dmrNetwork1Address = value; + lastDmrNet->m_Address = value; else if (::strcmp(key, "Port") == 0) - m_dmrNetwork1Port = (unsigned short)::atoi(value); + lastDmrNet->m_Port = (unsigned short)::atoi(value); else if (::strcmp(key, "Local") == 0) - m_dmrNetwork1Local = (unsigned short)::atoi(value); + lastDmrNet->m_Local = (unsigned short)::atoi(value); else if (::strcmp(key, "Password") == 0) - m_dmrNetwork1Password = value; + lastDmrNet->m_Password = value; else if (::strcmp(key, "Options") == 0) - m_dmrNetwork1Options = value; + lastDmrNet->m_Options = value; else if (::strcmp(key, "Location") == 0) - m_dmrNetwork1Location = ::atoi(value) == 1; + lastDmrNet->m_Location = ::atoi(value) == 1; else if (::strcmp(key, "Debug") == 0) - m_dmrNetwork1Debug = ::atoi(value) == 1; + lastDmrNet->m_Debug = ::atoi(value) == 1; else if (::strncmp(key, "TGRewrite", 9U) == 0) { char* p1 = ::strtok(value, ", "); char* p2 = ::strtok(nullptr, ", "); @@ -396,7 +300,7 @@ bool CConf::read() rewrite.m_toSlot = ::atoi(p3); rewrite.m_toTG = ::atoi(p4); rewrite.m_range = ::atoi(p5); - m_dmrNetwork1TGRewrites.push_back(rewrite); + lastDmrNet->m_TGRewrites.push_back(rewrite); } } else if (::strncmp(key, "PCRewrite", 9U) == 0) { char* p1 = ::strtok(value, ", "); @@ -411,7 +315,7 @@ bool CConf::read() rewrite.m_toSlot = ::atoi(p3); rewrite.m_toId = ::atoi(p4); rewrite.m_range = ::atoi(p5); - m_dmrNetwork1PCRewrites.push_back(rewrite); + lastDmrNet->m_PCRewrites.push_back(rewrite); } } else if (::strncmp(key, "TypeRewrite", 11U) == 0) { char* p1 = ::strtok(value, ", "); @@ -426,7 +330,7 @@ bool CConf::read() rewrite.m_toId = ::atoi(p4); char* p5 = ::strtok(nullptr, " \r\n"); rewrite.m_range = p5 != nullptr ? ::atoi(p5) : 1; - m_dmrNetwork1TypeRewrites.push_back(rewrite); + lastDmrNet->m_TypeRewrites.push_back(rewrite); } } else if (::strncmp(key, "SrcRewrite", 10U) == 0) { char* p1 = ::strtok(value, ", "); @@ -441,7 +345,7 @@ bool CConf::read() rewrite.m_toSlot = ::atoi(p3); rewrite.m_toTG = ::atoi(p4); rewrite.m_range = ::atoi(p5); - m_dmrNetwork1SrcRewrites.push_back(rewrite); + lastDmrNet->m_SrcRewrites.push_back(rewrite); } } else if (::strncmp(key, "TGDynRewrite", 12U) == 0) { std::vector p7; @@ -466,7 +370,7 @@ bool CConf::read() unsigned int tg = ::atoi(*it); rewrite.m_exclTGs.push_back(tg); } - m_dmrNetwork1TGDynRewrites.push_back(rewrite); + lastDmrNet->m_TGDynRewrites.push_back(rewrite); } } else if (::strncmp(key, "IdRewrite", 9U) == 0) { char* rfId = ::strtok(value, ", "); @@ -475,502 +379,14 @@ bool CConf::read() CIdRewriteStruct rewrite; rewrite.m_rfId = ::atoi(rfId); rewrite.m_netId = ::atoi(netId); - m_dmrNetwork1IdRewrites.push_back(rewrite); + lastDmrNet->m_IdRewrites.push_back(rewrite); } } else if (::strncmp(key, "PassAllPC", 9U) == 0) { unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork1PassAllPC.push_back(slotNo); + lastDmrNet->m_PassAllPC.push_back(slotNo); } else if (::strncmp(key, "PassAllTG", 9U) == 0) { unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork1PassAllTG.push_back(slotNo); - } - } else if (section == SECTION::DMR_NETWORK_2) { - if (::strcmp(key, "Enabled") == 0) - m_dmrNetwork2Enabled = ::atoi(value) == 1; - else if (::strcmp(key, "Name") == 0) - m_dmrNetwork2Name = value; - else if (::strcmp(key, "Id") == 0) - m_dmrNetwork2Id = (unsigned int)::atoi(value); - else if (::strcmp(key, "Address") == 0) - m_dmrNetwork2Address = value; - else if (::strcmp(key, "Port") == 0) - m_dmrNetwork2Port = (unsigned short)::atoi(value); - else if (::strcmp(key, "Local") == 0) - m_dmrNetwork2Local = (unsigned short)::atoi(value); - else if (::strcmp(key, "Password") == 0) - m_dmrNetwork2Password = value; - else if (::strcmp(key, "Options") == 0) - m_dmrNetwork2Options = value; - else if (::strcmp(key, "Location") == 0) - m_dmrNetwork2Location = ::atoi(value) == 1; - else if (::strcmp(key, "Debug") == 0) - m_dmrNetwork2Debug = ::atoi(value) == 1; - else if (::strncmp(key, "TGRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CTGRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork2TGRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PCRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CPCRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork2PCRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TypeRewrite", 11U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr) { - CTypeRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - char* p5 = ::strtok(nullptr, " \r\n"); - rewrite.m_range = p5 != nullptr ? ::atoi(p5) : 1; - m_dmrNetwork2TypeRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "SrcRewrite", 10U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CSrcRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork2SrcRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TGDynRewrite", 12U) == 0) { - std::vector p7; - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, ", "); - char* p6 = ::strtok(nullptr, ", \r\n"); - char* p; - while ((p = ::strtok(nullptr, ", \r\n")) != nullptr) - p7.push_back(p); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr && p6 != nullptr) { - CTGDynRewriteStruct rewrite; - rewrite.m_slot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_discPC = ::atoi(p3); - rewrite.m_statusPC = ::atoi(p4); - rewrite.m_toTG = ::atoi(p5); - rewrite.m_range = ::atoi(p6); - for (std::vector::const_iterator it = p7.cbegin(); it != p7.cend(); ++it) { - unsigned int tg = ::atoi(*it); - rewrite.m_exclTGs.push_back(tg); - } - m_dmrNetwork2TGDynRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "IdRewrite", 9U) == 0) { - char* rfId = ::strtok(value, ", "); - char* netId = ::strtok(nullptr, " \r\n"); - if (rfId != nullptr && netId != nullptr) { - CIdRewriteStruct rewrite; - rewrite.m_rfId = ::atoi(rfId); - rewrite.m_netId = ::atoi(netId); - m_dmrNetwork2IdRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PassAllPC", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork2PassAllPC.push_back(slotNo); - } else if (::strncmp(key, "PassAllTG", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork2PassAllTG.push_back(slotNo); - } - } else if (section == SECTION::DMR_NETWORK_3) { - if (::strcmp(key, "Enabled") == 0) - m_dmrNetwork3Enabled = ::atoi(value) == 1; - else if (::strcmp(key, "Name") == 0) - m_dmrNetwork3Name = value; - else if (::strcmp(key, "Id") == 0) - m_dmrNetwork3Id = (unsigned int)::atoi(value); - else if (::strcmp(key, "Address") == 0) - m_dmrNetwork3Address = value; - else if (::strcmp(key, "Port") == 0) - m_dmrNetwork3Port = (unsigned short)::atoi(value); - else if (::strcmp(key, "Local") == 0) - m_dmrNetwork3Local = (unsigned short)::atoi(value); - else if (::strcmp(key, "Password") == 0) - m_dmrNetwork3Password = value; - else if (::strcmp(key, "Options") == 0) - m_dmrNetwork3Options = value; - else if (::strcmp(key, "Location") == 0) - m_dmrNetwork3Location = ::atoi(value) == 1; - else if (::strcmp(key, "Debug") == 0) - m_dmrNetwork3Debug = ::atoi(value) == 1; - else if (::strncmp(key, "TGRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CTGRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork3TGRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PCRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CPCRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork3PCRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TypeRewrite", 11U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr) { - CTypeRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - char* p5 = ::strtok(nullptr, " \r\n"); - rewrite.m_range = p5 != nullptr ? ::atoi(p5) : 1; - m_dmrNetwork3TypeRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "SrcRewrite", 10U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CSrcRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork3SrcRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TGDynRewrite", 12U) == 0) { - std::vector p7; - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, ", "); - char* p6 = ::strtok(nullptr, ", \r\n"); - char* p; - while ((p = ::strtok(nullptr, ", \r\n")) != nullptr) - p7.push_back(p); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr && p6 != nullptr) { - CTGDynRewriteStruct rewrite; - rewrite.m_slot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_discPC = ::atoi(p3); - rewrite.m_statusPC = ::atoi(p4); - rewrite.m_toTG = ::atoi(p5); - rewrite.m_range = ::atoi(p6); - for (std::vector::const_iterator it = p7.cbegin(); it != p7.cend(); ++it) { - unsigned int tg = ::atoi(*it); - rewrite.m_exclTGs.push_back(tg); - } - m_dmrNetwork3TGDynRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "IdRewrite", 9U) == 0) { - char* rfId = ::strtok(value, ", "); - char* netId = ::strtok(nullptr, " \r\n"); - if (rfId != nullptr && netId != nullptr) { - CIdRewriteStruct rewrite; - rewrite.m_rfId = ::atoi(rfId); - rewrite.m_netId = ::atoi(netId); - m_dmrNetwork3IdRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PassAllPC", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork3PassAllPC.push_back(slotNo); - } else if (::strncmp(key, "PassAllTG", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork3PassAllTG.push_back(slotNo); - } - } else if (section == SECTION::DMR_NETWORK_4) { - if (::strcmp(key, "Enabled") == 0) - m_dmrNetwork4Enabled = ::atoi(value) == 1; - else if (::strcmp(key, "Name") == 0) - m_dmrNetwork4Name = value; - else if (::strcmp(key, "Id") == 0) - m_dmrNetwork4Id = (unsigned int)::atoi(value); - else if (::strcmp(key, "Address") == 0) - m_dmrNetwork4Address = value; - else if (::strcmp(key, "Port") == 0) - m_dmrNetwork4Port = (unsigned short)::atoi(value); - else if (::strcmp(key, "Local") == 0) - m_dmrNetwork4Local = (unsigned short)::atoi(value); - else if (::strcmp(key, "Password") == 0) - m_dmrNetwork4Password = value; - else if (::strcmp(key, "Options") == 0) - m_dmrNetwork4Options = value; - else if (::strcmp(key, "Location") == 0) - m_dmrNetwork4Location = ::atoi(value) == 1; - else if (::strcmp(key, "Debug") == 0) - m_dmrNetwork4Debug = ::atoi(value) == 1; - else if (::strncmp(key, "TGRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CTGRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork4TGRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PCRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CPCRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork4PCRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TypeRewrite", 11U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr) { - CTypeRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - char* p5 = ::strtok(nullptr, " \r\n"); - rewrite.m_range = p5 != nullptr ? ::atoi(p5) : 1; - m_dmrNetwork4TypeRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "SrcRewrite", 10U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CSrcRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork4SrcRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TGDynRewrite", 12U) == 0) { - std::vector p7; - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, ", "); - char* p6 = ::strtok(nullptr, ", \r\n"); - char* p; - while ((p = ::strtok(nullptr, ", \r\n")) != nullptr) - p7.push_back(p); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr && p6 != nullptr) { - CTGDynRewriteStruct rewrite; - rewrite.m_slot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_discPC = ::atoi(p3); - rewrite.m_statusPC = ::atoi(p4); - rewrite.m_toTG = ::atoi(p5); - rewrite.m_range = ::atoi(p6); - for (std::vector::const_iterator it = p7.cbegin(); it != p7.cend(); ++it) { - unsigned int tg = ::atoi(*it); - rewrite.m_exclTGs.push_back(tg); - } - m_dmrNetwork4TGDynRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "IdRewrite", 9U) == 0) { - char* rfId = ::strtok(value, ", "); - char* netId = ::strtok(nullptr, " \r\n"); - if (rfId != nullptr && netId != nullptr) { - CIdRewriteStruct rewrite; - rewrite.m_rfId = ::atoi(rfId); - rewrite.m_netId = ::atoi(netId); - m_dmrNetwork4IdRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PassAllPC", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork4PassAllPC.push_back(slotNo); - } else if (::strncmp(key, "PassAllTG", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork4PassAllTG.push_back(slotNo); - } - } else if (section == SECTION::DMR_NETWORK_5) { - if (::strcmp(key, "Enabled") == 0) - m_dmrNetwork5Enabled = ::atoi(value) == 1; - else if (::strcmp(key, "Name") == 0) - m_dmrNetwork5Name = value; - else if (::strcmp(key, "Id") == 0) - m_dmrNetwork5Id = (unsigned int)::atoi(value); - else if (::strcmp(key, "Address") == 0) - m_dmrNetwork5Address = value; - else if (::strcmp(key, "Port") == 0) - m_dmrNetwork5Port = (unsigned short)::atoi(value); - else if (::strcmp(key, "Local") == 0) - m_dmrNetwork5Local = (unsigned short)::atoi(value); - else if (::strcmp(key, "Password") == 0) - m_dmrNetwork5Password = value; - else if (::strcmp(key, "Options") == 0) - m_dmrNetwork5Options = value; - else if (::strcmp(key, "Location") == 0) - m_dmrNetwork5Location = ::atoi(value) == 1; - else if (::strcmp(key, "Debug") == 0) - m_dmrNetwork5Debug = ::atoi(value) == 1; - else if (::strncmp(key, "TGRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CTGRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork5TGRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PCRewrite", 9U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CPCRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork5PCRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TypeRewrite", 11U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr) { - CTypeRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toId = ::atoi(p4); - char* p5 = ::strtok(nullptr, " \r\n"); - rewrite.m_range = p5 != nullptr ? ::atoi(p5) : 1; - m_dmrNetwork5TypeRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "SrcRewrite", 10U) == 0) { - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, " \r\n"); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr) { - CSrcRewriteStruct rewrite; - rewrite.m_fromSlot = ::atoi(p1); - rewrite.m_fromId = ::atoi(p2); - rewrite.m_toSlot = ::atoi(p3); - rewrite.m_toTG = ::atoi(p4); - rewrite.m_range = ::atoi(p5); - m_dmrNetwork5SrcRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "TGDynRewrite", 12U) == 0) { - std::vector p7; - char* p1 = ::strtok(value, ", "); - char* p2 = ::strtok(nullptr, ", "); - char* p3 = ::strtok(nullptr, ", "); - char* p4 = ::strtok(nullptr, ", "); - char* p5 = ::strtok(nullptr, ", "); - char* p6 = ::strtok(nullptr, ", \r\n"); - char* p; - while ((p = ::strtok(nullptr, ", \r\n")) != nullptr) - p7.push_back(p); - if (p1 != nullptr && p2 != nullptr && p3 != nullptr && p4 != nullptr && p5 != nullptr && p6 != nullptr) { - CTGDynRewriteStruct rewrite; - rewrite.m_slot = ::atoi(p1); - rewrite.m_fromTG = ::atoi(p2); - rewrite.m_discPC = ::atoi(p3); - rewrite.m_statusPC = ::atoi(p4); - rewrite.m_toTG = ::atoi(p5); - rewrite.m_range = ::atoi(p6); - for (std::vector::const_iterator it = p7.cbegin(); it != p7.cend(); ++it) { - unsigned int tg = ::atoi(*it); - rewrite.m_exclTGs.push_back(tg); - } - m_dmrNetwork5TGDynRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "IdRewrite", 9U) == 0) { - char* rfId = ::strtok(value, ", "); - char* netId = ::strtok(nullptr, " \r\n"); - if (rfId != nullptr && netId != nullptr) { - CIdRewriteStruct rewrite; - rewrite.m_rfId = ::atoi(rfId); - rewrite.m_netId = ::atoi(netId); - m_dmrNetwork5IdRewrites.push_back(rewrite); - } - } else if (::strncmp(key, "PassAllPC", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork5PassAllPC.push_back(slotNo); - } else if (::strncmp(key, "PassAllTG", 9U) == 0) { - unsigned int slotNo = (unsigned int)::atoi(value); - m_dmrNetwork5PassAllTG.push_back(slotNo); + lastDmrNet->m_PassAllTG.push_back(slotNo); } } else if (section == SECTION::GPSD) { if (::strcmp(key, "Enable") == 0) @@ -1200,469 +616,118 @@ char CConf::getXLXNetworkModule() const return m_xlxNetworkModule; } -bool CConf::getDMRNetwork1Enabled() const +CDMRNetConfStruct *CConf::addDMRNetwork() { - return m_dmrNetwork1Enabled; + m_dmrNetworks.emplace_back(); + CDMRNetConfStruct& dmrNetwork = m_dmrNetworks.back(); + + // set defaults + dmrNetwork.m_Enabled = false; + dmrNetwork.m_Id = 0U; + dmrNetwork.m_Port = 0U; + dmrNetwork.m_Local = 0U; + dmrNetwork.m_Location = true; + dmrNetwork.m_Debug = false; + + return &dmrNetwork; } -std::string CConf::getDMRNetwork1Name() const +unsigned int CConf::getDMRNetworksCount() const { - if (m_dmrNetwork1Name.empty()) - return "DMR-1"; + return m_dmrNetworks.size(); +} + +bool CConf::getDMRNetworkEnabled(unsigned int index) const +{ + return m_dmrNetworks[index].m_Enabled; +} + +std::string CConf::getDMRNetworkName(unsigned int index) const +{ + if (m_dmrNetworks[index].m_Name.empty()) + return "DMR-" + std::to_string(index + 1); else - return m_dmrNetwork1Name; + return m_dmrNetworks[index].m_Name; } -unsigned int CConf::getDMRNetwork1Id() const +unsigned int CConf::getDMRNetworkId(unsigned int index) const { - return m_dmrNetwork1Id; + return m_dmrNetworks[index].m_Id; } -std::string CConf::getDMRNetwork1Address() const +std::string CConf::getDMRNetworkAddress(unsigned int index) const { - return m_dmrNetwork1Address; + return m_dmrNetworks[index].m_Address; } -unsigned short CConf::getDMRNetwork1Port() const +unsigned short CConf::getDMRNetworkPort(unsigned int index) const { - return m_dmrNetwork1Port; + return m_dmrNetworks[index].m_Port; } -unsigned short CConf::getDMRNetwork1Local() const +unsigned short CConf::getDMRNetworkLocal(unsigned int index) const { - return m_dmrNetwork1Local; + return m_dmrNetworks[index].m_Local; } -std::string CConf::getDMRNetwork1Password() const +std::string CConf::getDMRNetworkPassword(unsigned int index) const { - return m_dmrNetwork1Password; + return m_dmrNetworks[index].m_Password; } -std::string CConf::getDMRNetwork1Options() const +std::string CConf::getDMRNetworkOptions(unsigned int index) const { - return m_dmrNetwork1Options; + return m_dmrNetworks[index].m_Options; } -bool CConf::getDMRNetwork1Location() const +bool CConf::getDMRNetworkLocation(unsigned int index) const { - return m_dmrNetwork1Location; + return m_dmrNetworks[index].m_Location; } -bool CConf::getDMRNetwork1Debug() const +bool CConf::getDMRNetworkDebug(unsigned int index) const { - return m_dmrNetwork1Debug; + return m_dmrNetworks[index].m_Debug; } -std::vector CConf::getDMRNetwork1TGRewrites() const +std::vector CConf::getDMRNetworkTGRewrites(unsigned int index) const { - return m_dmrNetwork1TGRewrites; + return m_dmrNetworks[index].m_TGRewrites; } -std::vector CConf::getDMRNetwork1PCRewrites() const +std::vector CConf::getDMRNetworkPCRewrites(unsigned int index) const { - return m_dmrNetwork1PCRewrites; + return m_dmrNetworks[index].m_PCRewrites; } -std::vector CConf::getDMRNetwork1TypeRewrites() const +std::vector CConf::getDMRNetworkTypeRewrites(unsigned int index) const { - return m_dmrNetwork1TypeRewrites; + return m_dmrNetworks[index].m_TypeRewrites; } -std::vector CConf::getDMRNetwork1SrcRewrites() const +std::vector CConf::getDMRNetworkSrcRewrites(unsigned int index) const { - return m_dmrNetwork1SrcRewrites; + return m_dmrNetworks[index].m_SrcRewrites; } -std::vector CConf::getDMRNetwork1TGDynRewrites() const +std::vector CConf::getDMRNetworkTGDynRewrites(unsigned int index) const { - return m_dmrNetwork1TGDynRewrites; + return m_dmrNetworks[index].m_TGDynRewrites; } -std::vector CConf::getDMRNetwork1IdRewrites() const +std::vector CConf::getDMRNetworkIdRewrites(unsigned int index) const { - return m_dmrNetwork1IdRewrites; + return m_dmrNetworks[index].m_IdRewrites; } -std::vector CConf::getDMRNetwork1PassAllPC() const +std::vector CConf::getDMRNetworkPassAllPC(unsigned int index) const { - return m_dmrNetwork1PassAllPC; + return m_dmrNetworks[index].m_PassAllPC; } -std::vector CConf::getDMRNetwork1PassAllTG() const +std::vector CConf::getDMRNetworkPassAllTG(unsigned int index) const { - return m_dmrNetwork1PassAllTG; -} - -bool CConf::getDMRNetwork2Enabled() const -{ - return m_dmrNetwork2Enabled; -} - -std::string CConf::getDMRNetwork2Name() const -{ - if (m_dmrNetwork2Name.empty()) - return "DMR-2"; - else - return m_dmrNetwork2Name; -} - -unsigned int CConf::getDMRNetwork2Id() const -{ - return m_dmrNetwork2Id; -} - -std::string CConf::getDMRNetwork2Address() const -{ - return m_dmrNetwork2Address; -} - -unsigned short CConf::getDMRNetwork2Port() const -{ - return m_dmrNetwork2Port; -} - -unsigned short CConf::getDMRNetwork2Local() const -{ - return m_dmrNetwork2Local; -} - -std::string CConf::getDMRNetwork2Password() const -{ - return m_dmrNetwork2Password; -} - -std::string CConf::getDMRNetwork2Options() const -{ - return m_dmrNetwork2Options; -} - -bool CConf::getDMRNetwork2Location() const -{ - return m_dmrNetwork2Location; -} - -bool CConf::getDMRNetwork2Debug() const -{ - return m_dmrNetwork2Debug; -} - -std::vector CConf::getDMRNetwork2TGRewrites() const -{ - return m_dmrNetwork2TGRewrites; -} - -std::vector CConf::getDMRNetwork2PCRewrites() const -{ - return m_dmrNetwork2PCRewrites; -} - -std::vector CConf::getDMRNetwork2TypeRewrites() const -{ - return m_dmrNetwork2TypeRewrites; -} - -std::vector CConf::getDMRNetwork2SrcRewrites() const -{ - return m_dmrNetwork2SrcRewrites; -} - -std::vector CConf::getDMRNetwork2TGDynRewrites() const -{ - return m_dmrNetwork2TGDynRewrites; -} - -std::vector CConf::getDMRNetwork2IdRewrites() const -{ - return m_dmrNetwork2IdRewrites; -} - -std::vector CConf::getDMRNetwork2PassAllPC() const -{ - return m_dmrNetwork2PassAllPC; -} - -std::vector CConf::getDMRNetwork2PassAllTG() const -{ - return m_dmrNetwork2PassAllTG; -} - -bool CConf::getDMRNetwork3Enabled() const -{ - return m_dmrNetwork3Enabled; -} - -std::string CConf::getDMRNetwork3Name() const -{ - if (m_dmrNetwork3Name.empty()) - return "DMR-3"; - else - return m_dmrNetwork3Name; -} - -unsigned int CConf::getDMRNetwork3Id() const -{ - return m_dmrNetwork3Id; -} - -std::string CConf::getDMRNetwork3Address() const -{ - return m_dmrNetwork3Address; -} - -unsigned short CConf::getDMRNetwork3Port() const -{ - return m_dmrNetwork3Port; -} - -unsigned short CConf::getDMRNetwork3Local() const -{ - return m_dmrNetwork3Local; -} - -std::string CConf::getDMRNetwork3Password() const -{ - return m_dmrNetwork3Password; -} - -std::string CConf::getDMRNetwork3Options() const -{ - return m_dmrNetwork3Options; -} - -bool CConf::getDMRNetwork3Location() const -{ - return m_dmrNetwork3Location; -} - -bool CConf::getDMRNetwork3Debug() const -{ - return m_dmrNetwork3Debug; -} - -std::vector CConf::getDMRNetwork3TGRewrites() const -{ - return m_dmrNetwork3TGRewrites; -} - -std::vector CConf::getDMRNetwork3PCRewrites() const -{ - return m_dmrNetwork3PCRewrites; -} - -std::vector CConf::getDMRNetwork3TypeRewrites() const -{ - return m_dmrNetwork3TypeRewrites; -} - -std::vector CConf::getDMRNetwork3SrcRewrites() const -{ - return m_dmrNetwork3SrcRewrites; -} - -std::vector CConf::getDMRNetwork3TGDynRewrites() const -{ - return m_dmrNetwork3TGDynRewrites; -} - -std::vector CConf::getDMRNetwork3IdRewrites() const -{ - return m_dmrNetwork3IdRewrites; -} - -std::vector CConf::getDMRNetwork3PassAllPC() const -{ - return m_dmrNetwork3PassAllPC; -} - -std::vector CConf::getDMRNetwork3PassAllTG() const -{ - return m_dmrNetwork3PassAllTG; -} - -bool CConf::getDMRNetwork4Enabled() const -{ - return m_dmrNetwork4Enabled; -} - -std::string CConf::getDMRNetwork4Name() const -{ - if (m_dmrNetwork4Name.empty()) - return "DMR-4"; - else - return m_dmrNetwork4Name; -} - -unsigned int CConf::getDMRNetwork4Id() const -{ - return m_dmrNetwork4Id; -} - -std::string CConf::getDMRNetwork4Address() const -{ - return m_dmrNetwork4Address; -} - -unsigned short CConf::getDMRNetwork4Port() const -{ - return m_dmrNetwork4Port; -} - -unsigned short CConf::getDMRNetwork4Local() const -{ - return m_dmrNetwork4Local; -} - -std::string CConf::getDMRNetwork4Password() const -{ - return m_dmrNetwork4Password; -} - -std::string CConf::getDMRNetwork4Options() const -{ - return m_dmrNetwork4Options; -} - -bool CConf::getDMRNetwork4Location() const -{ - return m_dmrNetwork4Location; -} - -bool CConf::getDMRNetwork4Debug() const -{ - return m_dmrNetwork4Debug; -} - -std::vector CConf::getDMRNetwork4TGRewrites() const -{ - return m_dmrNetwork4TGRewrites; -} - -std::vector CConf::getDMRNetwork4PCRewrites() const -{ - return m_dmrNetwork4PCRewrites; -} - -std::vector CConf::getDMRNetwork4TypeRewrites() const -{ - return m_dmrNetwork4TypeRewrites; -} - -std::vector CConf::getDMRNetwork4SrcRewrites() const -{ - return m_dmrNetwork4SrcRewrites; -} - -std::vector CConf::getDMRNetwork4TGDynRewrites() const -{ - return m_dmrNetwork4TGDynRewrites; -} - -std::vector CConf::getDMRNetwork4IdRewrites() const -{ - return m_dmrNetwork4IdRewrites; -} - -std::vector CConf::getDMRNetwork4PassAllPC() const -{ - return m_dmrNetwork4PassAllPC; -} - -std::vector CConf::getDMRNetwork4PassAllTG() const -{ - return m_dmrNetwork4PassAllTG; -} - -bool CConf::getDMRNetwork5Enabled() const -{ - return m_dmrNetwork5Enabled; -} - -std::string CConf::getDMRNetwork5Name() const -{ - if (m_dmrNetwork5Name.empty()) - return "DMR-5"; - else - return m_dmrNetwork5Name; -} - -unsigned int CConf::getDMRNetwork5Id() const -{ - return m_dmrNetwork5Id; -} - -std::string CConf::getDMRNetwork5Address() const -{ - return m_dmrNetwork5Address; -} - -unsigned short CConf::getDMRNetwork5Port() const -{ - return m_dmrNetwork5Port; -} - -unsigned short CConf::getDMRNetwork5Local() const -{ - return m_dmrNetwork5Local; -} - -std::string CConf::getDMRNetwork5Password() const -{ - return m_dmrNetwork5Password; -} - -std::string CConf::getDMRNetwork5Options() const -{ - return m_dmrNetwork5Options; -} - -bool CConf::getDMRNetwork5Location() const -{ - return m_dmrNetwork5Location; -} - -bool CConf::getDMRNetwork5Debug() const -{ - return m_dmrNetwork5Debug; -} - -std::vector CConf::getDMRNetwork5TGRewrites() const -{ - return m_dmrNetwork5TGRewrites; -} - -std::vector CConf::getDMRNetwork5PCRewrites() const -{ - return m_dmrNetwork5PCRewrites; -} - -std::vector CConf::getDMRNetwork5TypeRewrites() const -{ - return m_dmrNetwork5TypeRewrites; -} - -std::vector CConf::getDMRNetwork5SrcRewrites() const -{ - return m_dmrNetwork5SrcRewrites; -} - -std::vector CConf::getDMRNetwork5TGDynRewrites() const -{ - return m_dmrNetwork5TGDynRewrites; -} - -std::vector CConf::getDMRNetwork5IdRewrites() const -{ - return m_dmrNetwork5IdRewrites; -} - -std::vector CConf::getDMRNetwork5PassAllPC() const -{ - return m_dmrNetwork5PassAllPC; -} - -std::vector CConf::getDMRNetwork5PassAllTG() const -{ - return m_dmrNetwork5PassAllTG; + return m_dmrNetworks[index].m_PassAllTG; } bool CConf::getGPSDEnabled() const diff --git a/Conf.h b/Conf.h index 40a9c9e..53fc3f7 100644 --- a/Conf.h +++ b/Conf.h @@ -69,6 +69,27 @@ struct CIdRewriteStruct { unsigned int m_netId; }; +struct CDMRNetConfStruct { + bool m_Enabled; + std::string m_Name; + unsigned int m_Id; + std::string m_Address; + unsigned short m_Port; + unsigned short m_Local; + std::string m_Password; + std::string m_Options; + bool m_Location; + bool m_Debug; + std::vector m_TGRewrites; + std::vector m_PCRewrites; + std::vector m_TypeRewrites; + std::vector m_SrcRewrites; + std::vector m_TGDynRewrites; + std::vector m_IdRewrites; + std::vector m_PassAllPC; + std::vector m_PassAllTG; +}; + class CConf { public: @@ -108,105 +129,26 @@ public: std::string getInfoDescription() const; std::string getInfoURL() const; - // The DMR Network 1 section - bool getDMRNetwork1Enabled() const; - std::string getDMRNetwork1Name() const; - unsigned int getDMRNetwork1Id() const; - std::string getDMRNetwork1Address() const; - unsigned short getDMRNetwork1Port() const; - unsigned short getDMRNetwork1Local() const; - std::string getDMRNetwork1Password() const; - std::string getDMRNetwork1Options() const; - bool getDMRNetwork1Location() const; - bool getDMRNetwork1Debug() const; - std::vector getDMRNetwork1TGRewrites() const; - std::vector getDMRNetwork1PCRewrites() const; - std::vector getDMRNetwork1TypeRewrites() const; - std::vector getDMRNetwork1SrcRewrites() const; - std::vector getDMRNetwork1TGDynRewrites() const; - std::vector getDMRNetwork1IdRewrites() const; - std::vector getDMRNetwork1PassAllPC() const; - std::vector getDMRNetwork1PassAllTG() const; - - // The DMR Network 2 section - bool getDMRNetwork2Enabled() const; - std::string getDMRNetwork2Name() const; - unsigned int getDMRNetwork2Id() const; - std::string getDMRNetwork2Address() const; - unsigned short getDMRNetwork2Port() const; - unsigned short getDMRNetwork2Local() const; - std::string getDMRNetwork2Password() const; - std::string getDMRNetwork2Options() const; - bool getDMRNetwork2Location() const; - bool getDMRNetwork2Debug() const; - std::vector getDMRNetwork2TGRewrites() const; - std::vector getDMRNetwork2PCRewrites() const; - std::vector getDMRNetwork2TypeRewrites() const; - std::vector getDMRNetwork2SrcRewrites() const; - std::vector getDMRNetwork2TGDynRewrites() const; - std::vector getDMRNetwork2IdRewrites() const; - std::vector getDMRNetwork2PassAllPC() const; - std::vector getDMRNetwork2PassAllTG() const; - - // The DMR Network 3 section - bool getDMRNetwork3Enabled() const; - std::string getDMRNetwork3Name() const; - unsigned int getDMRNetwork3Id() const; - std::string getDMRNetwork3Address() const; - unsigned short getDMRNetwork3Port() const; - unsigned short getDMRNetwork3Local() const; - std::string getDMRNetwork3Password() const; - std::string getDMRNetwork3Options() const; - bool getDMRNetwork3Location() const; - bool getDMRNetwork3Debug() const; - std::vector getDMRNetwork3TGRewrites() const; - std::vector getDMRNetwork3PCRewrites() const; - std::vector getDMRNetwork3TypeRewrites() const; - std::vector getDMRNetwork3SrcRewrites() const; - std::vector getDMRNetwork3TGDynRewrites() const; - std::vector getDMRNetwork3IdRewrites() const; - std::vector getDMRNetwork3PassAllPC() const; - std::vector getDMRNetwork3PassAllTG() const; - - // The DMR Network 4 section - bool getDMRNetwork4Enabled() const; - std::string getDMRNetwork4Name() const; - unsigned int getDMRNetwork4Id() const; - std::string getDMRNetwork4Address() const; - unsigned short getDMRNetwork4Port() const; - unsigned short getDMRNetwork4Local() const; - std::string getDMRNetwork4Password() const; - std::string getDMRNetwork4Options() const; - bool getDMRNetwork4Location() const; - bool getDMRNetwork4Debug() const; - std::vector getDMRNetwork4TGRewrites() const; - std::vector getDMRNetwork4PCRewrites() const; - std::vector getDMRNetwork4TypeRewrites() const; - std::vector getDMRNetwork4SrcRewrites() const; - std::vector getDMRNetwork4TGDynRewrites() const; - std::vector getDMRNetwork4IdRewrites() const; - std::vector getDMRNetwork4PassAllPC() const; - std::vector getDMRNetwork4PassAllTG() const; - - // The DMR Network 5 section - bool getDMRNetwork5Enabled() const; - std::string getDMRNetwork5Name() const; - unsigned int getDMRNetwork5Id() const; - std::string getDMRNetwork5Address() const; - unsigned short getDMRNetwork5Port() const; - unsigned short getDMRNetwork5Local() const; - std::string getDMRNetwork5Password() const; - std::string getDMRNetwork5Options() const; - bool getDMRNetwork5Location() const; - bool getDMRNetwork5Debug() const; - std::vector getDMRNetwork5TGRewrites() const; - std::vector getDMRNetwork5PCRewrites() const; - std::vector getDMRNetwork5TypeRewrites() const; - std::vector getDMRNetwork5SrcRewrites() const; - std::vector getDMRNetwork5TGDynRewrites() const; - std::vector getDMRNetwork5IdRewrites() const; - std::vector getDMRNetwork5PassAllPC() const; - std::vector getDMRNetwork5PassAllTG() const; + // DMR Network sections + unsigned int getDMRNetworksCount() const; // get [DMR Network X] sections count + bool getDMRNetworkEnabled(unsigned int index) const; + std::string getDMRNetworkName(unsigned int index) const; + unsigned int getDMRNetworkId(unsigned int index) const; + std::string getDMRNetworkAddress(unsigned int index) const; + unsigned short getDMRNetworkPort(unsigned int index) const; + unsigned short getDMRNetworkLocal(unsigned int index) const; + std::string getDMRNetworkPassword(unsigned int index) const; + std::string getDMRNetworkOptions(unsigned int index) const; + bool getDMRNetworkLocation(unsigned int index) const; + bool getDMRNetworkDebug(unsigned int index) const; + std::vector getDMRNetworkTGRewrites(unsigned int index) const; + std::vector getDMRNetworkPCRewrites(unsigned int index) const; + std::vector getDMRNetworkTypeRewrites(unsigned int index) const; + std::vector getDMRNetworkSrcRewrites(unsigned int index) const; + std::vector getDMRNetworkTGDynRewrites(unsigned int index) const; + std::vector getDMRNetworkIdRewrites(unsigned int index) const; + std::vector getDMRNetworkPassAllPC(unsigned int index) const; + std::vector getDMRNetworkPassAllTG(unsigned int index) const; // The XLX Network section bool getXLXNetworkEnabled() const; @@ -276,100 +218,8 @@ private: std::string m_infoDescription; std::string m_infoURL; - bool m_dmrNetwork1Enabled; - std::string m_dmrNetwork1Name; - unsigned int m_dmrNetwork1Id; - std::string m_dmrNetwork1Address; - unsigned short m_dmrNetwork1Port; - unsigned short m_dmrNetwork1Local; - std::string m_dmrNetwork1Password; - std::string m_dmrNetwork1Options; - bool m_dmrNetwork1Location; - bool m_dmrNetwork1Debug; - std::vector m_dmrNetwork1TGRewrites; - std::vector m_dmrNetwork1PCRewrites; - std::vector m_dmrNetwork1TypeRewrites; - std::vector m_dmrNetwork1SrcRewrites; - std::vector m_dmrNetwork1TGDynRewrites; - std::vector m_dmrNetwork1IdRewrites; - std::vector m_dmrNetwork1PassAllPC; - std::vector m_dmrNetwork1PassAllTG; - - bool m_dmrNetwork2Enabled; - std::string m_dmrNetwork2Name; - unsigned int m_dmrNetwork2Id; - std::string m_dmrNetwork2Address; - unsigned short m_dmrNetwork2Port; - unsigned short m_dmrNetwork2Local; - std::string m_dmrNetwork2Password; - std::string m_dmrNetwork2Options; - bool m_dmrNetwork2Location; - bool m_dmrNetwork2Debug; - std::vector m_dmrNetwork2TGRewrites; - std::vector m_dmrNetwork2PCRewrites; - std::vector m_dmrNetwork2TypeRewrites; - std::vector m_dmrNetwork2SrcRewrites; - std::vector m_dmrNetwork2TGDynRewrites; - std::vector m_dmrNetwork2IdRewrites; - std::vector m_dmrNetwork2PassAllPC; - std::vector m_dmrNetwork2PassAllTG; - - bool m_dmrNetwork3Enabled; - std::string m_dmrNetwork3Name; - unsigned int m_dmrNetwork3Id; - std::string m_dmrNetwork3Address; - unsigned short m_dmrNetwork3Port; - unsigned short m_dmrNetwork3Local; - std::string m_dmrNetwork3Password; - std::string m_dmrNetwork3Options; - bool m_dmrNetwork3Location; - bool m_dmrNetwork3Debug; - std::vector m_dmrNetwork3TGRewrites; - std::vector m_dmrNetwork3PCRewrites; - std::vector m_dmrNetwork3TypeRewrites; - std::vector m_dmrNetwork3SrcRewrites; - std::vector m_dmrNetwork3TGDynRewrites; - std::vector m_dmrNetwork3IdRewrites; - std::vector m_dmrNetwork3PassAllPC; - std::vector m_dmrNetwork3PassAllTG; - - bool m_dmrNetwork4Enabled; - std::string m_dmrNetwork4Name; - unsigned int m_dmrNetwork4Id; - std::string m_dmrNetwork4Address; - unsigned short m_dmrNetwork4Port; - unsigned short m_dmrNetwork4Local; - std::string m_dmrNetwork4Password; - std::string m_dmrNetwork4Options; - bool m_dmrNetwork4Location; - bool m_dmrNetwork4Debug; - std::vector m_dmrNetwork4TGRewrites; - std::vector m_dmrNetwork4PCRewrites; - std::vector m_dmrNetwork4TypeRewrites; - std::vector m_dmrNetwork4SrcRewrites; - std::vector m_dmrNetwork4TGDynRewrites; - std::vector m_dmrNetwork4IdRewrites; - std::vector m_dmrNetwork4PassAllPC; - std::vector m_dmrNetwork4PassAllTG; - - bool m_dmrNetwork5Enabled; - std::string m_dmrNetwork5Name; - unsigned int m_dmrNetwork5Id; - std::string m_dmrNetwork5Address; - unsigned short m_dmrNetwork5Port; - unsigned short m_dmrNetwork5Local; - std::string m_dmrNetwork5Password; - std::string m_dmrNetwork5Options; - bool m_dmrNetwork5Location; - bool m_dmrNetwork5Debug; - std::vector m_dmrNetwork5TGRewrites; - std::vector m_dmrNetwork5PCRewrites; - std::vector m_dmrNetwork5TypeRewrites; - std::vector m_dmrNetwork5SrcRewrites; - std::vector m_dmrNetwork5TGDynRewrites; - std::vector m_dmrNetwork5IdRewrites; - std::vector m_dmrNetwork5PassAllPC; - std::vector m_dmrNetwork5PassAllTG; + std::vector m_dmrNetworks; + CDMRNetConfStruct *addDMRNetwork(); bool m_xlxNetworkEnabled; unsigned int m_xlxNetworkId;