2 个版本
使用旧的 Rust 2015
0.1.1 | 2018年6月27日 |
---|---|
0.1.0 | 2018年6月12日 |
在 硬件支持 中排名第 1360
每月下载量 28
22KB
362 代码行
Rust gpiochip
Rust gpiochip
旨在在不需要封装任何C代码或直接进行底层系统调用的前提下,为用户提供对 Linux gpiochip 设备的完全访问。
示例
extern crate gpiochip as gpio;
/// Print information about first gpiochip
fn main() {
let chip = gpio::GpioChip::new("/dev/gpiochip0").unwrap();
println!("GPIOChip 0:");
println!(" Name: {:?}", chip.name);
println!(" Label: {:?}", chip.label);
println!(" Lines: {:?}", chip.lines);
println!("");
for i in 0..chip.lines {
let info = chip.info(i).unwrap();
println!(" GPIO {:?}: {:?}", info.gpio, info.name);
println!(" Consumer: {:?}", info.consumer);
println!(" Flags: {:?}", info.flags);
}
}
extern crate gpiochip as gpio;
/// Simple get/set example
fn main() {
let chip = gpio::GpioChip::new("/dev/gpiochip0").unwrap();
let gpio_a = chip.request("gpioA", gpio::RequestFlags::INPUT, 0, 0).unwrap();
let gpio_b = chip.request("gpioA", gpio::RequestFlags::OUTPUT | gpio::RequestFlags::ACTIVE_LOW, 1, 0).unwrap();
let val = gpio_a.get().unwrap();
gpio_b.set(val).unwrap();
}
extern crate gpiochip as gpio;
/// GPIO events
fn main() {
let chip = gpio::GpioChip::new("/dev/gpiochip0").unwrap();
let gpio_a = chip.request_event("gpioA", 0, gpio::RequestFlags::INPUT, gpio::EventRequestFlags::BOTH_EDGES).unwrap();
let gpio_b = chip.request_event("gpioB", 1, gpio::RequestFlags::INPUT, gpio::EventRequestFlags::BOTH_EDGES).unwrap();
let bitmap = gpio::wait_for_event(&[&gpio_a, &gpio_b], 1000).unwrap();
if bitmap & 0b01 == 0b01 {
let event = gpio_a.read().unwrap();
println!("gpioA: event @ {:?} - {:?}", event.timestamp, event.id);
}
if bitmap & 0b10 == 0b10 {
let event = gpio_b.read().unwrap();
println!("gpioB: event @ {:?} - {:?}", event.timestamp, event.id);
}
}
许可证
© 2018 Sebastian Reichel
ISC 许可证
在此授予任何目的(无论是否付费)使用、复制、修改和/或分发此软件的许可,前提是上述版权声明和本许可声明出现在所有副本中。
软件按“原样”提供,作者对此软件不承担任何保证,包括所有明示或暗示的保证,包括适销性和适用性。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用或性能此软件而产生的任何损害(包括但不限于使用、数据或利润损失)负责,无论该损害是因合同、疏忽还是其他侵权行为引起的,无论该损害是否与使用或性能此软件有关。
依赖项
~2MB
~41K SLoC