SXXXXXXX_RadarDataReader/todo.md
2025-06-25 07:50:56 +02:00

3.2 KiB

Sì, ho tenuto traccia. Ottima domanda, facciamo il punto della situazione per capire cosa abbiamo coperto e cosa resta da esplorare.

Blocchi Attualmente Gestiti (con Parsing Dettagliato)

  1. DSPHDRIN: Completamente mappato tramite la struct GeHeader. È la nostra fonte principale per i metadati di alto livello come batch_counter, ttag, nrbin, npri, e le modalità operative.
  2. CDPSTS: Mappato in dettaglio tramite la struct CdpStsPayload. Estraiamo lo stato, i timetag e le informazioni sull'antenna da qui.
  3. TIMER: Mappato (anche se parzialmente, ma in modo robusto) tramite la struct GrifoTimerBlob. Estraiamo i registri di temporizzazione di base.
  4. Blocchi di Segnale (SUM, GUARD, DAZ, DEL): Gestiti. Il parser estrae correttamente i dati I/Q in un array numpy quando è presente un DSPHDRIN per fornire le dimensioni (nrbin, npri).

Blocchi Identificati ma NON Analizzati in Dettaglio

Dal log che mi hai fornito, identifichiamo correttamente i seguenti tipi di blocco, ma attualmente li trattiamo come GenericBlock, ovvero non ne estraiamo il contenuto specifico. Sono i candidati perfetti per la nostra prossima espansione.

  1. AESA (ID: 1095976257): Molto importante. Contiene i dati di comando e di stato dell'antenna AESA (Active Electronically Scanned Array). Dal codice C++ che mi hai passato (postprocess.cpp), vedo che esistono blocchi AESATX (trasmissione) e AESARX (ricezione) che vengono parsati per estrarre informazioni cruciali come gli errori di comunicazione e la posizione del fascio.
  2. D1553 (ID: 892678468): Questo blocco contiene i dati provenienti dal bus avionico MIL-STD-1553. È una fonte ricchissima di informazioni di navigazione e di stato del velivolo. Il postprocess.cpp ha una funzione d1553_extract che estrae dati come posizione GPS (lat/lon), altitudine, heading, etc. Poter parsare questo blocco sarebbe un enorme valore aggiunto.
  3. Blocchi Firmware (EXP, PC, DET): Li identifichiamo correttamente, ma non ne estraiamo il contenuto. Contengono le impostazioni di basso livello per l'expander, il pulse compressor e il detector. Potrebbe essere utile estrarli per un'analisi molto dettagliata del funzionamento del DSP.
  4. EXTLINK, CTRLINK, SOFT, SOFTDFE: Questi sono probabilmente contenitori più generici per vari tipi di dati software, di controllo o di debug. Analizzarli richiederebbe un'indagine più approfondita per capire cosa contengono di utile.
  5. DSPS: Probabilmente "DSP Status", potrebbe contenere informazioni di stato aggiuntive dal Digital Signal Processor.

Prossimo Passo Consigliato

Considerando l'importanza dei dati, ti suggerirei di procedere in questo ordine:

  1. D1553: È probabilmente il più prezioso. Estrarre dati di navigazione precisi (latitudine, longitudine, altitudine, velocità) arricchirebbe enormemente l'output. Abbiamo già le struct di riferimento nel postprocess.cpp (GhostEifIpc::avionics_adaptor_message_store_t).
  2. AESA: Il secondo per importanza. Poter estrarre i comandi inviati all'antenna e il suo stato di salute sarebbe fondamentale per un'analisi completa delle performance del radar.

Che ne dici di iniziare con il blocco D1553? Sei d'accordo?