opentitanlib::io::uart

Trait Uart

Source
pub trait Uart {
Show 13 methods // Required methods fn get_baudrate(&self) -> Result<u32>; fn set_baudrate(&self, baudrate: u32) -> Result<()>; fn poll_read( &self, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize>>; fn write(&self, buf: &[u8]) -> Result<()>; // Provided methods fn get_flow_control(&self) -> Result<FlowControl> { ... } fn set_flow_control(&self, flow_control: bool) -> Result<()> { ... } fn get_device_path(&self) -> Result<String> { ... } fn read(&self, buf: &mut [u8]) -> Result<usize> { ... } fn read_timeout(&self, buf: &mut [u8], timeout: Duration) -> Result<usize> { ... } fn clear_rx_buffer(&self) -> Result<()> { ... } fn set_break(&self, _enable: bool) -> Result<()> { ... } fn set_parity(&self, _parity: Parity) -> Result<()> { ... } fn get_parity(&self) -> Result<Parity> { ... }
}
Expand description

A trait which represents a UART.

Required Methods§

Source

fn get_baudrate(&self) -> Result<u32>

Returns the UART baudrate. May return zero for virtual UARTs.

Source

fn set_baudrate(&self, baudrate: u32) -> Result<()>

Sets the UART baudrate. May do nothing for virtual UARTs.

Source

fn poll_read(&self, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll<Result<usize>>

Reads UART receive data into buf, returning the number of bytes read.

If data is not yet ready, Poll::Pending will be returned and cx would be notified when it’s available. When this function is called with multiple wakers, all wakers should be notified instead of just the last one.

Source

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

Writes data from buf to the UART.

Provided Methods§

Source

fn get_flow_control(&self) -> Result<FlowControl>

Source

fn set_flow_control(&self, flow_control: bool) -> Result<()>

Enables software flow control for writes.

Source

fn get_device_path(&self) -> Result<String>

Returns "/dev/ttyUSBn" or similar OS device path usable by external programs for directly accessing the serial port.

Source

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

Reads UART receive data into buf, returning the number of bytes read. This function is blocking.

Source

fn read_timeout(&self, buf: &mut [u8], timeout: Duration) -> Result<usize>

Reads UART receive data into buf, returning the number of bytes read. The timeout may be used to specify a duration to wait for data. If timeout expires without any data arriving Ok(0) will be returned, never Err(_).

Source

fn clear_rx_buffer(&self) -> Result<()>

Clears the UART RX buffer.

Source

fn set_break(&self, _enable: bool) -> Result<()>

Source

fn set_parity(&self, _parity: Parity) -> Result<()>

Source

fn get_parity(&self) -> Result<Parity>

Trait Implementations§

Source§

impl<'a> ConsoleDevice for dyn Uart + 'a

Source§

fn console_poll_read( &self, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize>>

Reads data from the UART to print to the console (used when this UART is the console device).
Source§

fn console_write(&self, buf: &[u8]) -> Result<()>

Writes console input data to the UART (used when this UART is the console device).
Source§

fn set_break(&self, enable: bool) -> Result<()>

Source§

fn get_tx_ready_pin(&self) -> Result<Option<&Rc<dyn GpioPin>>>

Query if TX-ready pin non-polling mode is supported.
Source§

impl Read for &dyn Uart

Source§

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

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

fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

Like read, except that it reads into a slice of buffers. Read more
Source§

fn is_read_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Reader has an efficient read_vectored implementation. Read more
1.0.0 · Source§

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

Reads all bytes until EOF in this source, placing them into buf. Read more
1.0.0 · Source§

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

Reads all bytes until EOF in this source, appending them to buf. Read more
1.6.0 · Source§

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

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

fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Pull some bytes from this source into the specified buffer. Read more
Source§

fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Reads the exact number of bytes required to fill cursor. Read more
1.0.0 · Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · Source§

fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · Source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · Source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adapter which will read at most limit bytes from it. Read more

Implementors§