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();