#[derive(Clone, Copy, Debug)]
pub enum ReadRegisterError<B, D> {
BusError(B),
DeserializationError(D),
}
#[derive(Clone, Copy, Debug)]
pub enum WriteRegisterError<B, S> {
BusError(B),
SerializationError(S),
}
#[derive(Clone, Copy, Debug)]
pub enum CommandError<B, S, D> {
BusError(B),
SerializationError(S),
DeserializationError(D),
}
#[derive(Clone, Copy, Debug)]
pub enum Error {
BusError,
SerializationError,
DeserializationError,
}
impl<B, D> From<ReadRegisterError<B, D>> for Error {
fn from(value: ReadRegisterError<B, D>) -> Self {
match value {
ReadRegisterError::BusError(_) => Self::BusError,
ReadRegisterError::DeserializationError(_) => Self::DeserializationError,
}
}
}
impl<B, S> From<WriteRegisterError<B, S>> for Error {
fn from(value: WriteRegisterError<B, S>) -> Self {
match value {
WriteRegisterError::BusError(_) => Self::BusError,
WriteRegisterError::SerializationError(_) => Self::SerializationError,
}
}
}
impl<B, D, S> From<CommandError<B, D, S>> for Error {
fn from(value: CommandError<B, D, S>) -> Self {
match value {
CommandError::BusError(_) => Self::BusError,
CommandError::DeserializationError(_) => Self::DeserializationError,
CommandError::SerializationError(_) => Self::SerializationError,
}
}
}