added debugging and fixed byte writes to coverage_filter

This commit is contained in:
medentem 2024-12-28 11:47:44 -06:00
parent 6a8e6c15e0
commit f9c7471c31
2 changed files with 23 additions and 2 deletions

View File

@ -77,19 +77,20 @@ bool FloodingRouter::perhapsRebroadcast(const meshtastic_MeshPacket *p)
} }
#endif #endif
LOG_INFO("Rebroadcasting packet ID=0x%x with ForwardProb=%.2f", p->id, forwardProb);
CoverageFilter updatedCoverage = incomingCoverage; CoverageFilter updatedCoverage = incomingCoverage;
mergeMyCoverage(updatedCoverage); mergeMyCoverage(updatedCoverage);
storeCoverageFilterInPacket(updatedCoverage, tosend); 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 // 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 // We are careful not to call our hooked version of send() - because we don't want to check this again
Router::send(tosend); Router::send(tosend);
return true; return true;
} else { } 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 { } else {
LOG_DEBUG("No rebroadcast: Role = CLIENT_MUTE or Rebroadcast Mode = NONE"); 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) void FloodingRouter::storeCoverageFilterInPacket(const CoverageFilter &filter, meshtastic_MeshPacket *p)
{ {
auto bits = filter.getBits(); auto bits = filter.getBits();
p->coverage_filter.size = BLOOM_FILTER_SIZE_BYTES;
memcpy(p->coverage_filter.bytes, bits.data(), BLOOM_FILTER_SIZE_BYTES); memcpy(p->coverage_filter.bytes, bits.data(), BLOOM_FILTER_SIZE_BYTES);
} }

View File

@ -315,6 +315,25 @@ void printPacket(const char *prefix, const meshtastic_MeshPacket *p)
out += " encrypted"; 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) if (p->rx_time != 0)
out += DEBUG_PORT.mt_sprintf(" rxtime=%u", p->rx_time); out += DEBUG_PORT.mt_sprintf(" rxtime=%u", p->rx_time);
if (p->rx_snr != 0.0) if (p->rx_snr != 0.0)