pub struct FrameSync<'a> { /* private fields */ }Expand description
A frame synchronizer that searches for ASM patterns in a byte stream to locate frame boundaries.
This implements a simple byte-aligned ASM search suitable for simulation. A real receiver would do bit-level correlation with an allowable bit-error threshold.
Implementations§
Source§impl<'a> FrameSync<'a>
impl<'a> FrameSync<'a>
Sourcepub fn new(asm: &'a [u8], frame_len: usize) -> Self
pub fn new(asm: &'a [u8], frame_len: usize) -> Self
Creates a new frame synchronizer.
asm: the sync marker pattern to search forframe_len: expected frame length excluding the ASM
Sourcepub fn find_frame<'b>(&self, data: &'b [u8]) -> Option<(usize, &'b [u8])>
pub fn find_frame<'b>(&self, data: &'b [u8]) -> Option<(usize, &'b [u8])>
Searches data for the next ASM-aligned frame.
Returns Some((offset, frame)) where offset is the byte
position of the ASM in data and frame is the frame
payload (after the ASM). Returns None if no complete frame
is found.
Sourcepub fn find_all_frames<'b>(&'b self, data: &'b [u8]) -> FrameIter<'b> ⓘ
pub fn find_all_frames<'b>(&'b self, data: &'b [u8]) -> FrameIter<'b> ⓘ
Finds all ASM-aligned frames in data.
Returns an iterator of (offset, frame_slice) pairs.
Frames may overlap if the data contains spurious ASM
matches; callers should validate frame contents.
Auto Trait Implementations§
impl<'a> Freeze for FrameSync<'a>
impl<'a> RefUnwindSafe for FrameSync<'a>
impl<'a> Send for FrameSync<'a>
impl<'a> Sync for FrameSync<'a>
impl<'a> Unpin for FrameSync<'a>
impl<'a> UnsafeUnpin for FrameSync<'a>
impl<'a> UnwindSafe for FrameSync<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more