use crate::common::Status;
#[cfg(feature = "defmt")]
use defmt::Format;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(Format))]
pub enum Ms4525doError {
I2cError,
InvalidStatus(Status),
DataOutOfRange,
FaultDetected,
StaleDataMismatch,
}
impl core::fmt::Display for Ms4525doError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Ms4525doError::I2cError => {
write!(f, "I2C communication error")
}
Ms4525doError::InvalidStatus(status) => {
write!(f, "Invalid sensor status: {:?}", status)
}
Ms4525doError::DataOutOfRange => {
write!(f, "Internal buffer allocation failed")
}
Ms4525doError::FaultDetected => {
write!(f, "Sensor fault detected")
}
Ms4525doError::StaleDataMismatch => {
write!(f, "Data validation failed between consecutive reads")
}
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for Ms4525doError {}