pamoja

Reference

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:

cargo add pamoja --features field-io
Sensing and actuation

Sensor drivers, Actuator drivers

cargo add pamoja --features sensing
cargo add pamoja --features radio
cargo add pamoja --features trust
cargo add pamoja --features transports
Profiles and robotics

Device profiles, ROS 2 rules, Zenoh keys

cargo add pamoja --features profiles

Naming 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#

Engine surfacepamoja-core

The transport every link shares (send, receive, subscribe, and a faulty wrapper for tests) and the runtime version

cargo add pamoja-core

Identity#

Device identitypamoja-security

ed25519 device identity: sign a reading and verify it, so a gateway can prove it is authentic

cargo add pamoja-security

Codecs#

Codecspamoja-codec

CBOR, JSON, and raw codecs behind one trait, delta and varint batch packing, and an f32 quantizer for metered links

cargo add pamoja-codec

Helpers#

Helperspamoja-kit

Plain-language helper math: smoothing, calibration, PID and thermostat control, trend and surge prediction, rolling windows, kinematics, and geo

cargo add pamoja-kit

Field I/O#

Serial framingpamoja-serial

SLIP and COBS byte stuffing with streaming decoders, so a UART byte stream carries discrete packets

cargo add pamoja-serial
Modbus RTUpamoja-modbus

Modbus RTU requests and replies with CRC-16/MODBUS for RS485 field devices

cargo add pamoja-modbus
CAN and J1939pamoja-can

CAN 2.0 and CAN-FD frames with 11- and 29-bit identifiers, plus J1939 decode and compose

cargo add pamoja-can
I2C, SPI, and GPIOpamoja-gpio

I2C address frames with reserved-range checks, the four SPI clock modes, and active-high or active-low pins

cargo add pamoja-gpio

Sensing and actuation#

Sensor driverspamoja-sensors

Datasheet-anchored decoders for eleven parts: the BME280, BMP280, DS18B20, HDC1080, INA219, INA226, ADS1115, OPT3001, SCD4x, SHT3x, and TMP117

cargo add pamoja-sensors
Actuator driverspamoja-actuators

PCA9685 PWM and servo pulses, and stepper coil sequencing

cargo add pamoja-actuators

Radio and reach#

LoRa airtimepamoja-lora

Time-on-air, duty-cycle off-time, and the regional channel plans a LoRa node must keep to

cargo add pamoja-lora
LoRaWANpamoja-lorawan

LoRaWAN 1.0.x MAC framing, AES-CMAC and AES encryption, and both halves of the OTAA join

cargo add pamoja-lorawan
Mesh framespamoja-mesh

Addressed, hop-limited, CRC-checked frames and duplicate suppression that floods a packet exactly once

cargo add pamoja-mesh
Routingpamoja-routing

Reverse-path routing that learns the cheapest route from overheard traffic

cargo add pamoja-routing

Trust and operation#

Audit logpamoja-audit

A tamper-evident, hash-chained log; altering, reordering, or dropping a record breaks verification

cargo add pamoja-audit
Secured sessionpamoja-session

X25519 key agreement, HKDF, and ChaCha20-Poly1305 with an anti-replay window, with no TLS stack

cargo add pamoja-session
Signed updatespamoja-update

Signed firmware manifests, streaming image verification, and A/B slots that fall back on their own

cargo add pamoja-update
Powerpamoja-power

Duty cycling and an energy-aware governor that stretches work as the battery drains

cargo add pamoja-power
Telemetrypamoja-telemetry

Observability that ships only what is worth the bytes as link cost rises, while counting everything

cargo add pamoja-telemetry

Transports and testing#

MQTTpamoja-mqtt

An MQTT client with the topic and wildcard rules, as the core transport

cargo add pamoja-mqtt
CoAPpamoja-coap

A CoAP client over UDP with confirmable delivery and observe

cargo add pamoja-coap
Loopbackpamoja-loopback

An in-process transport with topic matching and a fault injector, for testing with no broker

cargo add pamoja-loopback
Store and forwardpamoja-sync

Offline-first queues: in memory, and a crash-safe on-disk queue that survives power loss

cargo add pamoja-sync
Transport ladderpamoja-ladder

Cheapest reachable link first, buffering to a store when every link is down

cargo add pamoja-ladder
Event buspamoja-bus

An in-memory typed publish and subscribe event bus

cargo add pamoja-bus
Simulatorspamoja-sim

Noisy and replay sensors, a recording actuator, and a simulated robot that dead-reckons its pose

cargo add pamoja-sim

Profiles and robotics#

Device profilespamoja-profile

Named, ready-to-run device profiles from plain data or a JSON manifest

cargo add pamoja-profile
ROS 2 rulespamoja-ros2

ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed

cargo add pamoja-ros2
Zenoh keyspamoja-zenoh

Zenoh key expressions: validity, canonical form, and wildcard matching

cargo add pamoja-zenoh

The 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.

ChapterCrateWhat it does
EverythingpamojaThe whole pamoja device SDK in one crate: every capability behind a feature, all on by default, for IoT, robotics, and drones.
Enginepamoja-coreCore engine for the pamoja device SDK: device model, transport, event bus, and error types.
pamoja-ffiCurated C ABI surface over the pamoja device SDK, for C, C++, and .NET.
pamoja-dashboardLocal-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.

Edit this page on GitHub