# uldaq-sys
Raw FFI bindings to the [uldaq](https://github.com/mccdaq/uldaq) C++ library,
used for interfacing with Measurement Computing / Data Translation DAQ devices
(e.g. the DT9837 series) on Linux.
This crate is the low-level companion of the safe [`uldaqrs`](../uldaqrs)
crate. It is not intended to be used directly. For a safe, ergonomic API,
see `uldaqrs`.
## Important notes
The code is **copied** from the [uldaq](https://github.com/mccdaq/uldaq)
repository, with all net devices code removed. Secondly, it is capable of
compiling under MinGW, although we still have to implement support for MSVC.
This is considered (near) future work.
The `vendor-uldaq.sh` script now requires more manual adjustments, however, the
last change to the original repository is from 4 years ago at the time of this
commit (d.d. 2026 Aug 24th).
## Building
This crate compiles and statically links the uldaq library from the vendored
source in `uldaq/` (MIT licensed, Copyright (c) 2018 Measurement Computing).
The vendored copy can be refreshed with the `vendor-uldaq.sh` script in the
repository root.
Prerequisites:
- `libusb-1.0` (headers and library). On Debian/Ubuntu:
`sudo apt install libusb-1.0-0-dev`
- A C++14 compiler.
## Regenerating the bindings
The bindings in `src/lib.rs` are generated at build time by `bindgen` from
`uldaq/src/uldaq.h`; no manual editing is required.