From f9c7471c31be5d004ebe404a6b5931bddafa9d19 Mon Sep 17 00:00:00 2001 From: medentem Date: Sat, 28 Dec 2024 11:47:44 -0600 Subject: [PATCH] added debugging and fixed byte writes to coverage_filter --- src/mesh/FloodingRouter.cpp | 6 ++++-- src/mesh/RadioInterface.cpp | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/mesh/FloodingRouter.cpp b/src/mesh/FloodingRouter.cpp index ca267ca64..fcc82e54c 100644 --- a/src/mesh/FloodingRouter.cpp +++ b/src/mesh/FloodingRouter.cpp @@ -77,19 +77,20 @@ bool FloodingRouter::perhapsRebroadcast(const meshtastic_MeshPacket *p) } #endif - LOG_INFO("Rebroadcasting packet ID=0x%x with ForwardProb=%.2f", p->id, forwardProb); CoverageFilter updatedCoverage = incomingCoverage; mergeMyCoverage(updatedCoverage); storeCoverageFilterInPacket(updatedCoverage, tosend); + LOG_INFO("Rebroadcasting packet ID=0x%x with ForwardProb=%.2f", p->id, forwardProb); + // Note: we are careful to resend using the original senders node id // We are careful not to call our hooked version of send() - because we don't want to check this again Router::send(tosend); return true; } else { - LOG_DEBUG("No rebroadcast: Random number %f > Forward Probability %f", rnd, forwardProb); + LOG_INFO("No rebroadcast: Random number %f > Forward Probability %f", rnd, forwardProb); } } else { LOG_DEBUG("No rebroadcast: Role = CLIENT_MUTE or Rebroadcast Mode = NONE"); @@ -129,6 +130,7 @@ void FloodingRouter::loadCoverageFilterFromPacket(const meshtastic_MeshPacket *p void FloodingRouter::storeCoverageFilterInPacket(const CoverageFilter &filter, meshtastic_MeshPacket *p) { auto bits = filter.getBits(); + p->coverage_filter.size = BLOOM_FILTER_SIZE_BYTES; memcpy(p->coverage_filter.bytes, bits.data(), BLOOM_FILTER_SIZE_BYTES); } diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 5161ac41f..f343263f9 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -315,6 +315,25 @@ void printPacket(const char *prefix, const meshtastic_MeshPacket *p) out += " encrypted"; } + // --- Coverage filter logging --- + if (p->coverage_filter.size > 0) { + // If the coverage_filter.size is 0, you might skip printing or + // choose to indicate it differently. Usually it will be 16 though. + std::string coverageHex; + // Reserve enough space for 2 hex characters per byte. + coverageHex.reserve(p->coverage_filter.size * 2); + + for (int i = 0; i < p->coverage_filter.size; i++) { + coverageHex += DEBUG_PORT.mt_sprintf("%02x", p->coverage_filter.bytes[i]); + } + + // Append the coverage filter to output + out += DEBUG_PORT.mt_sprintf(" coverageFilter=0x%s", coverageHex.c_str()); + } else { + out += DEBUG_PORT.mt_sprintf(" coverageFilter=empty"); + } + // --- End coverage filter logging --- + if (p->rx_time != 0) out += DEBUG_PORT.mt_sprintf(" rxtime=%u", p->rx_time); if (p->rx_snr != 0.0)