Impl ToggleableOutputPin for embassy-rp Output

This commit is contained in:
Daniel Bevenius 2022-05-19 05:33:42 +02:00
parent 240bef8c9f
commit da97944322

View File

@ -131,6 +131,16 @@ impl<'d, T: Pin> Output<'d, T> {
let val = 1 << self.pin.pin(); let val = 1 << self.pin.pin();
unsafe { (self.pin.sio_out().value().read() & val) == 0 } unsafe { (self.pin.sio_out().value().read() & val) == 0 }
} }
/// Toggle pin output
#[inline]
pub fn toggle(&mut self) {
if self.is_set_low() {
self.set_high()
} else {
self.set_low()
}
}
} }
impl<'d, T: Pin> Drop for Output<'d, T> { impl<'d, T: Pin> Drop for Output<'d, T> {
@ -295,6 +305,14 @@ mod eh02 {
Ok(self.is_set_low()) Ok(self.is_set_low())
} }
} }
impl<'d, T: Pin> embedded_hal_02::digital::v2::ToggleableOutputPin for Output<'d, T> {
type Error = Infallible;
#[inline]
fn toggle(&mut self) -> Result<(), Self::Error> {
Ok(self.toggle())
}
}
} }
#[cfg(feature = "unstable-traits")] #[cfg(feature = "unstable-traits")]