Developer Documentation

The contributor guide: how RadioFoundry is built, tested, released and extended. These pages describe process and tooling and link the specs for behavior; they don't repeat them. Users read docs/user.

Reading order

Step Page What it covers
1. Rules Contributing Branches, pull requests, clean-room rules, code, tests and docs a change needs
2. Layout Architecture The layers (core, hal, drivers, platform, boards), the tasks, where each feature lives
3. Build Building Toolchains, make targets, feature switches, build options, image size, flashing your own build
4. Test Testing Host tests, the UI simulator and gallery, sanitizers, fuzzing, HIL and the SDR bench
5. CI CI The workflows per push, per pull request and nightly; running each piece locally; coverage
CI runners and images The Gitea and GitHub runners, the csky-elf image, the HIL runner
Stack check The static worst-case stack depth of every task
6. Add a radio Adding a radio The files a board needs, board_t, the key map, bring-up order and records
The board registry board.toml and platform.toml field by field, what is derived, tools/boards.py
7. Codec The codec How a radio's codec is merged and hosted, and what a merge tool must do
8. Release Releases The checklist, artifacts and manifests, sector maps, codec handling, the release workflow
The user manual PDF Building the manual and its workflow
9. Web site The web site The generated site, data sources, templates, translating, radio images, error logging
The web flasher The browser installer: modules, backends, backups, restore, version links
The Codeplug Editor The browser codeplug editor

Reference

Page What it covers
Debug link The host-port debug protocol and tools/rfoundry_debug.py
CPS, codeplug and settings Where the CPS shim, the codeplug layout and the settings store are specified
Developer glossary Terms of the specs, generated from docs/glossary.json

Common tasks

To See
Build a radio Building
Run everything a pull request must pass JOBS=8 tools/ci.sh, which ends with "all checks passed" (CI)
Add a feature switch build-config.md, "Adding a feature", then the matrix (feature-matrix.md)
Add a host test Testing, "Host tests"
Add a HIL test tests/hil/README.md, "Writing a test"
Change the UI docs/ux, ui.md, then make -C tests/host ui-gallery (Testing)
Add a radio Adding a radio
Move a radio from stock firmware The migration tools and specs are listed in the spec index
Cut a release Releases, "Checklist"
Preview the web site python3 site/build.py --serve (The web site)
Install RadioFoundry or edit a codeplug (as a user) Installing

Elsewhere

Directory Contents
docs/spec Behavior, protocols, the DMR modems, each radio's hardware
docs/ux The UI design: principles, information architecture, task flows, wireframes, screens
docs/testing How to run every test tier, on-air coverage, bench procedures, bring-up records
docs/build-config.md Every build switch and value
docs/feature-matrix.md Every feature's flash cost and which radios build it
docs/CLEANROOM.md The clean-room rules
AGENTS.md The short version of the rules for coding agents

View the source of this page