#[repr(u8)]
#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum AccessMode {
Read = 0,
Write = 1,
}
impl From<AccessMode> for u8 {
fn from(val: AccessMode) -> Self {
val as u8
}
}
pub const HEADER_LEN: usize = 3;
#[inline]
pub const fn vdm_header(addr: u16, block: u8, mode: AccessMode) -> [u8; HEADER_LEN] {
[
(addr >> 8) as u8,
addr as u8,
(block << 3) | ((mode as u8) << 2),
]
}
pub const fn fdm_header_1b(addr: u16, block: u8, mode: AccessMode) -> [u8; HEADER_LEN] {
[
(addr >> 8) as u8,
addr as u8,
(block << 3) | ((mode as u8) << 2) | 0b01,
]
}
pub const fn fdm_header_2b(addr: u16, block: u8, mode: AccessMode) -> [u8; HEADER_LEN] {
[
(addr >> 8) as u8,
addr as u8,
(block << 3) | ((mode as u8) << 2) | 0b10,
]
}
pub const fn fdm_header_4b(addr: u16, block: u8, mode: AccessMode) -> [u8; HEADER_LEN] {
[
(addr >> 8) as u8,
addr as u8,
(block << 3) | ((mode as u8) << 2) | 0b11,
]
}
#[cfg(feature = "embedded-hal")]
pub const MODE: embedded_hal::spi::Mode = embedded_hal::spi::Mode {
polarity: embedded_hal::spi::Polarity::IdleLow,
phase: embedded_hal::spi::Phase::CaptureOnFirstTransition,
};