use sdmmc_protocol::Error as ProtocolError;
use crate::AicError;
#[derive(Debug, thiserror::Error)]
pub enum AicRdifError {
#[error("SDIO protocol failed: {0}")]
Protocol(#[from] ProtocolError),
#[error("AIC core failed: {0}")]
Core(#[from] AicError),
#[error("SDIO host DMA capability is unavailable")]
DmaUnavailable,
#[error("bounded AIC ownership queue is unavailable")]
QueueUnavailable,
#[error("AIC adapter is stopped")]
Stopped,
}
impl From<AicRdifError> for rdif_eth::NetError {
fn from(error: AicRdifError) -> Self {
match error {
AicRdifError::QueueUnavailable => Self::Retry,
AicRdifError::Stopped => Self::Stopped,
AicRdifError::DmaUnavailable => Self::InvalidParts,
other => Self::Other(alloc::boxed::Box::new(other)),
}
}
}
impl From<dma_api::DmaError> for AicRdifError {
fn from(_: dma_api::DmaError) -> Self {
Self::DmaUnavailable
}
}