Skip to content

Commit 26acab6

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 dec0074 commit 26acab6

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

zephyr/src/device/gpio.rs

+16
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

@@ -117,4 +119,18 @@ impl GpioPin {
117119
raw::gpio_pin_toggle_dt(&self.pin);
118120
}
119121
}
122+
123+
/// Set the logical level of the pin.
124+
pub unsafe fn set(&mut self, _token: &mut GpioToken, value: bool) {
125+
raw::gpio_pin_set_dt(&self.pin, value as c_int);
126+
}
127+
128+
/// Read the logical level of the pin.
129+
pub unsafe fn get(&mut self, _token: &mut GpioToken) -> bool {
130+
match raw::gpio_pin_get_dt(&self.pin) {
131+
0 => false,
132+
1 => true,
133+
_ => panic!("TODO: Handle gpio get error"),
134+
}
135+
}
120136
}

0 commit comments

Comments
 (0)