list_adapters/
list_adapters.rs1use std::env;
2
3async fn query_adapter(adapter: &bluer::Adapter) -> bluer::Result<()> {
4 println!(" Address: {}", adapter.address().await?);
5 println!(" Address type: {}", adapter.address_type().await?);
6 println!(" Friendly name: {}", adapter.alias().await?);
7 println!(" Modalias: {:?}", adapter.modalias().await?);
8 println!(" Powered: {:?}", adapter.is_powered().await?);
9 println!(" Discoverabe: {:?}", adapter.is_discoverable().await?);
10 println!(" Pairable: {:?}", adapter.is_pairable().await?);
11 println!(" UUIDs: {:?}", adapter.uuids().await?);
12 println!();
13 println!(" Active adv. instances: {}", adapter.active_advertising_instances().await?);
14 println!(" Supp. adv. instances: {}", adapter.supported_advertising_instances().await?);
15 println!(" Supp. adv. includes: {:?}", adapter.supported_advertising_system_includes().await?);
16 println!(" Adv. capabilites: {:?}", adapter.supported_advertising_capabilities().await?);
17 println!(" Adv. features: {:?}", adapter.supported_advertising_features().await?);
18
19 Ok(())
20}
21
22async fn query_all_adapter_properties(adapter: &bluer::Adapter) -> bluer::Result<()> {
23 let props = adapter.all_properties().await?;
24 for prop in props {
25 println!(" {:?}", &prop);
26 }
27 Ok(())
28}
29
30#[tokio::main(flavor = "current_thread")]
31async fn main() -> bluer::Result<()> {
32 let all_properties = env::args().any(|arg| arg == "--all-properties");
33
34 let session = bluer::Session::new().await?;
35 let adapter_names = session.adapter_names().await?;
36 for adapter_name in adapter_names {
37 println!("Bluetooth adapter {}:", &adapter_name);
38 let adapter = session.adapter(&adapter_name)?;
39 if all_properties {
40 query_all_adapter_properties(&adapter).await?;
41 } else {
42 query_adapter(&adapter).await?;
43 }
44 println!();
45 }
46 Ok(())
47}