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 在 硬件支持
80 每月下载量
用于 2 crate
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