Struct Decoder

Source
pub struct Decoder { /* private fields */ }
Expand description

Decode a Manchester encoded stream of periodically taken samples into a datagram.

Implementations§

Source§

impl Decoder

Source

pub const fn new( activity_level: ActivityLevel, sync_on_turning_edge: SyncOnTurningEdge, bit_order: BitOrder, ) -> Self

Create an instance of a new manchester encoder

§Arguments
  • activity_level - Low and High indicate what the activity level is the negation of the activity level is the inactivity level where no datagram is transmitted.
  • sync_on_turning_edge - Indication if on the First or the Second edge bits are aligned.
  • bit_order - Either BigEndian (MSP is received first) or LittleEndian (LSB is received first) In combination of activity_level and sync_on_turning_edge it is determined what if the first bit is either zero or one
Activity levelSync on turning edgeResulting first bit datagram
HighFirstZero
HighSecondOne
LowFirstOne
LowSecondZero
Source

pub fn next(&mut self, sample: bool) -> Option<Datagram>

Sample a manchester modulated signal periodically and extract datagrams

To cover some jitter the sampling rate is three times the half bit frequency i.e. an Infrared manchester decoded bit lasts 2x 889 us), Thus sampling period should be 296 us.

Note: three times the bit frequency is good enough to consider the Nyquist criterion and some potential jitter in sending frequency.

§Arguments
  • sample - the level of the pin true equals high, false equals low
§Returns

Option of an infrared datagram

  • None - if no complete datagram is received
  • Some(datagram) - a completely received datagram

Auto Trait Implementations§

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