Skip to content

Commit 9c0791d

Browse files
committed
Implement SpiOperation::TransferInPlace based on SpidevTransfer::read_write_in_place()
Fixes #120
1 parent 1ffb268 commit 9c0791d

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
@@ -31,7 +31,7 @@ sysfs_gpio = { version = "0.6.1", optional = true }
3131
i2cdev = { version = "0.6.0", optional = true }
3232
nb = "1"
3333
serialport = { version = "4.2.0", default-features = false, optional = true }
34-
spidev = { version = "0.6.0", optional = true }
34+
spidev = { version = "0.7.0", optional = true, git = "https://github.com/rust-embedded/rust-spidev.git", rev = "refs/pull/49/head" }
3535
nix = { version = "0.27.1", optional = true }
3636
tokio = { version = "1", default-features = false, optional = true }
3737

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)