diff --git a/embassy-nrf/src/saadc.rs b/embassy-nrf/src/saadc.rs index 215f968a7..efcdfb2b1 100644 --- a/embassy-nrf/src/saadc.rs +++ b/embassy-nrf/src/saadc.rs @@ -78,6 +78,29 @@ pub struct ChannelConfig<'d> { phantom: PhantomData<&'d ()>, } +/// A dummy `Input` pin implementation for SAADC peripheral sampling from the +/// internal voltage. +pub struct VddInput; + +unsafe impl Unborrow for VddInput { + type Target = VddInput; + unsafe fn unborrow(self) -> Self::Target { + self + } +} + +impl sealed::Input for VddInput { + #[cfg(not(feature = "nrf9160"))] + fn channel(&self) -> InputChannel { + InputChannel::VDD + } + #[cfg(feature = "nrf9160")] + fn channel(&self) -> InputChannel { + InputChannel::VDDGPIO + } +} +impl Input for VddInput {} + impl<'d> ChannelConfig<'d> { /// Default configuration for single ended channel sampling. pub fn single_ended(input: impl Unborrow + 'd) -> Self {