aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2022-05-19 07:12:43 +0200
committerGitHub <[email protected]>2022-05-19 07:12:43 +0200
commit220c6c83cbfaaf836070a5b11d69d48848d36fcc (patch)
tree354e0baa32cb705a44017b7037eeeab965caa7e9
parent7743b8e1aeb0d00687ceda407ed30d8c69950ed1 (diff)
parent99c2defa76012e28d1249c206ebe11718aeba3b7 (diff)
Merge pull request #779 from danbev/embassy-rp-toggleable-output-impl
Impl ToggleableOutputPin for embassy-rp Output
-rw-r--r--embassy-rp/src/gpio.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs
index 28dfce476..aa3c3a646 100644
--- a/embassy-rp/src/gpio.rs
+++ b/embassy-rp/src/gpio.rs
@@ -131,6 +131,15 @@ impl<'d, T: Pin> Output<'d, T> {
131 let val = 1 << self.pin.pin(); 131 let val = 1 << self.pin.pin();
132 unsafe { (self.pin.sio_out().value().read() & val) == 0 } 132 unsafe { (self.pin.sio_out().value().read() & val) == 0 }
133 } 133 }
134
135 /// Toggle pin output
136 #[inline]
137 pub fn toggle(&mut self) {
138 let val = 1 << self.pin.pin();
139 unsafe {
140 self.pin.sio_out().value_xor().write_value(val);
141 }
142 }
134} 143}
135 144
136impl<'d, T: Pin> Drop for Output<'d, T> { 145impl<'d, T: Pin> Drop for Output<'d, T> {
@@ -295,6 +304,14 @@ mod eh02 {
295 Ok(self.is_set_low()) 304 Ok(self.is_set_low())
296 } 305 }
297 } 306 }
307
308 impl<'d, T: Pin> embedded_hal_02::digital::v2::ToggleableOutputPin for Output<'d, T> {
309 type Error = Infallible;
310 #[inline]
311 fn toggle(&mut self) -> Result<(), Self::Error> {
312 Ok(self.toggle())
313 }
314 }
298} 315}
299 316
300#[cfg(feature = "unstable-traits")] 317#[cfg(feature = "unstable-traits")]