pub struct BlockingAsync<T> { /* private fields */ }
Expand description

Wrapper that implements async traits using blocking implementations.

This allows driver writers to depend on the async traits while still supporting embedded-hal peripheral implementations.

BlockingAsync will implement any async trait that maps to embedded-hal traits implemented for the wrapped driver.

Driver users are then free to choose which implementation that is available to them.

Implementations§

source§

impl<T> BlockingAsync<T>

source

pub fn new(wrapped: T) -> Self

Create a new instance of a wrapper for a given peripheral.

Trait Implementations§

source§

impl<T> ErrorType for BlockingAsync<T>
where T: ErrorType,

§

type Error = <T as ErrorType>::Error

Errors returned by this NOR flash.
source§

impl<T, E> ErrorType for BlockingAsync<T>
where E: Error + 'static, T: WriteRead<Error = E> + Read<Error = E> + Write<Error = E>,

§

type Error = E

Error type
source§

impl<T, E> ErrorType for BlockingAsync<T>
where E: Error, T: Transfer<u8, Error = E> + Write<u8, Error = E>,

§

type Error = E

Error type.
source§

impl<T, E> I2c for BlockingAsync<T>
where E: Error + 'static, T: WriteRead<Error = E> + Read<Error = E> + Write<Error = E>,

source§

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

Reads enough bytes from slave with address to fill buffer. Read more
source§

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

Writes bytes to slave with address address. Read more
source§

async fn write_read( &mut self, address: u8, write: &[u8], read: &mut [u8] ) -> Result<(), Self::Error>

Writes bytes to slave with address address and then reads enough bytes to fill read in a single transaction. Read more
source§

async fn transaction( &mut self, address: u8, operations: &mut [Operation<'_>] ) -> Result<(), Self::Error>

Execute the provided operations on the I2C bus as a single transaction. Read more
source§

impl<T> NorFlash for BlockingAsync<T>
where T: NorFlash,

source§

const WRITE_SIZE: usize = <T as NorFlash>::WRITE_SIZE

The minumum number of bytes the storage peripheral can write
source§

const ERASE_SIZE: usize = <T as NorFlash>::ERASE_SIZE

The minumum number of bytes the storage peripheral can erase
source§

async fn write(&mut self, offset: u32, data: &[u8]) -> Result<(), Self::Error>

If power is lost during write, the contents of the written words are undefined, but the rest of the page is guaranteed to be unchanged. It is not allowed to write to the same word twice. Read more
source§

async fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error>

Erase the given storage range, clearing all data within [from..to]. The given range will contain all 1s afterwards. Read more
source§

impl<T> ReadNorFlash for BlockingAsync<T>
where T: ReadNorFlash,

source§

const READ_SIZE: usize = <T as ReadNorFlash>::READ_SIZE

The minumum number of bytes the storage peripheral can read
source§

async fn read( &mut self, address: u32, data: &mut [u8] ) -> Result<(), Self::Error>

Read a slice of data from the storage peripheral, starting the read operation at the given address offset, and reading bytes.len() bytes. Read more
source§

fn capacity(&self) -> usize

The capacity of the peripheral in bytes.
source§

impl<T, E> SpiBus for BlockingAsync<T>
where E: Error + 'static, T: Transfer<u8, Error = E> + Write<u8, Error = E>,

source§

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

Wait until all operations have completed and the bus is idle. Read more
source§

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

Write words to the slave, ignoring all the incoming words. Read more
source§

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

Read words from the slave. Read more
source§

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

Write and read simultaneously. write is written to the slave on MOSI and words received on MISO are stored in read. Read more
source§

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

Write and read simultaneously. The contents of words are written to the slave, and the received words are stored into the same words buffer, overwriting it. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for BlockingAsync<T>
where T: RefUnwindSafe,

§

impl<T> Send for BlockingAsync<T>
where T: Send,

§

impl<T> Sync for BlockingAsync<T>
where T: Sync,

§

impl<T> Unpin for BlockingAsync<T>
where T: Unpin,

§

impl<T> UnwindSafe for BlockingAsync<T>
where T: UnwindSafe,

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

§

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

§

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.