#serial-communication #communication-channel #byte #overhead #consistent #stuffing #encoding

no-std cobs

This is an implementation of the Consistent Overhead Byte Stuffing (COBS) algorithm. COBS is an algorithm for transforming a message into an encoding where a specific value (the "sentinel" value) is not used. This value can then be used to mark frame boundaries in a serial communication channel.

9 releases

0.3.0 Jan 31, 2025
0.2.3 Jun 14, 2022
0.1.4 Apr 2, 2019
0.1.3 Dec 21, 2017
0.1.1 Aug 5, 2015

#80 in Algorithms

Download history 121490/week @ 2024-10-30 116043/week @ 2024-11-06 114045/week @ 2024-11-13 122048/week @ 2024-11-20 113237/week @ 2024-11-27 129929/week @ 2024-12-04 135212/week @ 2024-12-11 118483/week @ 2024-12-18 60149/week @ 2024-12-25 95492/week @ 2025-01-01 139876/week @ 2025-01-08 133749/week @ 2025-01-15 143152/week @ 2025-01-22 140312/week @ 2025-01-29 173798/week @ 2025-02-05 121857/week @ 2025-02-12

603,980 downloads per month
Used in 707 crates (14 directly)

MIT/Apache

34KB
443 lines

cobs

This is an implementation of the Consistent Overhead Byte Stuffing (COBS) algorithm in Rust.

COBS is an algorithm for transforming a message into an encoding where a specific value (the "sentinel" value) is not used. This value can then be used to mark frame boundaries in a serial communication channel.

See the wikipedia article for details.

Features

cobs supports various runtime environments and is also suitable for no_std environments.

Default features

  • std: Enables functionality relying on the standard library and also activates the alloc feature. Currently only adds std::error::Error support for the library error types.
  • alloc: Enables features which operate on containers like alloc::vec::Vec. Enabled by the std feature.

Optional features

  • defmt: Adds defmt::Format derives on some data structures and error types.
  • serde: Adds serde derives on some data structures and error types.

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.

Dependencies

~235–790KB
~18K SLoC