Struct manchester_code::Decoder
source · [−]pub struct Decoder { /* private fields */ }Expand description
Decode a Manchester encoded stream of periodically taken samples into a datagram.
Implementations
sourceimpl Decoder
impl Decoder
sourcepub const fn new(
inactivity_level: InactivityLevel,
first_bit_expectation: FirstBitExpectation,
bit_order: BitOrder
) -> Self
pub const fn new(
inactivity_level: InactivityLevel,
first_bit_expectation: FirstBitExpectation,
bit_order: BitOrder
) -> Self
Create an instance of a new manchester encoder
Arguments
high_inactivity- A true value expects the input pin state high when nothing is receivedfirst_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 startsbit_order- Either BigEndian (MSP is received first) or LittleEndian (LSB is received first)
sourcepub fn next(&mut self, sample: bool) -> Option<Datagram>
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
impl RefUnwindSafe for Decoder
impl Send for Decoder
impl Sync for Decoder
impl Unpin for Decoder
impl UnwindSafe for Decoder
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more