From 4a7f466ea64298d82a54c296ac3976f3590bd76b Mon Sep 17 00:00:00 2001 From: archipelago Date: Sun, 16 Aug 2026 06:13:54 -0400 Subject: [PATCH] feat(mesh): radio_state reports the radio's last-RX RSSI/SNR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit r_stat_rssi/r_stat_snr straight from the RNode firmware's per-packet stat reports — the direct way to tell "firmware reports signal stats" from "it doesn't" when a peer's RSSI shows as unknown, and a natural read-back for the LoRa panel. Co-Authored-By: Claude Fable 5 --- reticulum-daemon/reticulum_daemon.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reticulum-daemon/reticulum_daemon.py b/reticulum-daemon/reticulum_daemon.py index 654adb4d..7846bf1b 100644 --- a/reticulum-daemon/reticulum_daemon.py +++ b/reticulum-daemon/reticulum_daemon.py @@ -429,6 +429,13 @@ class ReticulumDaemon: # Live utilisation, when the interface tracks it. "airtime_short": getattr(iface, "airtime_short", None), "airtime_long": getattr(iface, "airtime_long", None), + # Last received packet's signal stats as reported by the + # radio firmware (CMD_STAT_RSSI/SNR). None until the first + # reception — and stays None on firmware that doesn't + # report per-packet stats, which is exactly what this + # field lets us diagnose. + "r_stat_rssi": getattr(iface, "r_stat_rssi", None), + "r_stat_snr": getattr(iface, "r_stat_snr", None), }) break except Exception: