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
use thiserror::Error; #[derive(Error, Debug)] pub enum Error { #[error("io error")] IoError(#[from] std::io::Error), #[error("timeout/retry error")] Timeout, #[error("crc error expected {}, actual {}", .expected, .actual)] Crc { expected: u16, actual: u16 }, #[error("ecc error {:?}", .0)] Ecc(crate::command::EccError), #[error("invalid ecc address")] InvalidAddress, } impl Error { pub(crate) fn timeout() -> Self { Self::Timeout } pub(crate) fn crc(expected: u16, actual: u16) -> Self { Self::Crc { expected, actual } } pub(crate) fn ecc(err: crate::command::EccError) -> Self { Self::Ecc(err) } pub(crate) fn invalid_address() -> Self { Self::InvalidAddress } }