Skip to content

Commit ee3adc4

Browse files
committed
Implement SpiOperation::TransferInPlace based on SpidevTransfer::read_write_in_place()
Fixes #120
1 parent e50b26d commit ee3adc4

File tree

2 files changed

+3
-8
lines changed

2 files changed

+3
-8
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ sysfs_gpio = { version = "0.6.1", optional = true }
2929
i2cdev = { version = "0.6.0", optional = true }
3030
nb = "1"
3131
serialport = { version = "4.2.0", default-features = false }
32-
spidev = { version = "0.6.0", optional = true }
32+
spidev = { version = "0.6.1", optional = true }
3333
nix = "0.27.1"
3434

3535
[dev-dependencies]

src/spi.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,8 @@ mod embedded_hal_impl {
173173
}
174174

175175
fn transfer_in_place(&mut self, words: &mut [u8]) -> Result<(), Self::Error> {
176-
let tx = words.to_owned();
177176
self.0
178-
.transfer(&mut SpidevTransfer::read_write(&tx, words))
177+
.transfer(&mut SpidevTransfer::read_write_in_place(words))
179178
.map_err(|err| SPIError { err })
180179
}
181180

@@ -214,11 +213,7 @@ mod embedded_hal_impl {
214213
}
215214
},
216215
SpiOperation::TransferInPlace(buf) => {
217-
let tx = unsafe {
218-
let p = buf.as_ptr();
219-
std::slice::from_raw_parts(p, buf.len())
220-
};
221-
transfers.push(SpidevTransfer::read_write(tx, buf));
216+
transfers.push(SpidevTransfer::read_write_in_place(buf));
222217
}
223218
SpiOperation::DelayNs(ns) => {
224219
let us = {

0 commit comments

Comments
 (0)