Module Documentation
Module Documentation
Heads up. This part of the documentation is for people who want to read or change the firmware itself. If you are here to use PacketRF — set it up, run it, get on the air — you can safely skip this whole tree. Start at PacketRF and follow the user-facing pages from there. Nothing on this side is required reading for an operator.
This is the developer-facing index. Each PacketRF module keeps its own short documentation page next to its source, and the documentation pipeline picks those pages up automatically and renders them alongside the Doxygen output from the public headers.
If you are reading this because you want to contribute, the right order is: pick the module relevant to what you are working on, read its page to understand purpose, ownership, and integration points, and then dive into the code. The pages are written to make the code make sense, not to replace it.
Where module pages live
The discovery convention is intentionally simple. A module page can be either of:
src/<module>/<name>-module.mdsrc/<module>/<name>-module.doxapp/<name>-module.mdapp/<name>-module.dox
Pages should start with a @page <id> <Title> directive so they appear in the sidebar and can be cross-referenced with @ref and @subpage.
When adding a new module, the rule of thumb for what to write is: purpose (one paragraph), what the module owns and what it deliberately does not own, the integration points with neighbouring modules, and any non-obvious design decisions that would be expensive to rediscover from the code alone.
Current module pages
Application and runtime
- Application Module — composition root, startup, task wiring, firmware profile selection.
Networking
- Network Module — lwIP integration, Ethernet-style netifs, PPP, network task orchestration.
- IPv4 Pool Module — IPv4 pool manager: static and dynamic pools, allocation, source-driven activation.
NPR (radio side)
- The full NPR module tree under
src/npr(runtime, MAC, PHY, frames, IPv4 segmentation, stats) is documented inside the generated API reference. A consolidated NPR module page is on the TODO list.
Management plane
- Control Module — transport-agnostic management command core and the auth model. The companion Control Developer Guide walks through how to add and change endpoints, and Control Wire Protocol CDDL carries the normative wire schema.
- CoAP Module — the small embedded CoAP server and router.
- COSE Module — the
COSE_Sign1profile used for signed management traffic. - Crypto Module — Ed25519 device identity, keyring, and signing API.
Configuration and persistence
- Configuration Module — typed persistent configuration with per-section CBOR storage on LittleFS.
NEPs and protocol-facing documents
Protocol-facing extensions and design records live separately, in the NPR Enhancement Proposal directory. Those are specification-style documents and are reviewed differently from code or implementation notes.