pub struct SpiDeviceWithConfig<'a, M: RawMutex, BUS: SetConfig, CS> { /* private fields */ }
Expand description

SPI device on a shared bus, with its own configuration.

This is like SpiDevice, with an additional bus configuration that’s applied to the bus before each use using SetConfig. This allows different devices on the same bus to use different communication settings.

Implementations§

source§

impl<'a, M: RawMutex, BUS: SetConfig, CS> SpiDeviceWithConfig<'a, M, BUS, CS>

source

pub fn new(bus: &'a Mutex<M, RefCell<BUS>>, cs: CS, config: BUS::Config) -> Self

Create a new SpiDeviceWithConfig.

source

pub fn set_config(&mut self, config: BUS::Config)

Change the device’s config at runtime

Trait Implementations§

source§

impl<'a, M, BUS, CS> ErrorType for SpiDeviceWithConfig<'a, M, BUS, CS>
where M: RawMutex, BUS: ErrorType + SetConfig, CS: OutputPin,

§

type Error = SpiDeviceError<<BUS as ErrorType>::Error, <CS as ErrorType>::Error>

Error type.
source§

impl<BUS, M, CS, Word> SpiDevice<Word> for SpiDeviceWithConfig<'_, M, BUS, CS>
where M: RawMutex, BUS: SpiBus<Word> + SetConfig, CS: OutputPin, Word: Copy + 'static,

source§

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

Perform a transaction against the device. Read more
source§

fn read(&mut self, buf: &mut [Word]) -> Result<(), Self::Error>

Do a read within a transaction. Read more
source§

fn write(&mut self, buf: &[Word]) -> Result<(), Self::Error>

Do a write within a transaction. Read more
source§

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

Do a transfer within a transaction. Read more
source§

fn transfer_in_place(&mut self, buf: &mut [Word]) -> Result<(), Self::Error>

Do an in-place transfer within a transaction. Read more

Auto Trait Implementations§

§

impl<'a, M, BUS, CS> Freeze for SpiDeviceWithConfig<'a, M, BUS, CS>
where CS: Freeze, <BUS as SetConfig>::Config: Freeze,

§

impl<'a, M, BUS, CS> !RefUnwindSafe for SpiDeviceWithConfig<'a, M, BUS, CS>

§

impl<'a, M, BUS, CS> Send for SpiDeviceWithConfig<'a, M, BUS, CS>
where CS: Send, <BUS as SetConfig>::Config: Send, M: Sync, BUS: Send,

§

impl<'a, M, BUS, CS> Sync for SpiDeviceWithConfig<'a, M, BUS, CS>
where CS: Sync, <BUS as SetConfig>::Config: Sync, M: Sync, BUS: Send,

§

impl<'a, M, BUS, CS> Unpin for SpiDeviceWithConfig<'a, M, BUS, CS>
where CS: Unpin, <BUS as SetConfig>::Config: Unpin,

§

impl<'a, M, BUS, CS> !UnwindSafe for SpiDeviceWithConfig<'a, M, BUS, CS>

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.