Standards¶
Technical standards for the code and the devices: how C and Python are written, how interfaces and identifiers are designed, and what a field-deployed connected device must do.
The Guidelines say how the engineering is run, and require a coding standard for each language (EG-013). These pages are those standards, and the device and interface standards that sit alongside them. The Guides go into depth, and the Primers introduce the topics.
Coding¶
| Standard | Covers |
|---|---|
| C coding standard | Layout, naming, declarations, statements and comments for C, with a focus on embedded firmware |
| MISRA C | What MISRA C is, how to approach violations and deviations, and how it fits the workflow |
| Python for supporting tools | Style, type hints, docstrings, errors, structure and tooling for build scripts and other supporting tools |
Coding standards.
Design and interfaces¶
| Standard | Covers |
|---|---|
| Software architecture principles | Component, SOLID and package principles, and the simplicity principles behind them |
| API design and error handling | Resource design, status codes, problem details (RFC 9457), versioning and pagination |
| Unique identifiers | Choosing and storing UUIDs and their time-ordered alternatives, and the effect on database indexes |
| Designing LwM2M objects and resources | Grouping data into objects, choosing resource types and access, and when to split an object |
Design and interfaces standards.
Connected devices¶
| Standard | Covers |
|---|---|
| IoT device architecture principles | Principles for field-deployed devices in seven pillars, with device tiers and review checks |
| Battery budgeting and power profiling | Energy budgets, low-power state machines, battery chemistry and current profiling |
| Constrained binary payloads | When and how to use CBOR and Protocol Buffers on constrained networks |
| Offline storage and synchronisation | Flash storage, wear levelling, buffering and synchronising data when a device has been offline |
| Serialisation, provisioning and factory test | Device identities, key injection, hardware locking and automated factory test |
Connected devices standards.