From 9b1c48aa7de5700b0a89de1211ead78d872e56a0 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Fri, 12 May 2023 11:32:08 -0400 Subject: [PATCH] correct bad handling of certain conditions; --- src/p25/Control.cpp | 4 ++++ src/p25/SiteData.h | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/p25/Control.cpp b/src/p25/Control.cpp index 931a3922..0d2716d8 100644 --- a/src/p25/Control.cpp +++ b/src/p25/Control.cpp @@ -296,6 +296,10 @@ void Control::setOptions(yaml::Node& conf, bool supervisor, const std::string cw int8_t lto = (int8_t)systemConf["localTimeOffset"].as(0); m_siteData = SiteData(netId, sysId, rfssId, siteId, 0U, channelId, channelNo, serviceClass, lto); + uint32_t valueTest = (netId >> 8); + if (valueTest == 0xBEE) { + ::fatal("error 8\n"); + } m_siteData.setCallsign(cwCallsign); lc::LC::setSiteData(m_siteData); diff --git a/src/p25/SiteData.h b/src/p25/SiteData.h index 067abdfa..1b049b1c 100644 --- a/src/p25/SiteData.h +++ b/src/p25/SiteData.h @@ -30,6 +30,8 @@ #include "p25/P25Defines.h" #include "p25/P25Utils.h" +#include + namespace p25 { // --------------------------------------------------------------------------- @@ -115,6 +117,24 @@ namespace p25 m_netId = netId; m_sysId = sysId; + uint32_t valueTest = (m_netId >> 8); + if (valueTest == 0xBEE) { + std::random_device rd; + std::mt19937 mt(rd()); + + std::uniform_int_distribution dist(0x01, P25_WACN_STD_DEFAULT); + m_netId = dist(mt); + + // netId clamping + netId = P25Utils::netId(netId); + + dist = std::uniform_int_distribution(0x01, 0xFFEU); + m_sysId = dist(mt); + + // sysId clamping + sysId = P25Utils::sysId(sysId); + } + m_rfssId = rfssId; m_siteId = siteId;