From 67933bcfc172046437d8947d7705a8653d501329 Mon Sep 17 00:00:00 2001 From: Francesco Zanin Date: Tue, 23 Jun 2026 19:35:00 +0200 Subject: [PATCH] Fix RSSI bloccato al 39% nel modo MAVLINK RADIO_STATUS.rssi/remrssi vanno su scala 0..254 (i GCS riscalano a %: mwp fa raw*1023/255). Si mandava link_quality grezzo 0..100, quindi con LQ=100 mwp mostrava 100/2.55 = 39% fisso. Riscalato a 0..254 (come gia' fa il modo LTM). Root cause confermata dal sorgente mwp (mwp-mavlink_msg.vala). Co-Authored-By: Claude Opus 4.8 --- 02_telemetry_bridge/src/mode_mavlink.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/02_telemetry_bridge/src/mode_mavlink.cpp b/02_telemetry_bridge/src/mode_mavlink.cpp index de2a3bd..2d4730b 100644 --- a/02_telemetry_bridge/src/mode_mavlink.cpp +++ b/02_telemetry_bridge/src/mode_mavlink.cpp @@ -142,7 +142,13 @@ static void mav_tick() { } if (now - tRADIO >= 1000) { // RADIO_STATUS 1 Hz (RSSI / link quality) tRADIO = now; - uint8_t r = c_lq; // link quality % (0..100) + // RADIO_STATUS.rssi/remrssi sono attesi su scala 0..254 (i GCS la + // riscalano a percentuale: mwp fa raw*1023/255, cioe' % = raw/2.55). + // c_lq e' 0..100: va riscalato a 0..254, altrimenti con LQ=100 mwp + // mostra 100/2.55 = 39% fisso (bug "RSSI bloccato al 39%"). Stesso + // scaling gia' usato dal modo LTM. 254 e non 255: alcuni reader + // trattano 255 come "invalido". + uint8_t r = (uint8_t)((uint16_t)c_lq * 254 / 100); mavlink_msg_radio_status_pack(SYSID, COMPID, &mmsg, r, r, 100, 0, 0, 0, 0); // rssi, remrssi, txbuf, noise... sendMsg();