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 |