diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index dd3b9e32..10eca8c9 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -436,19 +436,13 @@ protected: return (int) ((pow(_prefs.rx_delay_base, 0.85f - score) - 1.0) * air_time); } - void logRx(mesh::Packet* pkt, int len, float score) override { + void logRxRaw(float snr, float rssi, const uint8_t raw[], int len) override { if (_serial->isConnected()) { int i = 0; out_frame[i++] = PUSH_CODE_LOG_RX_DATA; - out_frame[i++] = (int8_t)(_radio->getLastSNR() * 4); - out_frame[i++] = (int8_t)(_radio->getLastRSSI()); - if (pkt->isRouteFlood()) { - out_frame[i++] = pkt->path_len; - memcpy(&out_frame[i], pkt->path, pkt->path_len); i += pkt->path_len; - } else { - out_frame[i++] = 0xFF; - } - memcpy(&out_frame[i], pkt->payload, pkt->payload_len); i += pkt->payload_len; + out_frame[i++] = (int8_t)(snr * 4); + out_frame[i++] = (int8_t)(rssi); + memcpy(&out_frame[i], raw, len); i += len; _serial->writeFrame(out_frame, i); } diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index b9da0e65..e4943254 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -78,9 +78,11 @@ void Dispatcher::checkRecv() { float score; uint32_t air_time; { - uint8_t raw[MAX_TRANS_UNIT]; + uint8_t raw[MAX_TRANS_UNIT+1]; int len = _radio->recvRaw(raw, MAX_TRANS_UNIT); if (len > 0) { + logRxRaw(_radio->getLastSNR(), _radio->getLastRSSI(), raw, len); + pkt = _mgr->allocNew(); if (pkt == NULL) { MESH_DEBUG_PRINTLN("%s Dispatcher::checkRecv(): WARNING: received data, no unused packets available!", getLogDateTime()); diff --git a/src/Dispatcher.h b/src/Dispatcher.h index 7d75c219..0b00f1a9 100644 --- a/src/Dispatcher.h +++ b/src/Dispatcher.h @@ -117,6 +117,8 @@ protected: virtual DispatcherAction onRecvPacket(Packet* pkt) = 0; + virtual void logRxRaw(float snr, float rssi, const uint8_t raw[], int len) { } // custom hook + virtual void logRx(Packet* packet, int len, float score) { } // hooks for custom logging virtual void logTx(Packet* packet, int len) { } virtual void logTxFail(Packet* packet, int len) { }