Skip to main content

Glossario: Termini e Concetti

Questa guida spiega tutti i termini tecnici utilizzati nella documentazione dei protocolli GPS.


πŸ“¦ Struttura Dati​

Frame​

Un frame Γ¨ l'unitΓ  completa di comunicazione tra device e server. Contiene tutto il necessario per trasmettere un messaggio: header, dati, checksum e trailer.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Header β”‚ Type β”‚ Payload β”‚ Checksum β”‚ Trailer β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
↑ ↑
Frame Start Frame End

Packet (Pacchetto)​

Sinonimo di frame. Indica l'insieme di byte che costituisce un singolo messaggio.

Payload​

Il contenuto utile del frame, esclusi header, checksum e trailer. Contiene i dati veri e propri (coordinate, allarmi, stato, etc.).

Frame totale:  7E 02 00 [............PAYLOAD............] XX 7E
↑__________________________↑
Payload

I primi byte del frame che identificano l'inizio e spesso contengono metadati come tipo e lunghezza.

ProtocolloHeader
S21L7E
G11LSE78 78 (corto) o 79 79 (lungo)
C0597E o E7

Trailer​

I byte finali del frame che segnalano la fine del messaggio.

ProtocolloTrailer
S21L7E
G11LSE0D 0A (CR LF)
C0597E o E7

πŸ”’ Sistemi Numerici​

Esadecimale (Hex)​

Sistema numerico in base 16. Usa cifre 0-9 e lettere A-F. Ogni byte (8 bit) si rappresenta con 2 caratteri hex.

Decimale:  255     β†’  Hex: FF
Decimale: 126 β†’ Hex: 7E
Decimale: 1234 β†’ Hex: 04D2

Perché si usa? È compatto e si allinea perfettamente con i byte (2 cifre hex = 1 byte).

Binario​

Sistema numerico in base 2. Ogni cifra Γ¨ un bit (0 o 1). 8 bit = 1 byte.

Hex:    7E          β†’  Binario: 0111 1110
Hex: FF β†’ Binario: 1111 1111

Uso pratico: Per analizzare singoli flag (bit di stato/allarme).

BCD (Binary-Coded Decimal)​

Formato che codifica ogni cifra decimale in 4 bit. Usato per timestamp e IMEI.

Orario 10:30:45 in BCD:
10 β†’ 0x10 (non 0x0A!)
30 β†’ 0x30
45 β†’ 0x45

Risultato: 10 30 45 (6 bytes)

βœ… Controllo Errori​

Checksum​

Un valore calcolato sui dati del frame per rilevare errori di trasmissione. Se il checksum ricevuto non corrisponde a quello calcolato, il frame Γ¨ corrotto.

Tipi comuni:

TipoCalcoloUsato da
XORXOR di tutti i byteS21L, C059
CRC16 X.25Polinomiale ITU-TG11LSE

Esempio XOR:

Bytes: 02 00 28 01 35 ...
XOR: 02 ^ 00 ^ 28 ^ 01 ^ 35 = 1E

CRC (Cyclic Redundancy Check)​

Checksum piΓΉ robusto basato su divisione polinomiale. Rileva piΓΉ tipi di errori rispetto a XOR.


πŸ”€ Caratteri Speciali​

Delimitatore​

Byte speciale che marca inizio e fine del frame. Il problema: cosa succede se il payload contiene lo stesso byte del delimitatore?

Delimitatore: 7E
Payload: ... 45 7E AA ... ← Problema! Sembra fine frame!

Escape Sequence​

Meccanismo per evitare ambiguitΓ  quando il delimitatore appare nel payload. Si sostituisce il byte problematico con una sequenza speciale.

S21L/C059:

7E nel payload β†’ 7D 02 (escape)
7D nel payload β†’ 7D 01 (escape dell'escape)

Esempio:

Dati originali:     AA 7E BB
Dopo escaping: AA 7D 02 BB ← Ora 7E non confonde il parser

Unescaping​

Processo inverso: il decoder riconverte le escape sequence nei byte originali.


πŸ“ Dati di Posizione​

Coordinate​

Latitudine e longitudine. Diversi protocolli usano formati diversi:

FormatoEsempioConversione
Microgradi45123456Γ· 1.000.000 = 45.123456Β°
Minuti/3000081234000Γ· 60 Γ· 30000 = 45.13Β°

Velocità​

Tipicamente in km/h nel protocollo, convertita in nodi (knots) internamente.

double knots = kmh / 1.852;

Course (Direzione)​

Angolo di direzione in gradi (0-360Β°). 0Β° = Nord, 90Β° = Est, 180Β° = Sud, 270Β° = Ovest.

Satellites​

Numero di satelliti GPS visibili. PiΓΉ satelliti = posizione piΓΉ precisa.

RSSI​

Received Signal Strength Indicator: potenza del segnale cellulare (0-31 tipicamente).


πŸš— Stato Veicolo​

Ignition (ACC)​

Stato del quadro acceso/spento. Indica se il veicolo Γ¨ in funzione.

Charging​

Indica se il dispositivo Γ¨ in carica (collegato all'alimentazione esterna).

Valid​

Indica se il fix GPS Γ¨ valido. Se false, le coordinate potrebbero essere imprecise o vecchie.

Blocked​

Stato del relè di blocco motore. Se true, il comando di blocco è attivo.


⚠️ Allarmi​

Bitmask (Maschera di Bit)​

Un intero dove ogni singolo bit rappresenta uno stato o allarme diverso.

Alarm flags: 0x00010001 (32 bit)
β”‚ β”‚
β”‚ └── Bit 0: SOS (1 = attivo)
└────────── Bit 16: Tampering (1 = attivo)

Lettura in Java:

if ((alarm & 0x01) != 0) {      // Bit 0
position.addAlarm("sos");
}
if ((alarm & 0x10000) != 0) { // Bit 16
position.addAlarm("tampering");
}

Flag​

Singolo bit che indica uno stato binario (on/off, vero/falso).


πŸ”„ Comunicazione​

TCP​

Transmission Control Protocol: protocollo di trasmissione affidabile. Garantisce che i dati arrivino in ordine e senza perdite.

Sessione​

Associazione tra un device ID e una connessione TCP. Creata al login, mantenuta finchΓ© il device Γ¨ connesso.

Handshake​

Scambio iniziale di messaggi per stabilire la connessione (Login β†’ Response).

ACK (Acknowledgement)​

Messaggio di conferma dal server al device che indica "ho ricevuto il tuo messaggio".

Heartbeat​

Messaggio "keep-alive" inviato periodicamente per mantenere la connessione attiva anche senza dati nuovi.


πŸ“ Formati Dati​

TLV (Tag-Length-Value)​

Formato flessibile per dati opzionali. Ogni blocco contiene:

  • Tag: Tipo di dato (1 byte)
  • Length: Lunghezza del valore (1 byte)
  • Value: Il dato vero e proprio (N byte)
01 04 00 01 D4 C0
β”‚ β”‚ └─────────┴── Value: Odometer = 120.000
β”‚ └───────────── Length: 4 bytes
└──────────────── Tag: 0x01 = Odometer

Big Endian vs Little Endian​

Ordine dei byte per numeri multi-byte.

Numero: 0x1234

Big Endian: 12 34 (byte piΓΉ significativo prima)
Little Endian: 34 12 (byte meno significativo prima)

I protocolli GPS tipicamente usano Big Endian.


πŸ› οΈ Debug​

Wireshark​

Software per catturare e analizzare traffico di rete. Permette di vedere i byte grezzi scambiati tra device e server.

tcpdump​

Tool da linea di comando per catturare traffico:

sudo tcpdump -i eth0 port 5021 -w capture.pcap

Hex Dump​

Rappresentazione di dati binari in formato esadecimale leggibile:

7E 02 00 00 28 01 35 86 84 03 39 40 00 15 ...