1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
// Copyright Claudio Mattera 2024.
//
// Distributed under the MIT License or the Apache 2.0 License at your option.
// See the accompanying files License-MIT.txt and License-Apache-2.0.txt, or
// online at
// https://opensource.org/licenses/MIT
// https://opensource.org/licenses/Apache-2.0
//! Data types and functions for error handling
use embedded_hal::i2c::{Error as I2cError, ErrorKind as I2cErrorKind};
/// An error
#[derive(Debug, PartialEq)]
pub enum Error {
/// A checksum was different than expected
ChecksumMismatch {
/// Actual checksum
actual: u8,
/// Expected checksum
expected: u8,
},
/// An error in the underlying I²C system
I2c(I2cErrorKind),
}
impl<E> From<E> for Error
where
E: I2cError,
{
fn from(error: E) -> Self {
Self::I2c(error.kind())
}
}
#[cfg(feature = "std")]
impl std::error::Error for Error {}
#[cfg(feature = "std")]
impl core::fmt::Display for Error {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
write!(f, "{self:?}")
}
}