use super::adapter::Adapter;
use crate::{api, Result};
use async_trait::async_trait;
use windows::Devices::Radios::{Radio, RadioKind};
#[derive(Clone, Debug)]
pub struct Manager {}
impl Manager {
pub async fn new() -> Result<Self> {
Ok(Self {})
}
}
#[async_trait]
impl api::Manager for Manager {
type Adapter = Adapter;
async fn adapters(&self) -> Result<Vec<Adapter>> {
let radios = Radio::GetRadiosAsync()?.await?;
Ok(radios
.into_iter()
.filter(|radio| radio.Kind() == Ok(RadioKind::Bluetooth))
.map(|_| Adapter::new())
.collect())
}
}