Crate cobs

Source
Expand description

§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.

Structs§

CobsDecoder
The CobsDecoder type is used to decode a stream of bytes to a given mutable output slice. This is often useful when heap data structures are not available, or when not all message bytes are received at a single point in time.
CobsEncoder
The CobsEncoder type is used to encode a stream of bytes to a given mutable output slice. This is often useful when heap data structures are not available, or when not all message bytes are received at a single point in time.
DecodeReport
A report of the source and destination bytes used during in-place decoding
DestBufTooSmallError
EncoderState
The EncoderState is used to track the current state of a streaming encoder. This struct does not contain the output buffer (or a reference to one), and can be used when streaming the encoded output to a custom data type

Enums§

DecodeError
DecodeResult
DecodeResult represents the possible non-error outcomes of pushing an encoded data byte into the DecoderState state machine
DecoderState
The DecoderState is used to track the current state of a streaming decoder. This struct does not contain the output buffer (or a reference to one), and can be used when streaming the decoded output to a custom data type.
PushResult
PushResult is used to represent the changes to an (encoded) output data buffer when an unencoded byte is pushed into EncoderState.

Functions§

decode
Decodes the source buffer into the dest buffer.
decode_in_place
Decodes a message in-place.
decode_in_place_report
Decodes a message in-place.
decode_in_place_with_sentinel
Decodes a message in-place using an arbitrary sentinel value.
decode_vecalloc
Decodes the source buffer into a vector.
decode_vec_with_sentinelalloc
Decodes the source buffer into a vector with an arbitrary sentinel value.
decode_with_sentinel
Decodes the source buffer into the dest buffer using an arbitrary sentinel value.
encode
Encodes the source buffer into the dest buffer.
encode_vecalloc
Encodes the source buffer into a vector, using the encode function.
encode_vec_with_sentinelalloc
Encodes the source buffer into a vector with an arbitrary sentinel value, using the encode_with_sentinel function.
encode_with_sentinel
Encodes the source buffer into the dest buffer using an arbitrary sentinel value.
max_encoding_length
Calculates the maximum possible size of an encoded message given the length of the source message. This may be useful for calculating how large the dest buffer needs to be in the encoding functions.
max_encoding_overhead
Calculates the maximum overhead when encoding a message with the given length. The overhead is a maximum of [n/254] bytes (one in 254 bytes) rounded up.
try_encode
Attempts to encode the source buffer into the dest buffer.