# birdsopensource/birds5-source_codes architecture

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

- Interactive diagram: https://gitdiagram.com/birdsopensource/birds5-source_codes
- Repository: https://github.com/birdsopensource/birds5-source_codes

## Overview

This repository contains BIRDS-5 satellite onboard firmware and hardware descriptions, rather than a conventional user-facing application. The visible operational path is command handling by the Mission Boss, which forwards bytes to subsystem UARTs and controls power-selection pins; the FAB PIC separately gathers telemetry on request and sends a data packet to the Main PIC. The README also names five satellite missions, but their implementations are not shown in the sampled source. Relationships to those missions and to the CPLD are therefore not inferred.

Main entry points: [`Mission Boss/Mission Boss.c`](https://github.com/birdsopensource/birds5-source_codes/blob/main/Mission%20Boss/Mission%20Boss.c) (Mission Boss), [`FAB_PIC/FAB_PIC_FM.c`](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/FAB_PIC_FM.c) (FAB firmware), [`FAB_PIC/ADC_reading_func.c`](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/ADC_reading_func.c) (ADC readings), [`FAB_PIC/define_func.c`](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/define_func.c) (FAB control helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_command["Command control"]
  node_mission_boss["Mission Boss<br/>[Mission Boss.c]"]
  node_mb1["Subsystem UART 1"]
  node_mb2["Subsystem UART 2"]
  node_rab["RAB UART"]
end

subgraph group_telemetry["Telemetry acquisition"]
  node_fab_fw["FAB firmware<br/>[FAB_PIC_FM.c]"]
  node_adc_read["ADC readings<br/>[ADC_reading_func.c]"]
  node_fab_defs["FAB control helpers<br/>[define_func.c]"]
end

subgraph group_hardware["Flight hardware"]
  node_fab_registers["FAB registers"]
  node_boss_registers["Boss registers"]
  node_cpld["CPLD logic<br/>[birds5.vhd]"]
  node_main_pic["Main PIC"]
  node_reset_pic["Reset PIC"]
end

subgraph group_missions["Satellite missions"]
  node_attitude["Attitude visualization<br/>[README.md]"]
  node_img_cls["Imaging classification<br/>[README.md]"]
  node_store_forward["Store and forward<br/>[README.md]"]
  node_pino["Particle instrument<br/>[README.md]"]
  node_aprs["APRS digipeater<br/>[README.md]"]
end

node_obc(("Onboard computer"))

node_obc -->|"sends commands"| node_mission_boss
node_mission_boss -->|"returns data"| node_obc
node_mission_boss -->|"forwards bytes"| node_mb1
node_mission_boss -->|"forwards bytes"| node_mb2
node_mission_boss -->|"forwards bytes"| node_rab
node_fab_fw -->|"calls readings"| node_adc_read
node_fab_fw -->|"uses helpers"| node_fab_defs
node_fab_fw -->|"sends telemetry"| node_obc
node_mission_boss -.->|"sets selection pins"| node_cpld

click node_mission_boss "https://github.com/birdsopensource/birds5-source_codes/blob/main/Mission%20Boss/Mission%20Boss.c"
click node_fab_fw "https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/FAB_PIC_FM.c"
click node_adc_read "https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/ADC_reading_func.c"
click node_fab_defs "https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/define_func.c"
click node_fab_registers "https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/PIC16F1789_registers.h"
click node_boss_registers "https://github.com/birdsopensource/birds5-source_codes/blob/main/Mission%20Boss/PIC18F67J94_registers.h"
click node_cpld "https://github.com/birdsopensource/birds5-source_codes/blob/main/CPLD/birds5.vhd"
click node_main_pic "https://github.com/birdsopensource/birds5-source_codes/tree/main/Main%20PIC"
click node_reset_pic "https://github.com/birdsopensource/birds5-source_codes/tree/main/RESET%20PIC"
click node_attitude "https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md"
click node_img_cls "https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md"
click node_store_forward "https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md"
click node_pino "https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md"
click node_aprs "https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md"

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_mission_boss,node_mb1,node_mb2,node_rab toneBlue
class node_fab_fw,node_adc_read,node_fab_defs toneAmber
class node_fab_registers,node_boss_registers,node_cpld,node_main_pic,node_reset_pic toneMint
class node_attitude,node_img_cls,node_store_forward,node_pino,node_aprs toneRose
class node_obc toneIndigo
```

## Components

### Command control

- [Mission Boss](https://github.com/birdsopensource/birds5-source_codes/blob/main/Mission%20Boss/Mission%20Boss.c): `Mission Boss/Mission Boss.c`
- **Subsystem UART 1**
- **Subsystem UART 2**
- **RAB UART**

### Telemetry acquisition

- [FAB firmware](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/FAB_PIC_FM.c): `FAB_PIC/FAB_PIC_FM.c`
- [ADC readings](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/ADC_reading_func.c): `FAB_PIC/ADC_reading_func.c`
- [FAB control helpers](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/define_func.c): `FAB_PIC/define_func.c`

### Flight hardware

- [FAB registers](https://github.com/birdsopensource/birds5-source_codes/blob/main/FAB_PIC/PIC16F1789_registers.h): `FAB_PIC/PIC16F1789_registers.h`
- [Boss registers](https://github.com/birdsopensource/birds5-source_codes/blob/main/Mission%20Boss/PIC18F67J94_registers.h): `Mission Boss/PIC18F67J94_registers.h`
- [CPLD logic](https://github.com/birdsopensource/birds5-source_codes/blob/main/CPLD/birds5.vhd): `CPLD/birds5.vhd`
- [Main PIC](https://github.com/birdsopensource/birds5-source_codes/tree/main/Main%20PIC): `Main PIC`
- [Reset PIC](https://github.com/birdsopensource/birds5-source_codes/tree/main/RESET%20PIC): `RESET PIC`

### Satellite missions

- [Attitude visualization](https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md): `README.md`
- [Imaging classification](https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md): `README.md`
- [Store and forward](https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md): `README.md`
- [Particle instrument](https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md): `README.md`
- [APRS digipeater](https://github.com/birdsopensource/birds5-source_codes/blob/main/README.md): `README.md`

### Other components

- **Onboard computer**

## Connections

- Onboard computer → Mission Boss: sends commands
- Mission Boss → Onboard computer: returns data
- Mission Boss → Subsystem UART 1: forwards bytes (evidence: `Mission Boss/Mission Boss.c`)
- Mission Boss → Subsystem UART 2: forwards bytes (evidence: `Mission Boss/Mission Boss.c`)
- Mission Boss → RAB UART: forwards bytes (evidence: `Mission Boss/Mission Boss.c`)
- FAB firmware → ADC readings: calls readings (evidence: `FAB_PIC/FAB_PIC_FM.c`)
- FAB firmware → FAB control helpers: uses helpers
- FAB firmware → Onboard computer: sends telemetry (evidence: `FAB_PIC/FAB_PIC_FM.c`)
- Mission Boss → CPLD logic: sets selection pins
