slipmux

Crates.ioslipmux
lib.rsslipmux
version0.3.2
created_at2025-04-04 15:45:13.748845+00
updated_at2025-07-18 10:37:22.833012+00
descriptionSlipmux de- and encoding
homepagehttps://github.com/teufelchen1/slipmux
repositoryhttps://github.com/teufelchen1/slipmux
max_upload_size
id1620237
size80,521
Teufelchen (Teufelchen1)

documentation

README

Clippy & co Crates.io Documentation

Slipmux: Using an UART interface for diagnostics, configuration, and packet transfer

Pure Rust implementation of draft-bormann-t2trg-slipmux-03.

What is Slipmux

Slipmux is a very simple framing and multiplexing protocol. It uses RFC1055, commonly known as serial line ip (slip), as a basis for encoding / decoding data streams into frames but extends it with multiplexing. Slipmux defines three frame types: traditional IP packets, diagnostic frames and configuration messages. Diagnostic frames are UTF-8 encoded strings intended as human-readable messages. Configuration messages are serialized CoAP messages.

Usage

Add slipmux to the dependencies in your Cargo.toml. This crate requires std by default via the std feature. You can disable this by adding default-features = false to the entry, which will make this crate no_std compatible.

Check docs.rs for examples and documentation on the programming API. For even more examples, take a look at the unittests on the bottom of src/framehandler.rs.

Todo

  • Remove coap-lite dep
  • Don't leak types of the serial-line-ip-rs crate
  • Provide tests for IP packets
  • Implement FCS check sum for configuration frame
  • Implement frame abort
    • Encoder (this crate does not take control over the transmission, it has no way of aborting)
    • Decoder
  • Make crate optional #[no_std]
  • Rethink public interfaces (generalise the usability):
    • Currently wild mix of [u8] and Vec<u8>
    • Impossible to know if the deocder is completely done or if bytes remain in its buffer
    • Error handling is tedious
  • Interoperability tests with other slipmux implementations
  • Polishing, QoL improvments, incorporating feedback from experienced crate publishern

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 27

cargo fmt