Skip to content
/ ucpack Public

Rust implementation of the ucPack serialization format used in the Arduino Alvik

License

Notifications You must be signed in to change notification settings

BRA1L0R/ucpack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ucpack docs.rs

Rust implementation of the ucpack serialization format used in the Arduino Alvik using serde.

This crate does not implement the body API itself, but rather the binary protocol and format it uses to encode its messages.

The crate

This crate exposes a struct called UcPack which you can initialize to start encoding and decoding serde compatible data types and structures.

Warning

Not every type is compatible with ucpack. Namely any integer above 16 bits, lists and maps.

You can also const initialize UcPack and use it const-ly from anywhere if carrying state isn't an option:

const packer: UcPack = UcPack::new(b'A', b'#');

fn main() {
    packer.serialize_slice(...); // ecc..
}

The protocol

NOTE: Table gently borrowed from ucpack's c++ repo

A packet is managed as:

index_byte message length message stop_byte crc8
1 byte (default A) 1 byte N bytes from message length 1 byte (default #) 1 byte

This crate, opposed to the c++ and micropython respectives, is agnostic across the message content (referred to by the name payload in this crate).

About

Rust implementation of the ucPack serialization format used in the Arduino Alvik

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages