Skip to content

Commit 7d2eec6

Browse files
committed
implement FullDuplex for Spi
1 parent e679ab1 commit 7d2eec6

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/spi.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,25 @@ where
454454
}
455455
}
456456

457+
impl<SPI, SCKPIN, MISOPIN, MOSIPIN> ::embedded_hal::spi::FullDuplex<u8>
458+
for Spi<SPI, SCKPIN, MISOPIN, MOSIPIN, EightBit>
459+
where
460+
SPI: Deref<Target = SpiRegisterBlock>,
461+
{
462+
type Error = Error;
463+
464+
fn read(&mut self) -> nb::Result<u8, Error> {
465+
nb::block!(self.check_read())?;
466+
Ok(self.read_u8())
467+
}
468+
469+
fn send(&mut self, byte: u8) -> nb::Result<(), Error> {
470+
nb::block!(self.check_send())?;
471+
self.send_u8(byte);
472+
Ok(())
473+
}
474+
}
475+
457476
impl<SPI, SCKPIN, MISOPIN, MOSIPIN> ::embedded_hal::blocking::spi::Write<u8>
458477
for Spi<SPI, SCKPIN, MISOPIN, MOSIPIN, EightBit>
459478
where
@@ -487,6 +506,25 @@ where
487506
}
488507
}
489508

509+
impl<SPI, SCKPIN, MISOPIN, MOSIPIN> ::embedded_hal::spi::FullDuplex<u16>
510+
for Spi<SPI, SCKPIN, MISOPIN, MOSIPIN, SixteenBit>
511+
where
512+
SPI: Deref<Target = SpiRegisterBlock>,
513+
{
514+
type Error = Error;
515+
516+
fn read(&mut self) -> nb::Result<u16, Error> {
517+
nb::block!(self.check_read())?;
518+
Ok(self.read_u16())
519+
}
520+
521+
fn send(&mut self, byte: u16) -> nb::Result<(), Error> {
522+
nb::block!(self.check_send())?;
523+
self.send_u16(byte);
524+
Ok(())
525+
}
526+
}
527+
490528
impl<SPI, SCKPIN, MISOPIN, MOSIPIN> ::embedded_hal::blocking::spi::Transfer<u16>
491529
for Spi<SPI, SCKPIN, MISOPIN, MOSIPIN, SixteenBit>
492530
where

0 commit comments

Comments
 (0)