[][src]Struct pl011_qemu::PL011

pub struct PL011<UART> {
    pub regs: UART,
    // some fields omitted
}

Struct representing the actual driver.

Notice that there are no silly ideas like setting the baud rate, or assigning GPIO pins to the driver: the qemu implementation doesnt need any of that, we can just write to the registers directly.

Implements embedded_hal::serial as well as core::fmt::Write

Examples

use pl011_qemu;
// build a driver for UART1
let mut uart = pl011_qemu::PL011::new(pl011_qemu::UART1::take().unwrap());

Fields

regs: UART

owned copy of the underlying uart registers.

Since they are moved into this struct, no one else can access them after the driver is initialized

Implementations

impl<T> PL011<T> where
    T: ConstRegBlockPtr<PL011_Regs>, 
[src]

pub fn new(uart: T) -> Self[src]

Initialize a UART driver. Needs a UART struct to be passed in

pub fn split(self) -> (Tx<T>, Rx<T>)[src]

splits a single PL011 uart object into separate Rx and Tx streams.

Useful when you want to separate the two different halves of the UART and use them in different parts of the application

Note that the Rx and Tx structs do not contain a reference to the underlying UART, this is because once you split the UART in half, it is no longer possible to interact with the uart hardware directly, since the other half (rx or tx) might be using it at the same time.

pub fn write_byte(&self, data: u8)[src]

writes a single byte out the uart

spins until space is available in the fifo

pub fn read_byte(&self) -> u8[src]

reads a single byte out the uart

spins until a byte is available in the fifo

Trait Implementations

impl<T> Read<u8> for PL011<T> where
    Rx<T>: Read<u8, Error = Error>, 
[src]

type Error = Error

Read error

impl<T> Write for PL011<T> where
    Tx<T>: Write
[src]

impl<T> Write<u8> for PL011<T> where
    Tx<T>: Write<u8, Error = Error>, 
[src]

type Error = Error

Write error

Auto Trait Implementations

impl<UART> Send for PL011<UART> where
    UART: Send
[src]

impl<UART> Sync for PL011<UART> where
    UART: Sync
[src]

impl<UART> Unpin for PL011<UART> where
    UART: Unpin
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.