#![macro_use] #[cfg_attr(dac_v2, path = "v2.rs")] mod _version; use crate::gpio::NoPin; use crate::peripherals; pub use _version::*; pub(crate) mod sealed { use crate::gpio::OptionalPin; pub trait Instance { fn regs() -> &'static crate::pac::dac::Dac; } pub trait DacPin: OptionalPin {} } pub trait Instance: sealed::Instance + 'static {} pub trait DacPin: sealed::DacPin + 'static {} impl DacPin for NoPin {} impl sealed::DacPin for NoPin {} crate::pac::peripherals!( (dac, $inst:ident) => { impl crate::dac::sealed::Instance for peripherals::$inst { fn regs() -> &'static crate::pac::dac::Dac { &crate::pac::$inst } } impl crate::dac::Instance for peripherals::$inst {} }; ); crate::pac::peripheral_pins!( ($inst:ident, dac, DAC, $pin:ident, OUT1) => { impl DacPin for peripherals::$pin {} impl sealed::DacPin for peripherals::$pin { } }; ($inst:ident, dac, DAC, $pin:ident, OUT2) => { impl DacPin for peripherals::$pin {} impl sealed::DacPin for peripherals::$pin { } }; );