safe-ftdi

Purpose

safe-ftdi is a set of (nominally!) safe API bindings to libftdi, implemented as a thin wrapper around libftdi1-sys. Functions from libftdi are implemented in safe-ftdi on an as-needed basis, and they arr named the same as their libftdi counterparts with the ftdi_ prefix stripped.

Documentation on specific functions will come soon, but the example directory contains a reimplementation of mercpcl, my old command-line application to program the flash on the Mercury FPGA development board using the bitbang mode of the FT245.

Prerequisites

libftdi1-sys requires the pkg-config crate, and so transitively safe-ftdi requires it as well. I have tested the bindings on Windows using the MSYS2 environment, and the GNU ABI version of rustc.

Although the library in principle compiles on stable Rust 1.26 or greater, the example provided requires non-lexical lifetimes and the Polonius borrow checker to use the safe-ftdi API ergonomically (i.e. using ? when the Err variant of a Result as an explicit lifetime parameter). Therefore, assume the library is nightly-only for now.

License

Licensed under either of

at your discretion.

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.