# Capitolo 5: Configurazione della Comunicazione

Una volta definito uno scenario, il passo successivo è configurare la comunicazione per trasmettere i dati dei target simulati al sistema radar (device under test). L'applicazione supporta diversi protocolli, gestiti tramite un'unica finestra di configurazione.

## 5.1. La Finestra `ConnectionSettingsWindow`

Questa finestra di dialogo, accessibile dal menu `Settings -> Connection...` o dal pulsante `Settings...` nel Pannello di Connessione, centralizza la configurazione per le due interfacce logiche principali: **Target Connection** e **LRU Connection**.

*(Placeholder per l'immagine)*

**Descrizione dell'Immagine:** `finestra_connessioni.png`
*Qui ti aspetti uno screenshot della finestra `ConnectionSettingsWindow`. Evidenzia le seguenti aree:*
1.  *Un riquadro attorno alla sezione "Target Connection".*
2.  *Un riquadro attorno alla sezione "LRU Connection" (anche se non ancora utilizzata, va mostrata).*
3.  *Una freccia che punta al menu a tendina "Type" per selezionare il protocollo (SFP, TFTP, Seriale).*
4.  *Una freccia che punta alle schede sottostanti, che cambiano in base al tipo selezionato.*
5.  *Una freccia che punta al pulsante "Test Connection".*

---

La finestra permette di configurare in modo indipendente la comunicazione per l'invio dei dati dei target (`Target Connection`) e per un'eventuale comunicazione secondaria con un'altra LRU (`LRU Connection`). Per ogni connessione, è possibile scegliere il tipo di protocollo e impostarne i parametri specifici.

## 5.2. Dettaglio dei Protocolli

### 5.2.1. Configurazione SFP (Simple Fragmentation Protocol)

SFP è un protocollo basato su UDP progettato per la trasmissione affidabile di dati. È il metodo di comunicazione più avanzato e raccomandato per l'applicazione.

*   **Server IP:** L'indirizzo IP del sistema radar che riceverà i dati.
*   **Server Port:** La porta UDP su cui il sistema radar è in ascolto per i pacchetti SFP.
*   **Local Port:** La porta UDP su cui l'applicazione si metterà in ascolto per ricevere i pacchetti di ritorno (es. ACK SFP o dati reali dal radar). **È fondamentale che questa porta non sia in uso da altre applicazioni sulla macchina.**
*   **Use JSON Protocol:** Se selezionato, il simulatore invierà gli aggiornamenti dei target utilizzando un payload JSON compatto, invece del formato testuale legacy. Questo è il metodo preferito per i sistemi radar che lo supportano, in quanto più efficiente e strutturato.
*   **Prediction Offset (ms):** Un valore in millisecondi che introduce una compensazione manuale per la latenza. Il motore di simulazione anticiperà il calcolo della posizione del target di questo intervallo di tempo prima di inviare i dati, per compensare la latenza di rete e di elaborazione del server.

### 5.2.2. Configurazione TFTP (Trivial File Transfer Protocol)

In questa modalità, l'applicazione genera uno script di comandi testuali e lo carica su un server TFTP in esecuzione sul sistema radar.

*   **Server IP:** L'indirizzo IP del server TFTP.
*   **Server Port:** La porta del servizio TFTP (di solito la 69).

### 5.2.3. Configurazione Seriale

Questa modalità utilizza una connessione seriale (es. RS-232/RS-422) per inviare i comandi testuali.

*   **COM Port:** Il nome della porta seriale da utilizzare (es. `COM1` su Windows, `/dev/ttyS0` su Linux). Il menu a tendina viene popolato automaticamente con le porte rilevate sul sistema.
*   **Baud Rate:** La velocità di trasmissione. Deve corrispondere a quella impostata sul dispositivo ricevente.
*   **Altri Parametri (Parity, etc.):** Sebbene non esposti nell'interfaccia principale `ConnectionSettingsWindow`, possono essere configurati nel file `settings.json` se necessario.

## 5.3. Testare la Connessione

Il pulsante `Test Connection` esegue un rapido controllo per verificare la raggiungibilità e la configurazione di base del servizio selezionato, senza stabilire una connessione permanente.

*   **SFP:** Tenta di aprire e associare un socket sulla porta locale specificata. Un successo indica che la porta è libera e utilizzabile.
*   **TFTP:** Invia una richiesta di lettura (RRQ) per un file inesistente. Un successo si ha se il server risponde (anche con un errore "file not found"), confermando che il server TFTP è in esecuzione e raggiungibile. Un fallimento indica un timeout o un problema di rete.
*   **Seriale:** Tenta di aprire la porta COM con i parametri specificati e la richiude immediatamente. Un successo indica che la porta esiste e non è bloccata da un'altra applicazione.

L'uso di questa funzione è fortemente raccomandato dopo aver modificato i parametri di connessione per diagnosticare rapidamente eventuali problemi di configurazione.