use drone_core::drv::Resource;
/// SD SPI driver.
#[derive(Driver)]
pub struct SdSpi<T: SdSpiRes>(T);
/// SD SPI resource.
pub trait SdSpiRes: Resource<Source = Self> {
/// Configures inner resources.
fn init(&self);
/// Lowers associated SPI NSS pin.
fn slave_select(&self);
/// Rises associated SPI NSS pin.
fn slave_unselect(&self);
}
impl<T: SdSpiRes> SdSpi<T> {
/// Delegates to [`SdSpiRes::init`](SdSpiRes::init).
#[inline(always)]
pub fn init(&self) {
self.0.init();
}
/// Delegates to [`SdSpiRes::slave_select`](SdSpiRes::slave_select).
#[inline(always)]
pub fn slave_select(&self) {
self.0.slave_select()
}
/// Delegates to [`SdSpiRes::slave_unselect`](SdSpiRes::slave_unselect).
#[inline(always)]
pub fn slave_unselect(&self) {
self.0.slave_unselect()
}
}