10 个版本

0.4.2 2021年5月10日
0.4.1 2021年5月9日
0.4.0 2021年4月7日
0.3.1 2021年3月28日
0.2.1 2020年9月11日

#1669硬件支持

Download history 2/week @ 2024-04-19 1/week @ 2024-04-26 2/week @ 2024-06-07 2/week @ 2024-06-14 73/week @ 2024-07-26 7/week @ 2024-08-02

80 每月下载量
用于 2 crate

MIT 许可证

58KB
1.5K SLoC

Rust 本地 USB API

受 C http://libusb.info 驱动器启发。

Rust usbapi crate 目前仅支持 Linux。

UsbAPI crate 不依赖于 libusb C API,且是在 Linux 上使用 ioctl/mmap 调用通过 nix 低级 crate 的纯 Rust 实现的。

您可以自由地分叉或发送拉取请求,使其在其他平台上工作。

依赖项

参见 Cargo.toml,我尽量使用最少的依赖项。

Linux 支持的功能

  • 枚举 USB 外设
  • 使用 mmap 缓冲区进行零拷贝。
  • 同步块 API
  • 异步块和控制传输
  • 传输是安全的,在传递给内核后不能被访问
  • 可选:如果启用了 serde 功能,所有描述符都可以序列化。
  • 可选:支持 mio

待办事项

当我开始这个项目时,我对 Rust 还不太熟悉。一些内容将会改变。

  • 清理特质实现以方便移植到其他平台
  • 使用 valgrind 清理不安全代码(如 mmap 等)中的可能泄漏。
  • 添加等时支持
  • 添加中断端点
  • 使用 log crate 替代 eprintln 和 println 进行调试。
  • 如果内核驱动程序加载,claim_interface 将会 panic,因为未实现卸载驱动程序,所以没有实现,如果需要,请随意发送补丁。

对于以下平台,您都可以发送拉取请求

  • 支持 FreeBSD/OpenBSD
  • 支持 NetBSD
  • 支持 Haiku
  • 支持 OSX
  • 支持 Windows

依赖项

~1.7–2.4MB
~48K SLoC