Struct UartRxMonitoringDecoder

Source
pub struct UartRxMonitoringDecoder {
    pub decoder: UartBitbangDecoder,
    /* private fields */
}
Expand description

A wrapper for the UartBitbangDecoder which converts the waveform returned by the GpioMonitoring interface into the uniform discrete samples that are understood by the decoder. This performs uniform sampling according to the baud rate from the initial response and the edges provided by monitor reads, optimized to avoid sampling whilst the UART is idle.

Fields§

§decoder: UartBitbangDecoder

Implementations§

Source§

impl UartRxMonitoringDecoder

Source

pub fn new( decoder: UartBitbangDecoder, clock_nature: ClockNature, start: MonitoringStartResponse, ) -> Result<Self>

Source

pub fn decode_response( &mut self, response: MonitoringReadResponse, signal_index: u8, baud_rate: u32, ) -> Result<Vec<u8>>

Decode a MonitoringReadResponse from the GpioMonitoring interface, performing uniform sampling and decoding the sampled UART output. signal_index specifies the MonitoringReadResponse signal corresponding to the UART RX pin (normally 0).

Expects at least a UART frame time of idle since the initial timestamp before it will start sampling (any malformed data is dropped).

Note: it is expected that all monitor responses since monitoring initialization are fed to the decoder through this function. If any monitoring events are lost, this could cause the corruption of some received UART data.

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V