README top + 02_telemetry_bridge: cambio modo via comando seriale (non BOOT),
4o modo = MAVLINK (non piu' MSP), nota su terseCRSF/mavlink vendorizzate e su
my_config.h in .gitignore (+ my_config.h.example da copiare).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
terseCRSF vendorizzata: rimosse initialise/sbus_initialise/readCrsfFrame/
decodeRC/printPWM/prepSBUS/bytesToPWM/pwmToBytes/sendSBUS e i membri/buffer
SBUS-PWM (sb_bytes, pwm_val, crsf_port, sbus_port, RC_BUILD/SBUS machinery).
Usiamo solo decodeTelemetry: mantenuti i decoder + helper (bytes2*, wrap360,
crc8_dvb_s2[_sbuf_accum] usata dalla patch CRC, printByte/printBytes). ~283
righe in meno, nessun riferimento pendente (verificato con grep su 01/02/03).
EspNowCrsf: rimosso sendRaw() e il peer broadcast in begin() (uplink
sperimentale morto, il backpack e' downlink-only). Ora RX-only pulito.
main.cpp: commento "MAVLink v1" -> "v2" (la lib emette v2).
DA VERIFICARE A BANCO con un build (qui non compilabile).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Se non arrivano frame validi da >2s, l'HEARTBEAT passa a MAV_STATE_CRITICAL e
GPS_RAW_INT a NO_FIX, invece di continuare a emettere gli ultimi valori in
cache come "vivi" (MAV_STATE_ACTIVE). L'HEARTBEAT continua (il link verso il
GCS resta), cosi' il GCS segnala "telemetria persa" anziche' un aereo fermo.
Flight mode->custom_mode NON implementato di proposito: mwp decodifica
custom_mode con mav2inav()/xmav2inav() in formato INAV-specifico e dipendente
dalla versione FC (fc_vers>=hasPOI) -> troppo fragile per il valore offerto.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- decodeTelemetry() ora scarta frame incompleti o con CRC8 errata (prima non
validava nulla: frame corti/corrotti da ESP-NOW venivano decodificati
leggendo oltre il frame -> telemetria spazzatura, e OOB read su FLIGHT_MODE).
- test_decode.cpp: vettori ricostruiti come frame reali con CRC valida
(calcolata offline), battery ri-quadrato a lth=10, assert bat_fuel_drawn
corretto a 350 (era 89678, pre-patch uint24), test "non valida CRC" invertito
in "rigetta CRC errata", aggiunto test su frame troncato.
- Emulatore (03) e backpack reale usano lo stesso framing/CRC -> passano.
DA RI-ESEGUIRE A BANCO: 'pio test -e esp32dev_test' e test RF reale. Se la
telemetria reale sparisce, il backpack potrebbe non rilasciare una CRC valida
nel frame ESP-NOW -> in tal caso ripiegare su validazione solo-lunghezza.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Stato di partenza prima dei fix. Il repo git era inizializzato a meta'
(config.lock + objects/ mancante, zero commit): riparato.
my_config.h (UID reale, tutti e 3 i sottoprogetti) escluso via .gitignore;
aggiunto my_config.h.example. .pio/ escluso.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>