From c7a1c5a3b723aceeefe3064b69d3bf4c80dfd859 Mon Sep 17 00:00:00 2001 From: Tim Sawyer Date: Wed, 4 Mar 2026 08:25:11 -0800 Subject: [PATCH] Add queue-side startup trace for V24 onset timing --- src/host/modem/ModemV24.cpp | 14 ++++++++++++++ src/host/modem/ModemV24.h | 1 + 2 files changed, 15 insertions(+) diff --git a/src/host/modem/ModemV24.cpp b/src/host/modem/ModemV24.cpp index 3ade3ba6..f54961d0 100644 --- a/src/host/modem/ModemV24.cpp +++ b/src/host/modem/ModemV24.cpp @@ -61,6 +61,7 @@ ModemV24::ModemV24(port::IModemPort* port, bool duplex, uint32_t p25QueueSize, u m_txStartupTraceActive(false), m_txStartupTraceT0(0U), m_txStartupTraceWritesLeft(0U), + m_txStartupTraceQueueLogsLeft(0U), m_rs(), m_useTIAFormat(false), m_txP25QueueLock() @@ -2378,6 +2379,15 @@ bool ModemV24::queueP25Frame(uint8_t* data, uint16_t len, SERIAL_TX_TYPE msgType } } + if (m_debug && m_txStartupTraceActive && m_txStartupTraceQueueLogsLeft > 0U) { + int64_t dtNow = (int64_t)now - (int64_t)m_txStartupTraceT0; + int64_t dtSched = (int64_t)msgTime - (int64_t)m_txStartupTraceT0; + LogDebugEx(LOG_MODEM, "ModemV24::queueP25Frame()", + "TX startup queue: frameType=$%02X, msgType=$%02X, dtNow=%lld ms, dtSched=%lld ms, lastP25Tx=%llu, txQ=%u, immQ=%u", + data[0U], msgType, dtNow, dtSched, m_lastP25Tx, m_txP25Queue.dataSize(), m_txImmP25Queue.dataSize()); + m_txStartupTraceQueueLogsLeft--; + } + len += 4U; std::lock_guard lock(m_txP25QueueLock); @@ -2456,6 +2466,7 @@ void ModemV24::startOfStreamV24(const p25::lc::LC& control) m_txStartupTraceT0 = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()).count(); m_txStartupTraceWritesLeft = 8U; + m_txStartupTraceQueueLogsLeft = 12U; LogDebugEx(LOG_MODEM, "ModemV24::startOfStreamV24()", "TX startup trace begin, jitter=%u, txQ=%u, immQ=%u, p25Space=%u", m_jitter, m_txP25Queue.dataSize(), m_txImmP25Queue.dataSize(), m_p25Space); @@ -2557,6 +2568,7 @@ void ModemV24::endOfStreamV24() m_txCallInProgress = false; m_txStartupTraceActive = false; m_txStartupTraceWritesLeft = 0U; + m_txStartupTraceQueueLogsLeft = 0U; } /* Helper to generate the NID value. */ @@ -2587,6 +2599,7 @@ void ModemV24::startOfStreamTIA(const p25::lc::LC& control) m_txStartupTraceT0 = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()).count(); m_txStartupTraceWritesLeft = 8U; + m_txStartupTraceQueueLogsLeft = 12U; LogDebugEx(LOG_MODEM, "ModemV24::startOfStreamTIA()", "TX startup trace begin, jitter=%u, txQ=%u, immQ=%u, p25Space=%u", m_jitter, m_txP25Queue.dataSize(), m_txImmP25Queue.dataSize(), m_p25Space); @@ -2739,6 +2752,7 @@ void ModemV24::endOfStreamTIA() m_txCallInProgress = false; m_txStartupTraceActive = false; m_txStartupTraceWritesLeft = 0U; + m_txStartupTraceQueueLogsLeft = 0U; } /* Send a start of stream ACK. */ diff --git a/src/host/modem/ModemV24.h b/src/host/modem/ModemV24.h index c70b14c8..818a87da 100644 --- a/src/host/modem/ModemV24.h +++ b/src/host/modem/ModemV24.h @@ -609,6 +609,7 @@ namespace modem bool m_txStartupTraceActive; uint64_t m_txStartupTraceT0; uint8_t m_txStartupTraceWritesLeft; + uint8_t m_txStartupTraceQueueLogsLeft; edac::RS634717 m_rs;