aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Andres Vahter <andres@vahter.me> 2023-11-28 10:36:39 +0200
committerGravatar Emil Fresk <emil.fresk@gmail.com> 2023-11-28 09:59:29 +0000
commit9f5820da1d36a8c84455b1bc0458d34eb7dd9a70 (patch)
treeef40fa0a052b400b954987ef5c110ba230c05d24
parente8667d78725222e406a49a5de86d4cf244e4800a (diff)
downloadrtic-9f5820da1d36a8c84455b1bc0458d34eb7dd9a70.tar.gz
rtic-9f5820da1d36a8c84455b1bc0458d34eb7dd9a70.tar.zst
rtic-9f5820da1d36a8c84455b1bc0458d34eb7dd9a70.zip
rtic-sync Arbiter: impl more I2C trait fns
For example embassy-stm32 I2C does not impl transaction yet but other fns are available. So it would be better to impl all of them here.
-rw-r--r--rtic-sync/CHANGELOG.md4
-rw-r--r--rtic-sync/src/arbiter.rs20
2 files changed, 22 insertions, 2 deletions
diff --git a/rtic-sync/CHANGELOG.md b/rtic-sync/CHANGELOG.md
index 1ffe6f02..8f0261a8 100644
--- a/rtic-sync/CHANGELOG.md
+++ b/rtic-sync/CHANGELOG.md
@@ -9,8 +9,8 @@ For each category, _Added_, _Changed_, _Fixed_ add new entries at the top!
### Added
-- `arbiter::spi::ArbiterDevice` for sharing SPI buses using `embedded-hal-async`
-- `arbiter::i2c::ArbiterDevice` for sharing I2C buses using `embedded-hal-async`
+- `arbiter::spi::ArbiterDevice` for sharing SPI buses using `embedded-hal-async` traits.
+- `arbiter::i2c::ArbiterDevice` for sharing I2C buses using `embedded-hal-async` traits.
### Changed
diff --git a/rtic-sync/src/arbiter.rs b/rtic-sync/src/arbiter.rs
index 615a7ed7..99d41748 100644
--- a/rtic-sync/src/arbiter.rs
+++ b/rtic-sync/src/arbiter.rs
@@ -352,6 +352,26 @@ pub mod i2c {
BUS: I2c<A>,
A: AddressMode,
{
+ async fn read(&mut self, address: A, read: &mut [u8]) -> Result<(), Self::Error> {
+ let mut bus = self.bus.access().await;
+ bus.read(address, read).await
+ }
+
+ async fn write(&mut self, address: A, write: &[u8]) -> Result<(), Self::Error> {
+ let mut bus = self.bus.access().await;
+ bus.write(address, write).await
+ }
+
+ async fn write_read(
+ &mut self,
+ address: A,
+ write: &[u8],
+ read: &mut [u8],
+ ) -> Result<(), Self::Error> {
+ let mut bus = self.bus.access().await;
+ bus.write_read(address, write, read).await
+ }
+
async fn transaction(
&mut self,
address: A,