Embassy
embassy-embedded-hal

Crates

git

Versions

default

Flavors

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

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

This is like I2cDevice, 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> I2cDeviceWithConfig<'a, M, BUS>

source

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

Create a new I2cDeviceWithConfig.

source

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

Change the device’s config at runtime

Trait Implementations§

source§

impl<'a, M, BUS> ErrorType for I2cDeviceWithConfig<'a, M, BUS>
where BUS: ErrorType + SetConfig, M: RawMutex,

§

type Error = I2cDeviceError<<BUS as ErrorType>::Error>

Error type
source§

impl<M, BUS> I2c for I2cDeviceWithConfig<'_, M, BUS>
where M: RawMutex + 'static, BUS: I2c + SetConfig + 'static,

source§

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

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

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

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

async fn write_read( &mut self, address: u8, wr_buffer: &[u8], rd_buffer: &mut [u8] ) -> Result<(), I2cDeviceError<BUS::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

Auto Trait Implementations§

§

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

§

impl<'a, M, BUS> !RefUnwindSafe for I2cDeviceWithConfig<'a, M, BUS>

§

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

§

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

§

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

§

impl<'a, M, BUS> !UnwindSafe for I2cDeviceWithConfig<'a, M, BUS>

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.