rp: add AdcChannel trait

this is more general than AdcPin and can also cover the temperature
sensor.
This commit is contained in:
pennae 2023-07-21 21:01:56 +02:00
parent 0d8a9b1e7a
commit 48eac0b146

View File

@ -223,21 +223,23 @@ impl interrupt::typelevel::Handler<interrupt::typelevel::ADC_IRQ_FIFO> for Inter
}
mod sealed {
pub trait AdcPin: crate::gpio::sealed::Pin {
pub trait AdcChannel {
fn channel(&mut self) -> u8;
}
}
pub trait AdcPin: sealed::AdcPin + gpio::Pin {}
pub trait AdcChannel: sealed::AdcChannel {}
pub trait AdcPin: AdcChannel + gpio::Pin {}
macro_rules! impl_pin {
($pin:ident, $channel:expr) => {
impl sealed::AdcPin for peripherals::$pin {
impl sealed::AdcChannel for peripherals::$pin {
fn channel(&mut self) -> u8 {
$channel
}
}
impl AdcChannel for peripherals::$pin {}
impl AdcPin for peripherals::$pin {}
};
}