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 <noreply@anthropic.com>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user