Skip to content

Commit c5ef641

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 1acce4f commit c5ef641

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

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

0 commit comments

Comments
 (0)