Skip to content

Commit 1a38660

Browse files
committed
Use transactional read-write
1 parent 55f7f90 commit 1a38660

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/lib.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use std::time::Duration;
2727
use std::{ops, thread};
2828

2929
use cast::{u32, u64};
30-
use i2cdev::core::I2CDevice;
30+
use i2cdev::core::{I2CDevice, I2CMessage, I2CTransfer};
31+
use i2cdev::linux::LinuxI2CMessage;
3132
use spidev::SpidevTransfer;
3233

3334
mod serial;
@@ -219,8 +220,11 @@ impl hal::blocking::i2c::WriteRead for I2cdev {
219220
buffer: &mut [u8],
220221
) -> Result<(), Self::Error> {
221222
self.set_address(address)?;
222-
self.inner.write(bytes)?;
223-
self.inner.read(buffer)
223+
let mut messages = [
224+
LinuxI2CMessage::write(bytes),
225+
LinuxI2CMessage::read(buffer),
226+
];
227+
self.inner.transfer(&mut messages).map(drop)
224228
}
225229
}
226230

0 commit comments

Comments
 (0)