Trait embassy_traits::spi::FullDuplex[][src]

pub trait FullDuplex<Word> {
    type Error;
    type WriteFuture: Future<Output = Result<(), Self::Error>> + 'a;
    type ReadFuture: Future<Output = Result<(), Self::Error>> + 'a;
    type WriteReadFuture: Future<Output = Result<(), Self::Error>> + 'a;
    fn read<'a>(&'a mut self, data: &'a mut [Word]) -> Self::ReadFuture;
fn write<'a>(&'a mut self, data: &'a [Word]) -> Self::WriteFuture;
fn read_write<'a>(
        &'a mut self,
        read: &'a mut [Word],
        write: &'a [Word]
    ) -> Self::WriteReadFuture; }

Full duplex (master mode)

Notes

  • It’s the task of the user of this interface to manage the slave select lines

  • Due to how full duplex SPI works each read call must be preceded by a write call.

  • read calls only return the data received with the last write call. Previously received data is discarded

  • Data is only guaranteed to be clocked out when the read call succeeds. The slave select line shouldn’t be released before that.

  • Some SPIs can work with 8-bit and 16-bit words. You can overload this trait with different Word types to allow operation in both modes.

Associated Types

type Error[src]

An enumeration of SPI errors

type WriteFuture: Future<Output = Result<(), Self::Error>> + 'a[src]

type ReadFuture: Future<Output = Result<(), Self::Error>> + 'a[src]

type WriteReadFuture: Future<Output = Result<(), Self::Error>> + 'a[src]

Loading content...

Required methods

fn read<'a>(&'a mut self, data: &'a mut [Word]) -> Self::ReadFuture[src]

fn write<'a>(&'a mut self, data: &'a [Word]) -> Self::WriteFuture[src]

fn read_write<'a>(
    &'a mut self,
    read: &'a mut [Word],
    write: &'a [Word]
) -> Self::WriteReadFuture
[src]

Loading content...

Implementors

Loading content...