Skip to content

Commit 8689441

Browse files
committed
Backport fixing output pin behavior when active-low #61
1 parent 92308cc commit 8689441

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1818
- Set default features to build both sysfs and cdev pin types
1919
- Removed `Pin` export, use `CdevPin` or `SysfsPin`
2020

21+
### Fixed
22+
23+
- Modified `OutputPin` behavior for active-low pins to match `InputPin` behavior.
24+
2125
## [v0.3.0] - 2019-11-25
2226

2327
### Added

src/cdev_pin.rs

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

2121
fn 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 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 hal::digital::v2::OutputPin for SysfsPin {
3030
type Error = sysfs_gpio::Error;
3131

3232
fn 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 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)