#![no_std]
pub mod wrapper;
#[cfg(feature = "mock")]
extern crate std;
#[cfg(feature = "mock")]
pub mod mock;
#[cfg(feature = "ffi")]
extern crate libc;
#[cfg(feature = "ffi")]
pub mod ffi;
extern crate embedded_hal;
pub trait Transactional {
type Error;
fn spi_read(&mut self, prefix: &[u8], data: &mut [u8]) -> Result<(), Self::Error>;
fn spi_write(&mut self, prefix: &[u8], data: &[u8]) -> Result<(), Self::Error>;
fn spi_exec(&mut self, transactions: &mut [Transaction]) -> Result<(), Self::Error>;
fn spi_busy(&mut self) -> Result<PinState, Self::Error>;
}
#[derive(Debug, PartialEq)]
pub enum Transaction<'a> {
Write(&'a [u8]),
Read(&'a mut [u8]),
}
#[derive(Debug, Clone, PartialEq)]
pub enum Error<SpiError, PinError> {
Spi(SpiError),
Pin(PinError),
Aborted,
}
#[derive(Debug, Clone, PartialEq)]
pub enum PinState {
Low,
High
}