Header-only CRUMBS operation contracts for the BREAD Slice family.
This repository is the single source of truth for BREAD wire contracts used by:
- Slice peripheral firmware repos (device side)
- Controller repos (Linux/Arduino/etc., controller side)
Canonical public headers are generation-free and device-capability based:
#include <bread/bread_ops.h>
#include <bread/dcmt_ops.h>
#include <bread/rlht_ops.h>
#include <bread/bread_caps.h>BREAD uses a shared capability query opcode:
BREAD_OP_GET_CAPS
Payload v1:
[caps_schema:u8][caps_level:u8][caps_flags:u32_le]
Controller flow: version query -> caps query -> command gating.
- RLHT:
include/bread/rlht_ops.h - DCMT:
include/bread/dcmt_ops.h - Shared caps helpers:
include/bread/bread_caps.h - Shared version helpers:
include/bread/bread_version_helpers.h
In your project platformio.ini:
lib_deps =
cameronbrooks11/CRUMBS @ ^0.11.0
cameronbrooks11/bread-crumbs-contracts @ ^0.2.0Controller source:
#include <bread/bread_ops.h>This repo includes interactive Linux controller examples for slice testing:
examples/controller_discovery(auto-discovery + compatibility/caps probing)examples/controller_manual(fixed address map from config + capability gating)
Build example:
cd examples/controller_discovery
mkdir -p build && cd build
cmake ..
make
./controller_discovery /dev/i2c-1Default CMake assumes CRUMBS repo exists at sibling path ../CRUMBS from this repo root.
Override with -DCRUMBS_PATH=/path/to/CRUMBS if needed.
Add this repo as a source dependency, then include canonical headers:
#include <bread/bread_ops.h>Ensure CRUMBS headers are also on include path, since contract headers depend on:
crumbs.hcrumbs_message_helpers.hcrumbs_version.h
docs/overview.mddocs/contract-model.mddocs/capabilities.mddocs/controller-compatibility.mddocs/type-ids.mddocs/protocol-versioning.md
include/bread/
bread_ops.h
bread_caps.h
bread_version_helpers.h
dcmt_ops.h
rlht_ops.h
docs/
overview.md
contract-model.md
capabilities.md
controller-compatibility.md
type-ids.md
protocol-versioning.md
examples/
controller_discovery/
controller_manual/
tests/compile_smoke/
smoke.c