# daniestevez/gr-satellites architecture

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

- Interactive diagram: https://gitdiagram.com/daniestevez/gr-satellites
- Repository: https://github.com/daniestevez/gr-satellites

## Overview

gr-satellites is a GNU Radio toolkit for decoding amateur-satellite telemetry. A groundstation selects a satellite and supplies samples to a configured flowgraph, which demodulates and deframes signals, applies protocol and error-correction processing, then routes decoded packets to display, file, telemetry, or transport outputs. Satellite-specific telemetry decoding and file reassembly are important downstream capabilities. The graph reflects the README and sampled flowgraph/parser code; detailed wiring within unsampled protocol blocks is not shown.

Main entry points: [`python/core/gr_satellites_flowgraph.py`](https://github.com/daniestevez/gr-satellites/blob/main/python/core/gr_satellites_flowgraph.py) (Decoder flowgraph), [`python/components/datasinks`](https://github.com/daniestevez/gr-satellites/tree/main/python/components/datasinks) (Data sinks), [`include/satellites/pdu_add_meta.h`](https://github.com/daniestevez/gr-satellites/blob/main/include/satellites/pdu_add_meta.h) (PDU tagger), [`python/components/transports`](https://github.com/daniestevez/gr-satellites/tree/main/python/components/transports) (Transports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Flowgraph setup"]
  node_sat_config["Satellite config<br/>[satyaml.py]"]
  node_flowgraph["Decoder flowgraph"]
end

subgraph group_radio["Signal decoding"]
  node_demod["Demodulators"]
  node_sync["Sync and framing"]
  node_deframers["Satellite deframers"]
  node_fec["FEC and modem blocks"]
end

subgraph group_packets["Packet interpretation"]
  node_ccsds["CCSDS blocks"]
  node_protocol["Packet protocols"]
  node_telemetry["Telemetry parsers"]
end

subgraph group_outputs["Results and delivery"]
  node_tagger["PDU tagger<br/>[pdu_add_meta.h]"]
  node_sinks["Data sinks"]
  node_transports["Transports"]
  node_file_reassembly["File reassembly<br/>[filereceiver.py]"]
end

node_operator(("Groundstation"))
node_samples(("Radio samples"))
node_file_output["Received files"]
node_telemetry_service(("Telemetry services"))
node_packet_output(("Packet output"))

node_operator -->|"configures"| node_flowgraph
node_operator -->|"provides"| node_samples
node_sat_config -->|"configures"| node_flowgraph
node_samples -->|"sample input"| node_flowgraph
node_flowgraph -->|"dispatches"| node_demod
node_flowgraph -->|"dispatches"| node_sync
node_flowgraph -->|"dispatches"| node_deframers
node_flowgraph -->|"dispatches"| node_fec
node_flowgraph -->|"dispatches"| node_ccsds
node_flowgraph -->|"dispatches"| node_protocol
node_flowgraph -->|"dispatches"| node_telemetry
node_flowgraph -->|"connects"| node_tagger
node_flowgraph -->|"connects"| node_sinks
node_flowgraph -->|"connects"| node_transports
node_deframers -->|"emits PDUs"| node_tagger
node_tagger -->|"routes PDUs"| node_sinks
node_tagger -->|"routes PDUs"| node_transports
node_sinks -->|"provides chunks"| node_file_reassembly
node_file_reassembly -->|"reassembles"| node_file_output
node_sinks -.->|"submits telemetry"| node_telemetry_service
node_sinks -->|"displays or saves"| node_packet_output
node_transports -->|"delivers packets"| node_packet_output

click node_sat_config "https://github.com/daniestevez/gr-satellites/blob/main/python/satyaml/satyaml.py"
click node_flowgraph "https://github.com/daniestevez/gr-satellites/blob/main/python/core/gr_satellites_flowgraph.py"
click node_demod "https://github.com/daniestevez/gr-satellites/tree/main/python/components/demodulators"
click node_sync "https://github.com/daniestevez/gr-satellites/tree/main/python/hier"
click node_deframers "https://github.com/daniestevez/gr-satellites/tree/main/python/components/deframers"
click node_fec "https://github.com/daniestevez/gr-satellites/tree/main/lib"
click node_ccsds "https://github.com/daniestevez/gr-satellites/tree/main/python/ccsds"
click node_protocol "https://github.com/daniestevez/gr-satellites/tree/main/python"
click node_telemetry "https://github.com/daniestevez/gr-satellites/tree/main/python/telemetry"
click node_tagger "https://github.com/daniestevez/gr-satellites/blob/main/include/satellites/pdu_add_meta.h"
click node_sinks "https://github.com/daniestevez/gr-satellites/tree/main/python/components/datasinks"
click node_transports "https://github.com/daniestevez/gr-satellites/tree/main/python/components/transports"
click node_file_reassembly "https://github.com/daniestevez/gr-satellites/blob/main/python/filereceiver/filereceiver.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_sat_config,node_flowgraph toneBlue
class node_demod,node_sync,node_deframers,node_fec toneAmber
class node_ccsds,node_protocol,node_telemetry toneMint
class node_tagger,node_sinks,node_transports,node_file_reassembly toneRose
class node_operator,node_samples,node_file_output,node_telemetry_service,node_packet_output toneIndigo
```

## Components

### Flowgraph setup

- [Satellite config](https://github.com/daniestevez/gr-satellites/blob/main/python/satyaml/satyaml.py): `python/satyaml/satyaml.py`
- [Decoder flowgraph](https://github.com/daniestevez/gr-satellites/blob/main/python/core/gr_satellites_flowgraph.py): `python/core/gr_satellites_flowgraph.py`

### Signal decoding

- [Demodulators](https://github.com/daniestevez/gr-satellites/tree/main/python/components/demodulators): `python/components/demodulators`
- [Sync and framing](https://github.com/daniestevez/gr-satellites/tree/main/python/hier): `python/hier`
- [Satellite deframers](https://github.com/daniestevez/gr-satellites/tree/main/python/components/deframers): `python/components/deframers`
- [FEC and modem blocks](https://github.com/daniestevez/gr-satellites/tree/main/lib): `lib`

### Packet interpretation

- [CCSDS blocks](https://github.com/daniestevez/gr-satellites/tree/main/python/ccsds): `python/ccsds`
- [Packet protocols](https://github.com/daniestevez/gr-satellites/tree/main/python): `python`
- [Telemetry parsers](https://github.com/daniestevez/gr-satellites/tree/main/python/telemetry): `python/telemetry`

### Results and delivery

- [PDU tagger](https://github.com/daniestevez/gr-satellites/blob/main/include/satellites/pdu_add_meta.h): `include/satellites/pdu_add_meta.h`
- [Data sinks](https://github.com/daniestevez/gr-satellites/tree/main/python/components/datasinks): `python/components/datasinks`
- [Transports](https://github.com/daniestevez/gr-satellites/tree/main/python/components/transports): `python/components/transports`
- [File reassembly](https://github.com/daniestevez/gr-satellites/blob/main/python/filereceiver/filereceiver.py): `python/filereceiver/filereceiver.py`

### Other components

- **Groundstation**
- **Radio samples**
- **Received files**
- **Telemetry services**
- **Packet output**

## Connections

- Groundstation → Decoder flowgraph: configures
- Groundstation → Radio samples: provides
- Satellite config → Decoder flowgraph: configures
- Radio samples → Decoder flowgraph: sample input
- Decoder flowgraph → Demodulators: dispatches
- Decoder flowgraph → Sync and framing: dispatches
- Decoder flowgraph → Satellite deframers: dispatches
- Decoder flowgraph → FEC and modem blocks: dispatches
- Decoder flowgraph → CCSDS blocks: dispatches
- Decoder flowgraph → Packet protocols: dispatches
- Decoder flowgraph → Telemetry parsers: dispatches
- Decoder flowgraph → PDU tagger: connects
- Decoder flowgraph → Data sinks: connects
- Decoder flowgraph → Transports: connects
- Satellite deframers → PDU tagger: emits PDUs
- PDU tagger → Data sinks: routes PDUs
- PDU tagger → Transports: routes PDUs
- Data sinks → File reassembly: provides chunks
- File reassembly → Received files: reassembles
- Data sinks → Telemetry services: submits telemetry
- Data sinks → Packet output: displays or saves
- Transports → Packet output: delivers packets
