#aim #service #microsoft #devices #embedded #transport #jacdac

jacdac-rs

jacdac-rs is a library written entirely in Rust, with the aim of providing jacdac support for embedded development

1 unstable release

0.1.0 Oct 25, 2024

#304 in Hardware support

Download history 65/week @ 2024-10-19 49/week @ 2024-10-26 8/week @ 2024-11-02 1/week @ 2024-11-09

123 downloads per month
Used in steami-rs

GPL-3.0-or-later

25KB
565 lines

jacdac-rs

Introduction

What is jacdac ?

Jacdac is an integrated hardware and software stack that makes it easier to connect programmable microcontrollers, sensors, actuators, and peripherals together in a client/server architecture. It also provides a bridge from the embedded world to the web browser and beyond. Key features of Jacdac are:

  • a dedicated 3-wire cable and connector
  • a true bus topology
  • service advertisement and dynamic device discovery
  • a standardized service abstraction
  • a full stack that supports platforms from 8-bit MCUs to web development.

In addition to the functionality provided by common networking stacks, the Jacdac protocol specifies electrical and mechanical requirements that improve interoperability at the hardware level.

jacdac Specification https://microsoft.github.io/jacdac-docs/reference/

What is jacdac-rs

jacdac-rs is a library written entirely in Rust, with the aim of providing jacdac support for embedded development.

The library will be embedded-hal dependent where necessary, to ensure maximum interoperability.

jacdac-rs is in the early stages of development, and the api is subject to major changes between versions.

Requirements

This crate need an allocator, due to alloc::vec usage.

Features

Available

Transport

  • Decode jacdac frame from buffer (&[u8])
  • Decode jacdac packet from buffer (&[u8])

Service

  • Decode transport packet to service packet

Planned

Transport

  • Decode jacdac frame from Reader
  • Decode jacdac packetg from Reader
  • Encode jacdac frame to buffer
  • Encode jacdac frame to Writer

Service

General

  • Add examples

Dependencies

~230KB