73 lines
5.1 KiB
Markdown
73 lines
5.1 KiB
Markdown
# Capitolo 7: Strumenti di Debug
|
|
|
|
Il Radar Target Simulator include strumenti avanzati progettati specificamente per il debug e la diagnostica a basso livello. Questi strumenti sono accessibili dal menu `Debug` della finestra principale.
|
|
|
|
## 7.1. SFP Packet Inspector (`SfpDebugWindow`)
|
|
|
|
Questa è la finestra di debug più potente dell'applicazione, dedicata all'ispezione e all'interazione con il protocollo SFP (Simple Fragmentation Protocol). Permette di monitorare il traffico di rete, inviare comandi manuali e ispezionare il contenuto dei payload ricevuti.
|
|
|
|
*(Placeholder per l'immagine)*
|
|
|
|
**Descrizione dell'Immagine:** `finestra_debug_sfp_ris.png`
|
|
*Qui ti aspetti uno screenshot della finestra `SfpDebugWindow`. Deve avere la scheda "RIS" selezionata per mostrare le tabelle più importanti.*
|
|
*Evidenzia:*
|
|
1. *La sezione superiore con i controlli di connessione e il "Simple Target Sender".*
|
|
2. *La scheda "Raw" con un dump esadecimale di un pacchetto.*
|
|
3. *La scheda "RIS" con le due tabelle: "Scenario" a sinistra e "Targets" a destra.*
|
|
4. *La scheda "History" con l'elenco dei pacchetti ricevuti.*
|
|
|
|
---
|
|
|
|
### 7.1.1. Panoramica della Finestra
|
|
|
|
La finestra è suddivisa in tre aree principali:
|
|
|
|
1. **Controlli Superiori:**
|
|
* **Connessione:** Permette di stabilire o interrompere una connessione SFP indipendente da quella della finestra principale, utile per il debug isolato.
|
|
* **Simple Target Sender:** Un'interfaccia rapida per inviare un singolo comando `tgtset` o un payload JSON per un target con parametri definiti al volo. È estremamente utile per testare la risposta del radar a uno stimolo specifico senza caricare un intero scenario. I pulsanti nelle schede "CMD" e "JSON" permettono di inviare comandi rapidi come il reset.
|
|
* **Script to send:** Un campo per inviare comandi testuali arbitrari.
|
|
|
|
2. **Pannello a Schede (Notebook):** Il cuore della finestra, permette di ispezionare i dati ricevuti sotto diverse forme.
|
|
|
|
3. **Barra di Stato (non mostrata):** Fornisce informazioni aggiuntive.
|
|
|
|
### 7.1.2. Interpretazione delle Schede
|
|
|
|
* **Scheda `Raw`:** Mostra un dump esadecimale completo dell'ultimo pacchetto SFP ricevuto. Visualizza l'header SFP decodificato campo per campo (inclusi flag, flow ID, TID) e il corpo del payload in formato esadecimale e ASCII. È lo strumento fondamentale per il debug a livello di protocollo.
|
|
|
|
* **Scheda `Log`:** Un'area di log dedicata agli eventi specifici della finestra di debug.
|
|
|
|
* **Scheda `RIS`:** **La scheda più importante per l'analisi dei dati reali.** Quando l'applicazione riceve un payload di stato dal sistema radar (tipicamente con Flow ID 'R'), questa scheda lo decodifica e lo visualizza in due tabelle:
|
|
* **Tabella `Scenario`:** Mostra i dati globali della piattaforma/ownship inviati dal radar (posizione, velocità, heading, altitudine, modalità operativa, etc.).
|
|
* **Tabella `Targets`:** Elenca tutti i target (tipicamente fino a 32) e il loro stato come riportato dal radar. Per ogni target, visualizza flag, heading e posizione `(x, y, z)` in coordinate assolute.
|
|
|
|
* **Scheda `History`:** Tiene traccia degli ultimi pacchetti SFP ricevuti, mostrando timestamp, Flow ID, TID e dimensione. Selezionando una riga, il contenuto completo di quel pacchetto viene visualizzato nella scheda `Raw`, permettendo di analizzare pacchetti passati.
|
|
|
|
* **Schede `MFD`/`SAR`/`BIN`/`JSON`:** Queste schede sono "payload-aware". Quando viene ricevuto un payload con il Flow ID corrispondente, il suo contenuto viene visualizzato in un formato appropriato:
|
|
* `MFD`/`SAR`: Tentano di renderizzare il payload come un'immagine.
|
|
* `BIN`: Mostrano un dump esadecimale.
|
|
* `JSON`: Formattano e visualizzano il payload come un albero JSON.
|
|
|
|
## 7.2. Pannello Livelli di Log (`LoggerPanel`)
|
|
|
|
Accessibile da `Debug -> Logger Levels...`, questa finestra permette di controllare dinamicamente, a runtime, il livello di verbosità dei log per ogni singolo modulo dell'applicazione.
|
|
|
|
*(Placeholder per l'immagine)*
|
|
|
|
**Descrizione dell'Immagine:** `pannello_logger.png`
|
|
*Qui ti aspetti uno screenshot della finestra `LoggerPanel`.*
|
|
*Evidenzia:*
|
|
1. *La lista dei logger disponibili a sinistra.*
|
|
2. *Il campo "Filter" in alto a sinistra.*
|
|
3. *Il menu a tendina "Level" a destra per selezionare il livello (DEBUG, INFO, etc.).*
|
|
4. *Il pulsante "Apply".*
|
|
|
|
---
|
|
|
|
* **Scopo:** È uno strumento indispensabile per il debug. Se si sospetta un problema in un modulo specifico (es. `sfp_transport`), si può aumentare il suo livello di log a `DEBUG` per ottenere informazioni estremamente dettagliate, senza essere sommersi dai log degli altri moduli.
|
|
* **Funzionamento:**
|
|
1. La lista a sinistra mostra tutti i logger registrati nell'applicazione.
|
|
2. Si seleziona il logger di interesse.
|
|
3. Si sceglie il livello di log desiderato dal menu a tendina (`DEBUG` per la massima verbosità, `INFO` per il normale funzionamento, `WARNING` o `ERROR` per visualizzare solo i problemi).
|
|
4. Si preme `Apply`. La modifica ha effetto immediato.
|
|
* **Persistenza:** Le modifiche ai livelli di log vengono salvate in un file `logger_prefs.json`, in modo da essere mantenute tra un'esecuzione e l'altra dell'applicazione. |