list_adapters/
list_adapters.rs

1use 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}