No description
This fixes a race condition for users that drop the Endpoint immediately after a transfer completes, and then might immediately try and re-open the endpoint. The event thread still held an Arc reference after marking the transfer complete, and so the endpoint was still considered in use and re-opening occasionally failed. It also means the `Notify` lock is not held when calling the waker function, which fixes a deadlock if it were to call back into endpoint methods. |
||
|---|---|---|
| .github/workflows | ||
| examples | ||
| fuzz | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
nusb
A new pure-Rust library for cross-platform low-level access to USB devices.
nusb supports Windows, macOS, and Linux, and provides both async and
blocking APIs for listing and watching USB devices, reading descriptor
details, opening and managing devices and interfaces, and performing
transfers on control, bulk, and interrupt endpoints.
Compared to rusb and libusb
- Pure Rust, no dependency on libusb or any other C library.
- Async-first, while not requiring an async runtime.
- No context object. You just open a device. There is a global event loop thread that is started when opening the first device.
- Thinner layer over OS APIs, with less internal state.
License
MIT or Apache 2.0, at your option