- [jacdac-rs](#jacdac-rs)
- [Introduction](#introduction)
- [What is jacdac ?](#what-is-jacdac-)
- [What is jacdac-rs](#what-is-jacdac-rs)
- [Requirements](#requirements)
- [Features](#features)
- [Available](#available)
- [Transport](#transport)
- [Service](#service)
- [Planned](#planned)
- [Transport](#transport-1)
- [Service](#service-1)
- [General](#general)
# 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/](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](https://crates.io/crates/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
- [x] Decode jacdac frame from buffer (`&[u8]`)
- [x] Decode jacdac packet from buffer (`&[u8]`)
#### Service
- [x] 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
- [ ] Register all the current available service from [jacdac services](https://microsoft.github.io/jacdac-docs/services/)
#### General
- [ ] Add examples