#[derive(Debug, Clone, Copy)]
pub enum LogicLevel {
High,
Low,
}
impl LogicLevel {
#[must_use]
pub fn is_high(self) -> bool {
matches!(self, Self::High)
}
#[must_use]
pub fn is_low(self) -> bool {
matches!(self, Self::Low)
}
}
#[doc(hidden)]
impl From<bool> for LogicLevel {
fn from(value: bool) -> Self {
if value { Self::High } else { Self::Low }
}
}
#[doc(hidden)]
impl From<LogicLevel> for bool {
fn from(value: LogicLevel) -> Self {
match value {
LogicLevel::High => true,
LogicLevel::Low => false,
}
}
}
#[doc(hidden)]
impl From<LogicLevel> for u8 {
fn from(value: LogicLevel) -> Self {
match value {
LogicLevel::High => 1,
LogicLevel::Low => 0,
}
}
}
#[derive(Debug, Clone, Copy)]
pub enum GpioDirection {
Input,
Output,
}
impl GpioDirection {
#[must_use]
pub fn is_input(&self) -> bool {
matches!(self, Self::Input)
}
#[must_use]
pub fn is_output(&self) -> bool {
matches!(self, Self::Output)
}
}
#[doc(hidden)]
impl From<bool> for GpioDirection {
fn from(value: bool) -> Self {
if value { Self::Input } else { Self::Output }
}
}
#[doc(hidden)]
impl From<GpioDirection> for bool {
fn from(value: GpioDirection) -> Self {
match value {
GpioDirection::Input => true,
GpioDirection::Output => false,
}
}
}
#[doc(hidden)]
impl From<GpioDirection> for u8 {
fn from(value: GpioDirection) -> Self {
match value {
GpioDirection::Input => 1,
GpioDirection::Output => 0,
}
}
}