const DEFAULT_ADDRESS: u8 = 0b1_1000;
#[derive(Debug, Clone, Copy)]
pub enum SlaveAddress {
Default,
Alternative { a2: bool, a1: bool, a0: bool },
}
impl From<SlaveAddress> for u8 {
fn from(slave_address: SlaveAddress) -> Self {
match slave_address {
SlaveAddress::Default => DEFAULT_ADDRESS,
SlaveAddress::Alternative { a2, a1, a0 } => {
DEFAULT_ADDRESS | (a2 as u8) << 2 | (a1 as u8) << 1 | (a0 as u8)
}
}
}
}
impl PartialEq for SlaveAddress {
fn eq(&self, other: &Self) -> bool {
let (lhs, rhs): (u8, u8) = ((*self).into(), (*other).into());
lhs == rhs
}
}