embassy-rp

Crates

git

Versions

rp235xb

Flavors

Skip to main content

BufferedUart

Struct BufferedUart 

Source
pub struct BufferedUart<'d> { /* private fields */ }
Expand description

Buffered UART driver.

Implementations§

Source§

impl<'d> BufferedUart<'d>

Source

pub fn new<T: Instance>( _uart: Peri<'d, T>, tx: Peri<'d, impl TxPin<T>>, rx: Peri<'d, impl RxPin<T>>, _irq: impl Binding<T::Interrupt, BufferedInterruptHandler<T>>, tx_buffer: &'d mut [u8], rx_buffer: &'d mut [u8], config: Config, ) -> Self

Create a buffered UART instance.

Source

pub fn new_with_rtscts<T: Instance>( _uart: Peri<'d, T>, tx: Peri<'d, impl TxPin<T>>, rx: Peri<'d, impl RxPin<T>>, rts: Peri<'d, impl RtsPin<T>>, cts: Peri<'d, impl CtsPin<T>>, _irq: impl Binding<T::Interrupt, BufferedInterruptHandler<T>>, tx_buffer: &'d mut [u8], rx_buffer: &'d mut [u8], config: Config, ) -> Self

Create a buffered UART instance with flow control.

Source

pub async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>

Read from UART RX buffer.

Waits until at least one byte is available, then reads as many bytes as are available (up to buf.len()) and returns the number of bytes read.

Source

pub async fn fill_buf(&mut self) -> Result<&[u8], Error>

Wait until data is available in the RX buffer, and return a slice to it.

Call consume afterwards to mark bytes as read.

Source

pub fn consume(&mut self, amt: usize)

Mark amt bytes returned by fill_buf as read.

Source

pub fn read_ready(&mut self) -> Result<bool, Error>

Check whether data is available in the RX buffer, i.e. whether a read would not block.

Source

pub async fn write(&mut self, buf: &[u8]) -> Result<usize, Error>

Write to UART TX buffer.

Waits until there is space in the TX buffer, then writes as many bytes as fit (up to buf.len()) and returns the number of bytes written.

Source

pub async fn flush(&mut self) -> Result<(), Error>

Wait until all written bytes have been fully transmitted on the wire.

Source

pub fn blocking_write(&mut self, buffer: &[u8]) -> Result<usize, Error>

Write to UART TX buffer blocking execution until done.

Source

pub fn blocking_flush(&mut self) -> Result<(), Error>

Flush UART TX blocking execution until done.

Source

pub fn blocking_read(&mut self, buffer: &mut [u8]) -> Result<usize, Error>

Read from UART RX buffer blocking execution until done.

Source

pub fn busy(&self) -> bool

Check if UART is busy transmitting.

Source

pub async fn send_break(&mut self, bits: u32)

Wait until TX is empty and send break condition.

Source

pub fn set_baudrate(&mut self, baudrate: u32)

sets baudrate on runtime

Source

pub fn set_config(&mut self, config: Config)

Set the configuration at runtime (ignores pin inversions)

Source

pub fn split(self) -> (BufferedUartTx<'d>, BufferedUartRx<'d>)

Split into separate RX and TX handles.

Source

pub fn split_ref(&mut self) -> (BufferedUartTx<'_>, BufferedUartRx<'_>)

Split the Uart into a transmitter and receiver by mutable reference, which is particularly useful when having two tasks correlating to transmitting and receiving.

Trait Implementations§

Source§

impl<'d> BufRead for BufferedUart<'d>

Source§

async fn fill_buf(&mut self) -> Result<&[u8], Self::Error>

Return the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Source§

fn consume(&mut self, amt: usize)

Tell this buffer that amt bytes have been consumed from the buffer, so they should no longer be returned in calls to fill_buf.
Source§

impl<'d> ErrorType for BufferedUart<'d>

Source§

type Error = Error

Error type of all the IO operations on this type.
Source§

impl<'d> Read for BufferedUart<'d>

Source§

async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error>

Read some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Source§

async fn read_exact( &mut self, buf: &mut [u8], ) -> Result<(), ReadExactError<Self::Error>>

Read the exact number of bytes required to fill buf. Read more
Source§

impl<'d> Read for BufferedUart<'d>

Source§

fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error>

Read some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Source§

fn read_exact( &mut self, buf: &mut [u8], ) -> Result<(), ReadExactError<Self::Error>>

Read the exact number of bytes required to fill buf. Read more
Source§

impl<'d> ReadReady for BufferedUart<'d>

Source§

fn read_ready(&mut self) -> Result<bool, Self::Error>

Get whether the reader is ready for immediately reading. Read more
Source§

impl<'d> Write for BufferedUart<'d>

Source§

async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error>

Write a buffer into this writer, returning how many bytes were written. Read more
Source§

async fn flush(&mut self) -> Result<(), Self::Error>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination.
Source§

async fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error>

Write an entire buffer into this writer. Read more
Source§

impl<'d> Write for BufferedUart<'d>

Source§

fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error>

Write a buffer into this writer, returning how many bytes were written. Read more
Source§

fn flush(&mut self) -> Result<(), Self::Error>

Flush this output stream, blocking until all intermediately buffered contents reach their destination.
Source§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error>

Write an entire buffer into this writer. Read more
Source§

fn write_fmt( &mut self, fmt: Arguments<'_>, ) -> Result<(), WriteFmtError<Self::Error>>

Write a formatted string into this writer, returning any error encountered. Read more
Source§

impl<'d> Write<u8> for BufferedUart<'d>

Source§

type Error = Error

The type of error that can occur when writing
Source§

fn bwrite_all(&mut self, buffer: &[u8]) -> Result<(), Self::Error>

Writes a slice, blocking until everything has been written Read more
Source§

fn bflush(&mut self) -> Result<(), Self::Error>

Block until the serial interface has sent all buffered words

Auto Trait Implementations§

§

impl<'d> !RefUnwindSafe for BufferedUart<'d>

§

impl<'d> !UnwindSafe for BufferedUart<'d>

§

impl<'d> Freeze for BufferedUart<'d>

§

impl<'d> Send for BufferedUart<'d>

§

impl<'d> Sync for BufferedUart<'d>

§

impl<'d> Unpin for BufferedUart<'d>

§

impl<'d> UnsafeUnpin for BufferedUart<'d>

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> StrictAs for T

Source§

fn strict_as<Dst>(self) -> Dst
where T: StrictCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> StrictCastFrom<Src> for Dst
where Src: StrictCast<Dst>,

Source§

fn strict_cast_from(src: Src) -> Dst

Casts the value.
Source§

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

Source§

type Error = !

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

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.