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

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

Implementations

Create an instance of a new manchester encoder

Arguments
  • high_inactivity - A true value expects the input pin state high when nothing is received
  • first_bit_is_one - A *true value enforces the bit recording to start with a “1”. This is important to know upfront where a new bit starts
  • bit_order - Either BigEndian (MSP is received first) or LittleEndian (LSB is received first)

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

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.