use crate::clock;
#[derive(PartialEq, Debug)]
pub enum Error {
Init,
Read,
Write,
Timeout,
Busy,
}
#[derive(PartialEq)]
pub enum BidirectionalMode {
Line2Unidirectional = 0,
Line1Bidirectional = 1,
}
#[derive(PartialEq)]
pub enum BitOrder {
MSB = 0,
LSB = 1,
}
#[derive(PartialEq, Clone, Copy)]
pub enum BaudRateDiv {
Div2 = 0,
Div4 = 1,
Div8 = 2,
Div16 = 3,
Div32 = 4,
Div64 = 5,
Div128 = 6,
Div256 = 7,
}
impl BaudRateDiv {
pub fn baud_rate(&self) -> u32 {
clock::sys_pclk() / (0x02 << (*self as usize))
}
}
impl From<u8> for BaudRateDiv {
fn from(value: u8) -> Self {
match value {
0 => Self::Div2,
1 => Self::Div4,
2 => Self::Div8,
3 => Self::Div16,
4 => Self::Div32,
5 => Self::Div64,
6 => Self::Div128,
7 => Self::Div256,
_ => unreachable!("value({}) must <= 7", value),
}
}
}
#[derive(PartialEq, Clone, Copy)]
pub enum Rule {
Slave = 0,
Master = 1,
}
#[derive(PartialEq, Clone, Copy)]
pub enum ClockPolarity {
Low = 0,
Hight = 1,
}
#[derive(PartialEq, Clone, Copy)]
pub enum ClockPhase {
Low = 0,
Hight = 1,
}
#[derive(PartialEq)]
pub enum SlaveSpeedMode {
Normal = 0,
Fast = 1,
}
#[derive(PartialEq)]
pub enum DataLength {
Lenght8 = 0,
Length16 = 1,
}