sdmmc-core 0.5.0

SD/MMC core data structures and algorithms
Documentation
//! Response types for SD/MMC bus protocols.

use crate::response_enum;

pub mod sd;
pub mod sdio;
pub mod spi;

mod end;
mod start;
mod types;

pub use end::*;
pub use start::*;
pub use types::*;

response_enum! {
    /// Represents the top-level SD/MMC response types.
    ///
    /// # Example
    ///
    /// ```rust
    /// use sdmmc_core::response::{sd, Response, ResponseMode, ResponseType};
    ///
    /// let r1 = sd::r1::R1::new();
    /// let sd_r1 = sd::Response::from(r1);
    /// let res = Response::from(sd_r1);
    ///
    /// assert_eq!(sd_r1, sd::Response::R1(r1));
    /// assert_eq!(res, Response::Sd(sd_r1));
    ///
    /// assert_eq!(sd_r1.into_r1(), Ok(r1));
    /// assert_eq!(res.into_sd(), Ok(sd_r1));
    ///
    /// assert_eq!(r1.response_type(), ResponseType::R1);
    /// assert_eq!(r1.response_mode(), ResponseMode::Sd);
    ///
    /// assert_eq!(r1.response_type(), sd_r1.response_type());
    /// assert_eq!(r1.response_mode(), sd_r1.response_mode());
    ///
    /// assert_eq!(r1.response_type(), res.response_type());
    /// assert_eq!(r1.response_mode(), res.response_mode());
    /// ```
    Response {
        default: Sd(sd::Response),
        Sd(sd::Response),
        Sdio(sdio::Response),
        Spi(spi::Response),
    }
}