5 个版本
0.1.4 | 2020年11月7日 |
---|---|
0.1.3 | 2020年3月19日 |
0.1.2 | 2020年3月12日 |
0.1.1 | 2020年2月22日 |
0.1.0 | 2020年2月2日 |
#660 在 硬件支持
300KB
8K SLoC
btle - Rust 蓝牙低功耗驱动程序
Cross-platform Bluetooth Low Energy library for Rust。支持中心、外围、广播和观察GAP角色。还支持自定义设备驱动程序,以启用对自定义平台(嵌入式等)的支持。
非常WIP。
目前支持的平台
- Linux (BlueZ)
- HCI
- USB(使用
libusb
) - 代理
- Windows 10 / UWP
- Windows 7(必须使用
libusb
驱动程序) - macOS
- iOS
- Android
任何缺少驱动程序的平台仍然可以编译,只是没有内置的方式与BLE控制器通信。
目前支持的GAP角色
- 观察者(接收广告)
- 广播者(发送广告)
- (WIP)中心(启动GATT连接)
- (WIP)外围(GATT可连接)
WIP 示例(API可能以后会更改)
pub async fn dump_adapter<A: btle::hci::adapter::Adapter>(adapter: A) -> Result<(), CLIError> {
let adapter = btle::hci::adapters::Adapter::new(adapter);
let mut le = adapter.le();
println!("resetting adapter...");
le.adapter.reset().await?;
println!("settings scan parameters...");
// Set BLE Scan parameters (when to scan, how long, etc)
le.set_scan_parameters(btle::le::scan::ScanParameters::DEFAULT)
.await?;
// Enable scanning for advertisement packets.
le.set_scan_enable(true, false).await?;
println!("waiting for advertisements...");
// Create the advertisement stream from the LEAdapter.
let mut stream = le.advertisement_stream::<Box<[ReportInfo]>>().await?;
// Pin it.
let mut stream = unsafe { Pin::new_unchecked(&mut stream) };
loop {
// Asynchronously iterate through the stream and print each advertisement report.
while let Some(report) = stream.next().await {
println!("report: {:?}", &report);
}
}
}
依赖项
~0.5–2.4MB
~41K SLoC