pub struct CobsDecoderHeapless<const N: usize> { /* private fields */ }Expand description
The CobsDecoderHeapless type is used to decode a stream of bytes to a given mutable output
slice. It owns the heapless decoding buffer.
This structure uses a heapless vector as the decoding buffer to avoid lifetimes.
Implementations§
Source§impl<const N: usize> CobsDecoderHeapless<N>
impl<const N: usize> CobsDecoderHeapless<N>
Sourcepub fn new_with_vec(vec: Vec<u8, N>) -> Self
pub fn new_with_vec(vec: Vec<u8, N>) -> Self
This constructor allows passing the heapless vector to use.
This can be useful to place the heapless vector into the static BSS section instead of the stack.
Sourcepub fn feed(&mut self, data: u8) -> Result<Option<usize>, DecodeError>
pub fn feed(&mut self, data: u8) -> Result<Option<usize>, DecodeError>
Feed a single byte into the streaming decoder. Return values mean:
- Ok(None) - State machine okay, more data needed
- Ok(Some(N)) - A message of N bytes was successfully decoded
- Err(DecodeError) - Message decoding failed
NOTE: Sentinel value must be included in the input to this function for the decoding to complete
Sourcepub fn push(&mut self, data: &[u8]) -> Result<Option<DecodeReport>, DecodeError>
pub fn push(&mut self, data: &[u8]) -> Result<Option<DecodeReport>, DecodeError>
Push a slice of bytes into the streaming CobsDecoder. Return values mean:
- Ok(None) - State machine okay, more data needed
- Ok(Some(DecodeReport))) - A message was successfully decoded. The parse size of the report specifies the consumed bytes of the passed data chunk.
- Err(DecodeError) - Message decoding failed
If the decoder is used for continuous decoding, the user must take care of feeding any undecoded bytes of the input data back into the decoder. This can be done by Self::pushing the undecoded bytes (the last X bytes of the input with X being the length of the input minus the parsed length) into the decoder after a frame was decoded.
NOTE: Sentinel value must be included in the input to this function for the decoding to complete