Skip to content

Commit b50b065

Browse files
DirbaioGrantM11235
andauthored
Make SpiDevice helper methods generic over word type.
Co-authored-by: GrantM11235 <[email protected]>
1 parent 3d9f178 commit b50b065

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/spi/blocking.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,10 @@ pub trait SpiDevice: ErrorType {
178178
/// This is a convenience method equivalent to `device.transaction(|bus| bus.write(buf))`.
179179
///
180180
/// See also: [`SpiDevice::transaction`], [`SpiBusWrite::write`]
181-
fn write(&mut self, buf: &[u8]) -> Result<(), Self::Error>
181+
fn write<Word>(&mut self, buf: &[Word]) -> Result<(), Self::Error>
182182
where
183-
Self::Bus: SpiBusWrite,
183+
Self::Bus: SpiBusWrite<Word>,
184+
Word: Copy,
184185
{
185186
self.transaction(|bus| bus.write(buf))
186187
}
@@ -190,9 +191,10 @@ pub trait SpiDevice: ErrorType {
190191
/// This is a convenience method equivalent to `device.transaction(|bus| bus.read(buf))`.
191192
///
192193
/// See also: [`SpiDevice::transaction`], [`SpiBusRead::read`]
193-
fn read(&mut self, buf: &mut [u8]) -> Result<(), Self::Error>
194+
fn read<Word>(&mut self, buf: &mut [Word]) -> Result<(), Self::Error>
194195
where
195-
Self::Bus: SpiBusRead,
196+
Self::Bus: SpiBusRead<Word>,
197+
Word: Copy,
196198
{
197199
self.transaction(|bus| bus.read(buf))
198200
}
@@ -202,9 +204,10 @@ pub trait SpiDevice: ErrorType {
202204
/// This is a convenience method equivalent to `device.transaction(|bus| bus.transfer(read, write))`.
203205
///
204206
/// See also: [`SpiDevice::transaction`], [`SpiBus::transfer`]
205-
fn transfer(&mut self, read: &mut [u8], write: &[u8]) -> Result<(), Self::Error>
207+
fn transfer<Word>(&mut self, read: &mut [Word], write: &[Word]) -> Result<(), Self::Error>
206208
where
207-
Self::Bus: SpiBus,
209+
Self::Bus: SpiBus<Word>,
210+
Word: Copy,
208211
{
209212
self.transaction(|bus| bus.transfer(read, write))
210213
}
@@ -214,9 +217,10 @@ pub trait SpiDevice: ErrorType {
214217
/// This is a convenience method equivalent to `device.transaction(|bus| bus.transfer_in_place(buf))`.
215218
///
216219
/// See also: [`SpiDevice::transaction`], [`SpiBus::transfer_in_place`]
217-
fn transfer_in_place(&mut self, buf: &mut [u8]) -> Result<(), Self::Error>
220+
fn transfer_in_place<Word>(&mut self, buf: &mut [Word]) -> Result<(), Self::Error>
218221
where
219-
Self::Bus: SpiBus,
222+
Self::Bus: SpiBus<Word>,
223+
Word: Copy,
220224
{
221225
self.transaction(|bus| bus.transfer_in_place(buf))
222226
}

0 commit comments

Comments
 (0)