btleplug/bluez/
manager.rs1use super::adapter::Adapter;
2use crate::{api, Result};
3use async_trait::async_trait;
4use bluez_async::BluetoothSession;
5
6#[derive(Clone, Debug)]
8pub struct Manager {
9 session: BluetoothSession,
10}
11
12impl Manager {
13 pub async fn new() -> Result<Self> {
14 let (_, session) = BluetoothSession::new().await?;
15 Ok(Self { session })
16 }
17}
18
19#[async_trait]
20impl api::Manager for Manager {
21 type Adapter = Adapter;
22
23 async fn adapters(&self) -> Result<Vec<Adapter>> {
24 let adapters = self.session.get_adapters().await?;
25 Ok(adapters
26 .into_iter()
27 .map(|adapter| Adapter::new(self.session.clone(), adapter.id))
28 .collect())
29 }
30}