Struct Uart

Source
pub struct Uart { /* private fields */ }
Expand description

Driver for a PL011 UART.

Implementations§

Source§

impl Uart

Source

pub unsafe fn new(base_address: *mut u32) -> Self

Constructs a new instance of the UART driver for a PL011 device at the given base address.

§Safety

The given base address must point to the 14 MMIO control registers of a PL011 device, which must be mapped into the address space of the process as device memory and not have any other aliases.

Source

pub fn init(&mut self, clock: u32, baud_rate: u32)

Initializes PL011 UART.

clock: Uart clock in Hz. baud_rate: Baud rate.

Source

pub fn write_byte(&mut self, byte: u8)

Writes a single byte to the UART.

This blocks until there is space in the transmit FIFO or holding register, but returns as soon as the byte has been written to the transmit FIFO or holding register. It doesn’t wait for the byte to be sent.

Source

pub fn is_transmitting(&self) -> bool

Returns whether the UART is currently transmitting data.

This will be true immediately after calling write_byte.

Source

pub fn read_byte(&mut self) -> Result<Option<u8>, Error>

Reads and returns a pending byte, or None if nothing has been received.

Trait Implementations§

Source§

impl Debug for Uart

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ErrorType for Uart

Source§

type Error = Error

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

impl Read for Uart

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 ReadReady for Uart

Source§

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

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

impl Write for Uart

Source§

fn write_str(&mut self, s: &str) -> Result

Writes a string slice into this writer, returning whether the write succeeded. Read more
1.1.0 · Source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · Source§

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

Glue for usage of the write! macro with implementors of this trait. Read more
Source§

impl Write for Uart

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 WriteReady for Uart

Source§

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

Get whether the writer is ready for immediately writing. Read more
Source§

impl Send for Uart

Source§

impl Sync for Uart

Auto Trait Implementations§

§

impl Freeze for Uart

§

impl RefUnwindSafe for Uart

§

impl Unpin for Uart

§

impl UnwindSafe for Uart

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