Available on crate feature
eh0
only.Expand description
SPI mock implementations.
This mock supports the specification and checking of expectations to allow automated testing of SPI based drivers. Mismatches between expected and real SPI transactions will cause runtime assertions to assist with locating faults.
§Usage
use embedded_hal::{
blocking::spi::{Transfer, Write},
spi::FullDuplex,
};
use embedded_hal_mock::eh0::spi::{Mock as SpiMock, Transaction as SpiTransaction};
// Configure expectations
let expectations = [
SpiTransaction::send(0x09),
SpiTransaction::read(0x0A),
SpiTransaction::send(0xFE),
SpiTransaction::read(0xFF),
SpiTransaction::write(vec![1, 2]),
SpiTransaction::transfer(vec![3, 4], vec![5, 6]),
];
let mut spi = SpiMock::new(&expectations);
// FullDuplex transfers
spi.send(0x09);
assert_eq!(spi.read().unwrap(), 0x0A);
spi.send(0xFE);
assert_eq!(spi.read().unwrap(), 0xFF);
// Writing
spi.write(&vec![1, 2]).unwrap();
// Transferring
let mut buf = vec![3, 4];
spi.transfer(&mut buf).unwrap();
assert_eq!(buf, vec![5, 6]);
// Finalise expectations
spi.done();
Structs§
- Transaction
- SPI transaction type
Enums§
- Mode
- SPI Transaction mode
Type Aliases§
- Mock
- Mock SPI implementation