drone-sd-core 0.2.2

Secure Digital cards driver for Drone.
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()
  }
}