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
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);
}

View File

@ -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)