Here is another version of rust bindings for libgpiod v2.0, based of the next/libgpiod-2.0.
I will be adding testing infrastructure later on, once other bindings are converted to use gpiosim.
All the examples, including gpiomon, are tested now and work just fine.
V2->V3: - Remove naming redundancy, users just need to do this now use libgpiod:{Chip, Direction, LineConfig} now (Bartosz); - Fix lifetime issues between event-buffer and edge-event modules, the event buffer is released after the last edge-event reference is dropped (Bartosz). - Allow edge-event to be copied, and freed later (Bartosz). - Add two separate rust crates, sys and wrapper (Gerard). - Null-terminate the strings passed to libgpiod (Wedson). - Drop unnecessary checks to validate string returned from chip:name/label/path. - Fix SAFETY comments (Wedson). - Drop unnecessary clone() instances (Bartosz).
V1->V2: - Added examples (I tested everything except gpiomon.rs, didn't have right hardware/mock device to test). - Build rust bindings as part of Make, update documentation.
Thanks.
-- Viresh
Viresh Kumar (4): libgpiod: Add libgpiod-sys rust crate libgpiod: Add rust wrapper crate libgpiod: Add rust examples libgpiod: Integrate building of rust bindings with make
.gitignore | 5 + README | 8 +- TODO | 8 - bindings/Makefile.am | 6 + bindings/rust/Cargo.toml | 11 + bindings/rust/Makefile.am | 27 ++ bindings/rust/examples/gpiodetect.rs | 37 +++ bindings/rust/examples/gpiofind.rs | 42 +++ bindings/rust/examples/gpioget.rs | 42 +++ bindings/rust/examples/gpioinfo.rs | 89 ++++++ bindings/rust/examples/gpiomon.rs | 68 +++++ bindings/rust/examples/gpioset.rs | 52 ++++ bindings/rust/libgpiod-sys/Cargo.toml | 12 + bindings/rust/libgpiod-sys/build.rs | 60 ++++ bindings/rust/libgpiod-sys/src/lib.rs | 16 ++ bindings/rust/libgpiod-sys/wrapper.h | 2 + bindings/rust/src/chip.rs | 183 ++++++++++++ bindings/rust/src/edge_event.rs | 103 +++++++ bindings/rust/src/event_buffer.rs | 87 ++++++ bindings/rust/src/info_event.rs | 68 +++++ bindings/rust/src/lib.rs | 280 ++++++++++++++++++ bindings/rust/src/line_config.rs | 391 ++++++++++++++++++++++++++ bindings/rust/src/line_info.rs | 182 ++++++++++++ bindings/rust/src/line_request.rs | 214 ++++++++++++++ bindings/rust/src/request_config.rs | 119 ++++++++ configure.ac | 16 ++ 26 files changed, 2117 insertions(+), 11 deletions(-) create mode 100644 bindings/rust/Cargo.toml create mode 100644 bindings/rust/Makefile.am create mode 100644 bindings/rust/examples/gpiodetect.rs create mode 100644 bindings/rust/examples/gpiofind.rs create mode 100644 bindings/rust/examples/gpioget.rs create mode 100644 bindings/rust/examples/gpioinfo.rs create mode 100644 bindings/rust/examples/gpiomon.rs create mode 100644 bindings/rust/examples/gpioset.rs create mode 100644 bindings/rust/libgpiod-sys/Cargo.toml create mode 100644 bindings/rust/libgpiod-sys/build.rs create mode 100644 bindings/rust/libgpiod-sys/src/lib.rs create mode 100644 bindings/rust/libgpiod-sys/wrapper.h create mode 100644 bindings/rust/src/chip.rs create mode 100644 bindings/rust/src/edge_event.rs create mode 100644 bindings/rust/src/event_buffer.rs create mode 100644 bindings/rust/src/info_event.rs create mode 100644 bindings/rust/src/lib.rs create mode 100644 bindings/rust/src/line_config.rs create mode 100644 bindings/rust/src/line_info.rs create mode 100644 bindings/rust/src/line_request.rs create mode 100644 bindings/rust/src/request_config.rs