use crate::state::InvalidState;
use core::fmt::Debug;
#[derive(Debug)]
pub enum RfError<SE: Debug> {
InvalidState(InvalidState),
SpiError(SE),
}
impl<SE: Debug> From<InvalidState> for RfError<SE> {
fn from(is: InvalidState) -> Self {
Self::InvalidState(is)
}
}
#[derive(Debug)]
pub enum TransferError<SE: Debug> {
FifoOverflow,
TooMuchData,
SpiError(SE),
}
pub(crate) trait SpiErrorToOtherError<T, E: Debug> {
fn re(self) -> Result<T, RfError<E>>
where
Self: Sized;
fn te(self) -> Result<T, TransferError<E>>;
}
impl<T, E: Debug> SpiErrorToOtherError<T, E> for Result<T, E> {
fn re(self) -> Result<T, RfError<E>> {
self.map_err(|e| RfError::SpiError(e))
}
fn te(self) -> Result<T, TransferError<E>> {
self.map_err(|e| TransferError::SpiError(e))
}
}