[−][src]Struct pl011_qemu::PL011
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]
T: ConstRegBlockPtr<PL011_Regs>,
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]
Rx<T>: Read<u8, Error = Error>,
impl<T> Write for PL011<T> where
Tx<T>: Write,
[src]
Tx<T>: Write,
pub fn write_str(&mut self, s: &str) -> Result
[src]
pub fn write_char(&mut self, c: char) -> Result<(), Error>
1.1.0[src]
pub fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>
1.0.0[src]
impl<T> Write<u8> for PL011<T> where
Tx<T>: Write<u8, Error = Error>,
[src]
Tx<T>: Write<u8, Error = Error>,
Auto Trait Implementations
impl<UART> Send for PL011<UART> where
UART: Send,
[src]
UART: Send,
impl<UART> Sync for PL011<UART> where
UART: Sync,
[src]
UART: Sync,
impl<UART> Unpin for PL011<UART> where
UART: Unpin,
[src]
UART: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,