Skip to main content

FrameSync

Struct FrameSync 

Source
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>

Source

pub fn new(asm: &'a [u8], frame_len: usize) -> Self

Creates a new frame synchronizer.

  • asm: the sync marker pattern to search for
  • frame_len: expected frame length excluding the ASM
Source

pub fn cadu_len(&self) -> usize

Returns the total CADU length (ASM + frame).

Source

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.

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.