pub struct CriticalSectionDevice<'a, T> { /* private fields */ }
Expand description
critical-section
-based shared bus I2c
implementation.
Sharing is implemented with a critical-section
Mutex
. A critical section is taken for
the entire duration of a transaction. This allows sharing a single bus across multiple threads (interrupt priority levels).
The downside is critical sections typically require globally disabling interrupts, so CriticalSectionDevice
will likely
negatively impact real-time properties, such as interrupt latency. If you can, prefer using
RefCellDevice
instead, which does not require taking critical sections.
Implementations§
Trait Implementations§
source§impl<'a, T> ErrorType for CriticalSectionDevice<'a, T>where
T: I2c,
impl<'a, T> ErrorType for CriticalSectionDevice<'a, T>where
T: I2c,
source§impl<'a, T> I2c for CriticalSectionDevice<'a, T>where
T: I2c,
impl<'a, T> I2c for CriticalSectionDevice<'a, T>where
T: I2c,
source§fn write(&mut self, address: u8, write: &[u8]) -> Result<(), Self::Error>
fn write(&mut self, address: u8, write: &[u8]) -> Result<(), Self::Error>
Writes bytes to slave with address
address
. Read moreAuto Trait Implementations§
impl<'a, T> Freeze for CriticalSectionDevice<'a, T>
impl<'a, T> !RefUnwindSafe for CriticalSectionDevice<'a, T>
impl<'a, T> Send for CriticalSectionDevice<'a, T>where
T: Send,
impl<'a, T> Sync for CriticalSectionDevice<'a, T>where
T: Send,
impl<'a, T> Unpin for CriticalSectionDevice<'a, T>
impl<'a, T> !UnwindSafe for CriticalSectionDevice<'a, T>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more