diff --git a/YSFGateway/Conf.cpp b/YSFGateway/Conf.cpp index b6aee31..47b8db0 100644 --- a/YSFGateway/Conf.cpp +++ b/YSFGateway/Conf.cpp @@ -216,16 +216,17 @@ bool CConf::read() } else if (section == SECTION_FCS_NETWORK) { if (::strcmp(key, "Enable") == 0) m_fcsNetworkEnabled = ::atoi(value) == 1; - else if (::strcmp(key, "Entries") == 0) { - char* p = ::strtok(value, ",\r\n"); - while (p != NULL) { - if (::strlen(p) > 0U) { - for (unsigned int i = 0U; p[i] != 0; i++) - p[i] = ::toupper(p[i]); - std::string name = std::string(p); - m_fcsNetworkEntries.push_back(name); + else if (::strcmp(key, "Entry") == 0) { + char* p1 = ::strtok(value, ","); + char* p2 = ::strtok(NULL, "\r\n"); + if (p1 != NULL && p2 != NULL) { + if (::strlen(p1) > 0U && ::strlen(p2) > 0U) { + for (unsigned int i = 0U; p1[i] != 0; i++) + p1[i] = ::toupper(p1[i]); + std::string name = std::string(p1); + std::string desc = std::string(p2); + m_fcsNetworkEntries.push_back(std::make_pair(name, desc)); } - p = ::strtok(NULL, ",\r\n"); } } else if (::strcmp(key, "Port") == 0) m_fcsNetworkPort = (unsigned int)::atoi(value); @@ -427,7 +428,7 @@ bool CConf::getFCSNetworkEnabled() const return m_fcsNetworkEnabled; } -std::vector CConf::getFCSNetworkEntries() const +std::vector> CConf::getFCSNetworkEntries() const { return m_fcsNetworkEntries; } diff --git a/YSFGateway/Conf.h b/YSFGateway/Conf.h index 6b6c7f8..d7af6e3 100644 --- a/YSFGateway/Conf.h +++ b/YSFGateway/Conf.h @@ -81,7 +81,7 @@ public: // The FCS Network section bool getFCSNetworkEnabled() const; - std::vector getFCSNetworkEntries() const; + std::vector> getFCSNetworkEntries() const; unsigned int getFCSNetworkPort() const; private: @@ -130,7 +130,7 @@ private: unsigned int m_ysfNetworkYSF2DMRPort; bool m_fcsNetworkEnabled; - std::vector m_fcsNetworkEntries; + std::vector> m_fcsNetworkEntries; unsigned int m_fcsNetworkPort; }; diff --git a/YSFGateway/WiresX.cpp b/YSFGateway/WiresX.cpp index 8826b53..c85a989 100644 --- a/YSFGateway/WiresX.cpp +++ b/YSFGateway/WiresX.cpp @@ -157,9 +157,9 @@ void CWiresX::setYSF2DMR(const std::string& address, unsigned int port) m_reflectors.setYSF2DMR(address, port); } -void CWiresX::addFCSRoom(const std::string& name) +void CWiresX::addFCSRoom(const std::pair& entry) { - m_reflectors.addFCSRoom(name); + m_reflectors.addFCSRoom(entry); } bool CWiresX::start() diff --git a/YSFGateway/WiresX.h b/YSFGateway/WiresX.h index c3919bd..5873a3f 100644 --- a/YSFGateway/WiresX.h +++ b/YSFGateway/WiresX.h @@ -49,7 +49,7 @@ public: void setInfo(const std::string& name, unsigned int txFrequency, unsigned int rxFrequency); void setParrot(const std::string& address, unsigned int port); void setYSF2DMR(const std::string& address, unsigned int port); - void addFCSRoom(const std::string& name); + void addFCSRoom(const std::pair& entry); bool start(); diff --git a/YSFGateway/YSFGateway.cpp b/YSFGateway/YSFGateway.cpp index c6894fc..53735ee 100644 --- a/YSFGateway/YSFGateway.cpp +++ b/YSFGateway/YSFGateway.cpp @@ -465,8 +465,8 @@ void CYSFGateway::createWiresX(CYSFNetwork* rptNetwork) if (port > 0U) m_wiresX->setYSF2DMR(address, port); - std::vector entries = m_conf.getFCSNetworkEntries(); - for (std::vector::const_iterator it = entries.cbegin(); it != entries.cend(); ++it) + std::vector> entries = m_conf.getFCSNetworkEntries(); + for (std::vector>::const_iterator it = entries.cbegin(); it != entries.cend(); ++it) m_wiresX->addFCSRoom(*it); m_reflectors->load(); diff --git a/YSFGateway/YSFGateway.ini b/YSFGateway/YSFGateway.ini index 2ad0aa7..310f181 100644 --- a/YSFGateway/YSFGateway.ini +++ b/YSFGateway/YSFGateway.ini @@ -53,5 +53,6 @@ YSF2DMRPort=42013 [FCS Network] Enable=1 -# Entries=FCS00120,FCS00215 +# Entry=FCS00199,FCS001 Echo +# Entry=FCS00299,FCS002 Echo Port=42001 diff --git a/YSFGateway/YSFReflectors.cpp b/YSFGateway/YSFReflectors.cpp index 03adbca..8cbceba 100644 --- a/YSFGateway/YSFReflectors.cpp +++ b/YSFGateway/YSFReflectors.cpp @@ -83,9 +83,9 @@ void CYSFReflectors::setYSF2DMR(const std::string& address, unsigned int port) m_YSF2DMRPort = port; } -void CYSFReflectors::addFCSRoom(const std::string& name) +void CYSFReflectors::addFCSRoom(const std::pair& entry) { - m_fcsRooms.push_back(name); + m_fcsRooms.push_back(entry); } bool CYSFReflectors::load() @@ -170,16 +170,17 @@ bool CYSFReflectors::load() } unsigned int id = 10U; - for (std::vector::const_iterator it = m_fcsRooms.cbegin(); it != m_fcsRooms.cend(); ++it, id++) { + for (std::vector>::const_iterator it = m_fcsRooms.cbegin(); it != m_fcsRooms.cend(); ++it, id++) { char text[10U]; ::sprintf(text, "%05u", id); - std::string name = *it; + std::string name = it->first; + std::string desc = it->second; CYSFReflector* refl = new CYSFReflector; refl->m_id = text; refl->m_name = name; - refl->m_desc = name; + refl->m_desc = desc; refl->m_port = 0U; refl->m_count = "000"; refl->m_type = YT_FCS; diff --git a/YSFGateway/YSFReflectors.h b/YSFGateway/YSFReflectors.h index cac8a2c..e713648 100644 --- a/YSFGateway/YSFReflectors.h +++ b/YSFGateway/YSFReflectors.h @@ -59,7 +59,7 @@ public: void setParrot(const std::string& address, unsigned int port); void setYSF2DMR(const std::string& address, unsigned int port); - void addFCSRoom(const std::string& name); + void addFCSRoom(const std::pair& entry); bool load(); @@ -80,7 +80,7 @@ private: unsigned int m_parrotPort; std::string m_YSF2DMRAddress; unsigned int m_YSF2DMRPort; - std::vector m_fcsRooms; + std::vector> m_fcsRooms; std::vector m_newReflectors; std::vector m_currReflectors; std::vector m_search;