Jelajahi Sumber

* repeater and room server: MESH_PACKET_LOGGING, now dumps RAW: rx packet contents
* Dispatcher: MESH_PACKET_LOGGING, added " hash={packet-hash}"

Scott Powell 1 tahun lalu
induk
melakukan
3778c0a8ff

+ 9 - 0
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);

+ 9 - 0
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);

+ 1 - 1
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]

+ 6 - 0
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]);