conduyt 0.2.1

CONDUYT protocol SDK for Rust — host-side hardware control
Documentation

conduyt

crates.io

CONDUYT protocol SDK for Rust. no_std core with optional std device client.

Install

[dependencies]
conduyt = "0.1"

For no_std (core wire/cobs/crc only):

[dependencies]
conduyt = { version = "0.1", default-features = false }

Quick Start

use conduyt::device::Device;
use conduyt::transports::MockTransport;
use conduyt::constants::*;

let transport = MockTransport::new();
let mut device = Device::new(transport);
let hello = device.connect()?;

device.pin_mode(13, PIN_MODE_OUTPUT)?;
device.pin_write(13, 1)?;
let value = device.pin_read(0)?;
println!("Pin 0: {}", value);

device.close()?;

Core Only (no_std)

use conduyt::wire::{wire_encode, wire_decode};
use conduyt::crc8::crc8;
use conduyt::cobs::{cobs_encode, cobs_decode};

let encoded = wire_encode(CMD_PING, 0, &[]);
let packet = wire_decode(&encoded)?;

API Reference

Device<T: Transport>

Method Returns Description
Device::new(transport) Device<T> Create device instance
connect() Result<Vec<u8>> Connect and HELLO handshake
close() Result<()> Close connection
ping() Result<()> Ping/pong roundtrip
reset() Result<()> Reset device state
pin_mode(pin, mode) Result<()> Set pin mode
pin_write(pin, value) Result<()> Digital/PWM write
pin_read(pin) Result<u16> Read pin value
mod_cmd(payload) Result<Vec<u8>> Send raw module command

DeviceError

Variant When
Transport(E) Transport-level failure
Nak Device rejected a command
Timeout No response within timeout
WireError Packet decode failure
NotConnected Command sent before connect

Core (no_std)

Function Module Description
wire_encode conduyt::wire Encode packet to bytes
wire_decode conduyt::wire Decode bytes to packet
crc8 conduyt::crc8 CRC8 checksum
cobs_encode conduyt::cobs COBS encode
cobs_decode conduyt::cobs COBS decode

Features

Feature Default Description
std Yes Device client, transports, modules

Requirements

  • Rust 2021 edition
  • no_std compatible (without std feature)

License

MIT. Copyright (c) 2026 LumenCanvas.