Skip to content

Commit e1e3162

Browse files
Morgan RoffMorganR
authored andcommitted
Fix active low behavior of GPIO output pins
1 parent b930d32 commit e1e3162

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/cdev_pin.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,19 @@ impl embedded_hal::digital::OutputPin for CdevPin {
1919
type Error = gpio_cdev::errors::Error;
2020

2121
fn try_set_low(&mut self) -> Result<(), Self::Error> {
22-
self.0.set_value(0)
22+
if self.1 {
23+
self.0.set_value(1)
24+
} else {
25+
self.0.set_value(0)
26+
}
2327
}
2428

2529
fn try_set_high(&mut self) -> Result<(), Self::Error> {
26-
self.0.set_value(1)
30+
if self.1 {
31+
self.0.set_value(0)
32+
} else {
33+
self.0.set_value(1)
34+
}
2735
}
2836
}
2937

src/sysfs_pin.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,19 @@ impl embedded_hal::digital::OutputPin for SysfsPin {
3030
type Error = sysfs_gpio::Error;
3131

3232
fn try_set_low(&mut self) -> Result<(), Self::Error> {
33-
self.0.set_value(0)
33+
if self.0.get_active_low()? {
34+
self.0.set_value(1)
35+
} else {
36+
self.0.set_value(0)
37+
}
3438
}
3539

3640
fn try_set_high(&mut self) -> Result<(), Self::Error> {
37-
self.0.set_value(1)
41+
if self.0.get_active_low()? {
42+
self.0.set_value(0)
43+
} else {
44+
self.0.set_value(1)
45+
}
3846
}
3947
}
4048

0 commit comments

Comments
 (0)