# gvanem/dump1090 architecture

> Architecture diagram of the GitHub repository gvanem/dump1090, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gvanem/dump1090
- Repository: https://github.com/gvanem/dump1090

## Overview

Dump1090 is a Windows ADS-B receiver, Mode S decoder, and web server. Its main workflow acquires radio or file/network samples, demodulates and validates messages, maintains aircraft and airport information, and exposes live traffic through network outputs and a browser map; it also supports an interactive console. The README documents the main capabilities, while source excerpts and the index establish only some internal calls, so uncertain subsystem links are omitted. The tree also contains a separate Retro ADS-B radar application that fetches tar1090 data and renders a radar display with optional ATC audio.

Main entry points: [`src/dump1090.c`](https://github.com/gvanem/dump1090/blob/main/src/dump1090.c) (Dump1090 Runtime), [`src/externals/Retro-ADSB-radar/main.py`](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/main.py) (Radar App), [`src/externals/Retro-ADSB-radar/data_fetcher.py`](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/data_fetcher.py) (Aircraft Fetcher), [`src/net_io.c`](https://github.com/gvanem/dump1090/blob/main/src/net_io.c) (Network Services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_acquisition["Signal Acquisition"]
  node_main["Dump1090 Runtime<br/>[dump1090.c]"]
  node_radio_drivers["Radio Drivers<br/>[rtl-sdr.h]"]
  node_sample_reading["File Decoding<br/>[infile.h]"]
end

subgraph group_decoding["Message Decoding"]
  node_demodulation["Demodulation<br/>[demod.h]"]
  node_crc["CRC Validation<br/>[crc.h]"]
  node_cpr["CPR Positioning<br/>[cpr.h]"]
end

subgraph group_state["Aircraft State"]
  node_aircraft["Aircraft Tracking<br/>[aircraft.c]"]
  node_airports["Airport Data<br/>[airports.c]"]
end

subgraph group_outputs["Outputs and Displays"]
  node_network["Network Services<br/>[net_io.c]"]
  node_web_server["Embedded HTTP Server<br/>[mongoose.c]"]
  node_interactive["Interactive Console<br/>[interactive.h]"]
  node_speech["Aircraft Speech<br/>[speech.h]"]
end

subgraph group_retro["Retro Radar"]
  node_retro_main["Radar App<br/>[main.py]"]
  node_retro_config["Radar Configuration<br/>[config.py]"]
  node_fetcher["Aircraft Fetcher<br/>[data_fetcher.py]"]
  node_models["Aircraft Models<br/>[data_models.py]"]
  node_radar_ui["Radar and Table<br/>[ui_components.py]"]
  node_audio["ATC Audio<br/>[audio_manager.py]"]
end

node_operator(("Operator"))
node_radio(("SDR Receiver"))
node_sample_input["Sample Input"]
node_network_input(("Raw TCP Input"))
node_browser["Map Browser<br/>[script.js]"]

node_operator -->|"starts"| node_main
node_radio -->|"provides samples"| node_radio_drivers
node_radio_drivers -.->|"supplies samples"| node_main
node_sample_input -->|"provides data"| node_sample_reading
node_network_input -->|"sends raw data"| node_network
node_main -->|"selects decoder"| node_demodulation
node_main -->|"uses validation"| node_crc
node_main -->|"uses positioning"| node_cpr
node_main -->|"updates tracks"| node_aircraft
node_main -->|"initializes data"| node_airports
node_main -->|"serves streams"| node_network
node_main -.->|"runs display"| node_interactive
node_main -->|"supports announcements"| node_speech
node_network -.->|"serves HTTP"| node_web_server
node_web_server -->|"delivers map"| node_browser
node_operator -.->|"starts"| node_retro_main
node_retro_main -->|"reads settings"| node_retro_config
node_retro_main -->|"starts tracker"| node_fetcher
node_fetcher -->|"reads endpoint"| node_retro_config
node_fetcher -->|"creates aircraft"| node_models
node_retro_main -->|"draws traffic"| node_radar_ui
node_retro_main -.->|"controls playback"| node_audio

click node_main "https://github.com/gvanem/dump1090/blob/main/src/dump1090.c"
click node_radio_drivers "https://github.com/gvanem/dump1090/blob/main/src/externals/RTLSDR/rtl-sdr.h"
click node_sample_reading "https://github.com/gvanem/dump1090/blob/main/src/infile.h"
click node_demodulation "https://github.com/gvanem/dump1090/blob/main/src/demod.h"
click node_crc "https://github.com/gvanem/dump1090/blob/main/src/crc.h"
click node_cpr "https://github.com/gvanem/dump1090/blob/main/src/cpr.h"
click node_aircraft "https://github.com/gvanem/dump1090/blob/main/src/aircraft.c"
click node_airports "https://github.com/gvanem/dump1090/blob/main/src/airports.c"
click node_network "https://github.com/gvanem/dump1090/blob/main/src/net_io.c"
click node_web_server "https://github.com/gvanem/dump1090/blob/main/src/externals/mongoose.c"
click node_browser "https://github.com/gvanem/dump1090/blob/main/web_root-Tar1090/script.js"
click node_interactive "https://github.com/gvanem/dump1090/blob/main/src/interactive.h"
click node_speech "https://github.com/gvanem/dump1090/blob/main/src/speech.h"
click node_retro_main "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/main.py"
click node_retro_config "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/config.py"
click node_fetcher "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/data_fetcher.py"
click node_models "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/data_models.py"
click node_radar_ui "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/ui_components.py"
click node_audio "https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/audio_manager.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_radio_drivers,node_sample_reading,node_browser toneBlue
class node_demodulation,node_crc,node_cpr toneAmber
class node_aircraft,node_airports toneMint
class node_network,node_web_server,node_interactive,node_speech toneRose
class node_retro_main,node_retro_config,node_fetcher,node_models,node_radar_ui,node_audio,node_operator,node_radio,node_sample_input,node_network_input toneIndigo
```

## Components

### Signal Acquisition

- [Dump1090 Runtime](https://github.com/gvanem/dump1090/blob/main/src/dump1090.c): `src/dump1090.c`
- [Radio Drivers](https://github.com/gvanem/dump1090/blob/main/src/externals/RTLSDR/rtl-sdr.h): `src/externals/RTLSDR/rtl-sdr.h`
- [File Decoding](https://github.com/gvanem/dump1090/blob/main/src/infile.h): `src/infile.h`

### Message Decoding

- [Demodulation](https://github.com/gvanem/dump1090/blob/main/src/demod.h): `src/demod.h`
- [CRC Validation](https://github.com/gvanem/dump1090/blob/main/src/crc.h): `src/crc.h`
- [CPR Positioning](https://github.com/gvanem/dump1090/blob/main/src/cpr.h): `src/cpr.h`

### Aircraft State

- [Aircraft Tracking](https://github.com/gvanem/dump1090/blob/main/src/aircraft.c): `src/aircraft.c`
- [Airport Data](https://github.com/gvanem/dump1090/blob/main/src/airports.c): `src/airports.c`

### Outputs and Displays

- [Network Services](https://github.com/gvanem/dump1090/blob/main/src/net_io.c): `src/net_io.c`
- [Embedded HTTP Server](https://github.com/gvanem/dump1090/blob/main/src/externals/mongoose.c): `src/externals/mongoose.c`
- [Interactive Console](https://github.com/gvanem/dump1090/blob/main/src/interactive.h): `src/interactive.h`
- [Aircraft Speech](https://github.com/gvanem/dump1090/blob/main/src/speech.h): `src/speech.h`

### Retro Radar

- [Radar App](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/main.py): `src/externals/Retro-ADSB-radar/main.py`
- [Radar Configuration](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/config.py): `src/externals/Retro-ADSB-radar/config.py`
- [Aircraft Fetcher](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/data_fetcher.py): `src/externals/Retro-ADSB-radar/data_fetcher.py`
- [Aircraft Models](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/data_models.py): `src/externals/Retro-ADSB-radar/data_models.py`
- [Radar and Table](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/ui_components.py): `src/externals/Retro-ADSB-radar/ui_components.py`
- [ATC Audio](https://github.com/gvanem/dump1090/blob/main/src/externals/Retro-ADSB-radar/audio_manager.py): `src/externals/Retro-ADSB-radar/audio_manager.py`

### Other components

- **Operator**
- **SDR Receiver**
- **Sample Input**
- **Raw TCP Input**
- [Map Browser](https://github.com/gvanem/dump1090/blob/main/web_root-Tar1090/script.js): `web_root-Tar1090/script.js`

## Connections

- Operator → Dump1090 Runtime: starts (evidence: `README.md`)
- SDR Receiver → Radio Drivers: provides samples (evidence: `README.md`)
- Radio Drivers → Dump1090 Runtime: supplies samples (evidence: `src/dump1090.c`)
- Sample Input → File Decoding: provides data (evidence: `README.md`)
- Raw TCP Input → Network Services: sends raw data (evidence: `README.md`)
- Dump1090 Runtime → Demodulation: selects decoder (evidence: `src/dump1090.c`)
- Dump1090 Runtime → CRC Validation: uses validation (evidence: `src/dump1090.c`)
- Dump1090 Runtime → CPR Positioning: uses positioning (evidence: `src/dump1090.c`)
- Dump1090 Runtime → Aircraft Tracking: updates tracks (evidence: `src/dump1090.c`)
- Dump1090 Runtime → Airport Data: initializes data (evidence: `src/dump1090.c`)
- Dump1090 Runtime → Network Services: serves streams (evidence: `src/dump1090.c`)
- Dump1090 Runtime → Interactive Console: runs display (evidence: `src/dump1090.c`)
- Dump1090 Runtime → Aircraft Speech: supports announcements (evidence: `README.md`)
- Network Services → Embedded HTTP Server: serves HTTP
- Embedded HTTP Server → Map Browser: delivers map (evidence: `README.md`)
- Operator → Radar App: starts
- Radar App → Radar Configuration: reads settings (evidence: `src/externals/Retro-ADSB-radar/main.py`)
- Radar App → Aircraft Fetcher: starts tracker (evidence: `src/externals/Retro-ADSB-radar/main.py`)
- Aircraft Fetcher → Radar Configuration: reads endpoint (evidence: `src/externals/Retro-ADSB-radar/data_fetcher.py`)
- Aircraft Fetcher → Aircraft Models: creates aircraft (evidence: `src/externals/Retro-ADSB-radar/data_fetcher.py`)
- Radar App → Radar and Table: draws traffic (evidence: `src/externals/Retro-ADSB-radar/main.py`)
- Radar App → ATC Audio: controls playback (evidence: `src/externals/Retro-ADSB-radar/main.py`)
