pub use self::implementation::*;
#[cfg_attr(esp32, path = "esp32.rs")]
#[cfg_attr(riscv, path = "riscv.rs")]
#[cfg_attr(any(esp32s2, esp32s3), path = "xtensa.rs")]
mod implementation;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Attenuation {
Attenuation0dB = 0b00,
#[cfg(not(esp32c2))]
Attenuation2p5dB = 0b01,
#[cfg(not(esp32c2))]
Attenuation6dB = 0b10,
Attenuation11dB = 0b11,
}
#[cfg(not(esp32))]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AdcCalSource {
Gnd,
Ref,
}
pub trait AdcChannel {
const CHANNEL: u8;
}
pub trait AdcCalScheme<ADCI>: Sized + crate::private::Sealed {
fn new_cal(atten: Attenuation) -> Self;
fn adc_cal(&self) -> u16 {
0
}
fn adc_val(&self, val: u16) -> u16 {
val
}
}
impl crate::private::Sealed for () {}
impl<ADCI> AdcCalScheme<ADCI> for () {
fn new_cal(_atten: Attenuation) -> Self {}
}
#[cfg(not(esp32h2))]
trait AdcCalEfuse {
fn get_init_code(atten: Attenuation) -> Option<u16>;
fn get_cal_mv(atten: Attenuation) -> u16;
fn get_cal_code(atten: Attenuation) -> Option<u16>;
}