From 3778c0a8ffdbf21305637aa50361a148015230a4 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Sun, 9 Mar 2025 20:36:49 +1100 Subject: [PATCH] * repeater and room server: MESH_PACKET_LOGGING, now dumps RAW: rx packet contents * Dispatcher: MESH_PACKET_LOGGING, added " hash={packet-hash}" --- examples/simple_repeater/main.cpp | 9 +++++++++ examples/simple_room_server/main.cpp | 9 +++++++++ platformio.ini | 2 +- src/Dispatcher.cpp | 6 ++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 55dbe3f7..b20354aa 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -246,6 +246,15 @@ protected: return tmp; } + void logRxRaw(float snr, float rssi, const uint8_t raw[], int len) override { + #if MESH_PACKET_LOGGING + Serial.print(getLogDateTime()); + Serial.print(" RAW: "); + mesh::Utils::printHex(Serial, raw, len); + Serial.println(); + #endif + } + void logRx(mesh::Packet* pkt, int len, float score) override { if (_logging) { File f = openAppend(PACKET_LOG_FILE); diff --git a/examples/simple_room_server/main.cpp b/examples/simple_room_server/main.cpp index 339e580e..131343a6 100644 --- a/examples/simple_room_server/main.cpp +++ b/examples/simple_room_server/main.cpp @@ -264,6 +264,15 @@ protected: return _prefs.airtime_factor; } + void logRxRaw(float snr, float rssi, const uint8_t raw[], int len) override { + #if MESH_PACKET_LOGGING + Serial.print(getLogDateTime()); + Serial.print(" RAW: "); + mesh::Utils::printHex(Serial, raw, len); + Serial.println(); + #endif + } + int calcRxDelay(float score, uint32_t air_time) const override { if (_prefs.rx_delay_base <= 0.0f) return 0; return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time); diff --git a/platformio.ini b/platformio.ini index e6e1f53c..205bb701 100644 --- a/platformio.ini +++ b/platformio.ini @@ -159,7 +159,7 @@ build_flags = -D ADVERT_LON=145.0 -D ADMIN_PASSWORD="\"password\"" -D ROOM_PASSWORD="\"hello\"" -; -D MESH_PACKET_LOGGING=1 + -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 [env:Heltec_v3_terminal_chat] diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index e4943254..dffabcc3 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -130,6 +130,12 @@ void Dispatcher::checkRecv() { Serial.printf(": RX, len=%d (type=%d, route=%s, payload_len=%d) SNR=%d RSSI=%d score=%d", 2 + pkt->path_len + pkt->payload_len, pkt->getPayloadType(), pkt->isRouteDirect() ? "D" : "F", pkt->payload_len, (int)_radio->getLastSNR(), (int)_radio->getLastRSSI(), (int)(score*1000)); + + static uint8_t packet_hash[MAX_HASH_SIZE]; + pkt->calculatePacketHash(packet_hash); + Serial.print(" hash="); + mesh::Utils::printHex(Serial, packet_hash, MAX_HASH_SIZE); + if (pkt->getPayloadType() == PAYLOAD_TYPE_PATH || pkt->getPayloadType() == PAYLOAD_TYPE_REQ || pkt->getPayloadType() == PAYLOAD_TYPE_RESPONSE || pkt->getPayloadType() == PAYLOAD_TYPE_TXT_MSG) { Serial.printf(" [%02X -> %02X]\n", (uint32_t)pkt->payload[1], (uint32_t)pkt->payload[0]);