From 3edab9f384c0931db5e5669867d49734208cdf72 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Fri, 2 Aug 2024 12:47:45 -0400 Subject: [PATCH] fix idiotic non-sense with MDC decoding, the logic here is if the MDC ID has no hex values to translate 1:1, if it contains hex values convert the hex value to a decimal value; --- src/bridge/HostBridge.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/bridge/HostBridge.cpp b/src/bridge/HostBridge.cpp index ccf45bfd..4590effb 100644 --- a/src/bridge/HostBridge.cpp +++ b/src/bridge/HostBridge.cpp @@ -114,14 +114,23 @@ void mdcPacketDetected(int frameCount, mdc_u8_t op, mdc_u8_t arg, mdc_u16_t unit return; if (op == OP_PTT_ID && bridge->m_overrideSrcIdFromMDC) { + ::LogMessage(LOG_HOST, "Local Traffic, MDC Detect, unitId = $%04X", unitID); + // HACK: nasty bullshit to convert MDC unitID to decimal char* pCharRes = new (char); - ::sprintf(pCharRes, "%X", unitID); + ::sprintf(pCharRes, "0x%X", unitID); - int res = std::stoi(pCharRes); + uint32_t res = 0U; + std::string s = std::string(pCharRes + 2U); + if (s.find_first_not_of("0123456789") == std::string::npos) { + res = (uint32_t)std::stoi(pCharRes + 2U); + } + else { + res = (uint32_t)std::stoi(pCharRes, 0, 16); + } bridge->m_srcIdOverride = res; - ::LogMessage(LOG_HOST, "Local Traffic, MDC Detect, srcId = %u", bridge->m_srcIdOverride); + ::LogMessage(LOG_HOST, "Local Traffic, MDC Detect, converted srcId = %u", bridge->m_srcIdOverride); } }