Skip to content

Commit d93ab30

Browse files
committed
zephyr: device: gpio: Add a few more methods
Add methods for get and set of pin logical values. Signed-off-by: David Brown <[email protected]>
1 parent 7a209c8 commit d93ab30

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

zephyr/src/device/gpio.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
//! pervasively throughout Zephyr device drivers. As such, most of the calls in this module are
88
//! unsafe.
99
10+
use core::ffi::c_int;
11+
1012
use crate::raw;
1113
use super::Unique;
1214

@@ -125,4 +127,18 @@ impl GpioPin {
125127
raw::gpio_pin_toggle_dt(&self.pin);
126128
}
127129
}
130+
131+
/// Set the logical level of the pin.
132+
pub unsafe fn set(&mut self, _token: &mut GpioToken, value: bool) {
133+
raw::gpio_pin_set_dt(&self.pin, value as c_int);
134+
}
135+
136+
/// Read the logical level of the pin.
137+
pub unsafe fn get(&mut self, _token: &mut GpioToken) -> bool {
138+
match raw::gpio_pin_get_dt(&self.pin) {
139+
0 => false,
140+
1 => true,
141+
_ => panic!("TODO: Handle gpio get error"),
142+
}
143+
}
128144
}

0 commit comments

Comments
 (0)