Rust reference#
Every crate, generated by rustdoc from this commit. Each row below opens a crate's API pages, and the same capability in the other three languages is one step away.
The same documentation for each published version is on docs.rs. Each crate's README, on crates.io and in the repository, is its overview and getting-started page, generated from the same rustdoc.
By domain#
The pamoja crate is every capability crate behind a feature each, all on by
default; pamoja::mqtt is pamoja-mqtt, with the same types and documentation.
Six of its features name a domain instead of a single capability, one per chapter
that holds more than one:
Serial framing, Modbus RTU, CAN and J1939, I2C, SPI, and GPIO
cargo add pamoja --features field-iocargo add pamoja --features sensingcargo add pamoja --features radioAudit log, Secured session, Signed updates, Power, Telemetry
cargo add pamoja --features trustMQTT, CoAP, Loopback, Store and forward, Transport ladder, Event bus, Engine surface, Simulators
cargo add pamoja --features transportscargo add pamoja --features profilesNaming features is what makes a Rust build small, and the install page measures how small per feature set.
Every capability#
One row per capability: the crate to add, its reference here and on docs.rs, the guide with the worked example, and the same capability on the other three reference pages, one step away.
Engine#
pamoja-coreThe transport every link shares (send, receive, subscribe, and a faulty wrapper for tests) and the runtime version
cargo add pamoja-coreIdentity#
pamoja-securityed25519 device identity: sign a reading and verify it, so a gateway can prove it is authentic
cargo add pamoja-securityCodecs#
pamoja-codecCBOR, JSON, and raw codecs behind one trait, delta and varint batch packing, and an f32 quantizer for metered links
cargo add pamoja-codecHelpers#
pamoja-kitPlain-language helper math: smoothing, calibration, PID and thermostat control, trend and surge prediction, rolling windows, kinematics, and geo
cargo add pamoja-kitField I/O#
pamoja-serialSLIP and COBS byte stuffing with streaming decoders, so a UART byte stream carries discrete packets
cargo add pamoja-serialcargo add pamoja-modbuspamoja-canCAN 2.0 and CAN-FD frames with 11- and 29-bit identifiers, plus J1939 decode and compose
cargo add pamoja-canpamoja-gpioI2C address frames with reserved-range checks, the four SPI clock modes, and active-high or active-low pins
cargo add pamoja-gpioSensing and actuation#
pamoja-sensorsDatasheet-anchored decoders for eleven parts: the BME280, BMP280, DS18B20, HDC1080, INA219, INA226, ADS1115, OPT3001, SCD4x, SHT3x, and TMP117
cargo add pamoja-sensorscargo add pamoja-actuatorsRadio and reach#
pamoja-loraTime-on-air, duty-cycle off-time, and the regional channel plans a LoRa node must keep to
cargo add pamoja-lorapamoja-lorawanLoRaWAN 1.0.x MAC framing, AES-CMAC and AES encryption, and both halves of the OTAA join
cargo add pamoja-lorawanpamoja-meshAddressed, hop-limited, CRC-checked frames and duplicate suppression that floods a packet exactly once
cargo add pamoja-meshcargo add pamoja-routingMAVLink#
pamoja-mavlinkMAVLink v1 and v2 framing, signing, named message fields, and the mission, command, and offboard protocols
cargo add pamoja-mavlinkTrust and operation#
pamoja-auditA tamper-evident, hash-chained log; altering, reordering, or dropping a record breaks verification
cargo add pamoja-auditpamoja-sessionX25519 key agreement, HKDF, and ChaCha20-Poly1305 with an anti-replay window, with no TLS stack
cargo add pamoja-sessionpamoja-updateSigned firmware manifests, streaming image verification, and A/B slots that fall back on their own
cargo add pamoja-updatepamoja-powerDuty cycling and an energy-aware governor that stretches work as the battery drains
cargo add pamoja-powerpamoja-telemetryObservability that ships only what is worth the bytes as link cost rises, while counting everything
cargo add pamoja-telemetryTransports and testing#
cargo add pamoja-mqttcargo add pamoja-coappamoja-loopbackAn in-process transport with topic matching and a fault injector, for testing with no broker
cargo add pamoja-loopbackpamoja-syncOffline-first queues: in memory, and a crash-safe on-disk queue that survives power loss
cargo add pamoja-syncpamoja-ladderCheapest reachable link first, buffering to a store when every link is down
cargo add pamoja-laddercargo add pamoja-buspamoja-simNoisy and replay sensors, a recording actuator, and a simulated robot that dead-reckons its pose
cargo add pamoja-simProfiles and robotics#
cargo add pamoja-profilepamoja-ros2ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed
cargo add pamoja-ros2cargo add pamoja-zenohThe engine and the bundle#
The engine crates define the traits (Transport, Device, Sensor, Actuator,
Store, the event bus) that every capability crate implements, the C ABI the
.NET binding rides on, and the fleet dashboard. The bundle is every capability
above behind a feature each.
| Chapter | Crate | What it does |
|---|---|---|
| Everything | pamoja | The whole pamoja device SDK in one crate: every capability behind a feature, all on by default, for IoT, robotics, and drones. |
| Engine | pamoja-core | Core engine for the pamoja device SDK: device model, transport, event bus, and error types. |
pamoja-ffi | Curated C ABI surface over the pamoja device SDK, for C, C++, and .NET. | |
pamoja-dashboard | Local-first device dashboard for pamoja: a node serves a hand-built, localized web UI over its own hotspot from a language-neutral state snapshot, fully offline. |