#[cfg(feature = "dev-stm32")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32")))]
pub mod gpio;
#[cfg(feature = "dev-stm32")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32")))]
pub mod usart;
#[cfg(feature = "dev-stm32-sdmmc")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32-sdmmc")))]
pub mod sdmmc;
#[cfg(feature = "dev-stm32-i2c")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32-i2c")))]
pub mod i2c;
#[cfg(feature = "dev-stm32-spi")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32-spi")))]
pub mod spi;
#[cfg(feature = "dev-stm32-octospi")]
#[cfg_attr(docsrs, doc(cfg(feature = "dev-stm32-octospi")))]
pub mod octospi;
#[cfg(feature = "machine-spi-flash")]
#[cfg_attr(docsrs, doc(cfg(feature = "machine-spi-flash")))]
pub mod demo;
#[cfg(feature = "dev-stm32-octospi")]
pub use octospi::Octospi;
#[cfg(feature = "dev-stm32-spi")]
pub use spi::Stm32Spi;
use alloc::vec::Vec;
use crate::core::error::Result;
use crate::machine::validate::ClassSchema;
pub fn register(registry: &mut crate::core::Registry) -> Result<()> {
#[cfg(feature = "dev-stm32")]
gpio::register(registry)?;
#[cfg(feature = "dev-stm32")]
usart::register(registry)?;
#[cfg(feature = "dev-stm32-sdmmc")]
sdmmc::register(registry)?;
#[cfg(feature = "dev-stm32-i2c")]
i2c::register(registry)?;
#[cfg(feature = "dev-stm32-spi")]
spi::register(registry)?;
#[cfg(feature = "dev-stm32-octospi")]
octospi::register(registry)?;
Ok(())
}
pub fn bind(bindings: &mut crate::machine::Bindings) -> Result<()> {
#[cfg(feature = "dev-stm32")]
gpio::bind(bindings)?;
#[cfg(feature = "dev-stm32")]
usart::bind(bindings)?;
#[cfg(feature = "dev-stm32-sdmmc")]
sdmmc::bind(bindings)?;
#[cfg(feature = "dev-stm32-i2c")]
i2c::bind(bindings)?;
#[cfg(feature = "dev-stm32-spi")]
spi::bind(bindings)?;
#[cfg(feature = "dev-stm32-octospi")]
octospi::bind(bindings)?;
Ok(())
}
#[must_use]
pub fn schemas() -> Vec<ClassSchema> {
#[allow(unused_mut)]
let mut out: Vec<ClassSchema> = alloc::vec![];
#[cfg(feature = "dev-stm32")]
out.extend([gpio::schema(), usart::schema()]);
#[cfg(feature = "dev-stm32-sdmmc")]
out.push(sdmmc::schema());
#[cfg(feature = "dev-stm32-i2c")]
out.push(i2c::schema());
#[cfg(feature = "dev-stm32-spi")]
out.push(spi::schema());
#[cfg(feature = "dev-stm32-octospi")]
out.push(octospi::schema());
out
}