sdmmc_core/
response.rs

1//! Response types for SD/MMC bus protocols.
2
3use crate::response_enum;
4
5pub mod sd;
6pub mod sdio;
7pub mod spi;
8
9mod end;
10mod start;
11mod types;
12
13pub use end::*;
14pub use start::*;
15pub use types::*;
16
17response_enum! {
18    /// Represents the top-level SD/MMC response types.
19    ///
20    /// # Example
21    ///
22    /// ```rust
23    /// use sdmmc_core::response::{sd, Response, ResponseMode, ResponseType};
24    ///
25    /// let r1 = sd::r1::R1::new();
26    /// let sd_r1 = sd::Response::from(r1);
27    /// let res = Response::from(sd_r1);
28    ///
29    /// assert_eq!(sd_r1, sd::Response::R1(r1));
30    /// assert_eq!(res, Response::Sd(sd_r1));
31    ///
32    /// assert_eq!(sd_r1.into_r1(), Ok(r1));
33    /// assert_eq!(res.into_sd(), Ok(sd_r1));
34    ///
35    /// assert_eq!(r1.response_type(), ResponseType::R1);
36    /// assert_eq!(r1.response_mode(), ResponseMode::Sd);
37    ///
38    /// assert_eq!(r1.response_type(), sd_r1.response_type());
39    /// assert_eq!(r1.response_mode(), sd_r1.response_mode());
40    ///
41    /// assert_eq!(r1.response_type(), res.response_type());
42    /// assert_eq!(r1.response_mode(), res.response_mode());
43    /// ```
44    Response {
45        default: Sd(sd::Response),
46        Sd(sd::Response),
47        Sdio(sdio::Response),
48        Spi(spi::Response),
49    }
50}