2 releases
0.1.1 | May 23, 2024 |
---|---|
0.1.0 | Feb 20, 2024 |
#1430 in Embedded development
31 downloads per month
305KB
5.5K
SLoC
gpiocdev-embedded-hal
A Rust library implementing embedded-hal traits for GPIO lines on Linux platforms using the GPIO character device using gpiocdev.
Example Usage
Reading line value:
use embedded_hal::digital::InputPin;
// request the line
let mut pin = gpiocdev_embedded_hal::Input::new("/dev/gpiochip0", 23)?;
// get the value
if pin.is_high()? {
println!("Input is high.");
}
Setting a line:
use embedded_hal::digital::OutputPin;
use embedded_hal::digital::PinState;
// request the line
let mut pin = gpiocdev_embedded_hal::Output::new("/dev/gpiochip0", 23, PinState::High)?;
// do something...
// change value later
pin.set_low()?;
Requesting a line by name:
use embedded_hal::digital::InputPin;
let mut pin = gpiocdev_embedded_hal::InputPin::from_name("GPIO23")?;
Waiting for events on a line:
use embedded_hal::digital::InputPin;
use embedded_hal_async::digital::Wait;
// request the line
let mut pin = gpiocdev_embedded_hal::tokio::Input::new("/dev/gpiochip0", 23)?;
// wait for line edge events
pin.wait_for_any_edge().await?;
Working examples can be found in the examples directory.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0.5–11MB
~127K SLoC