mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-02-04 17:09:34 +00:00
linux-rust: add skeleton for other devices
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
use std::io::Error;
|
||||
use bluer::Adapter;
|
||||
use log::debug;
|
||||
|
||||
pub(crate) async fn find_connected_airpods(adapter: &bluer::Adapter) -> bluer::Result<bluer::Device> {
|
||||
pub(crate) async fn find_connected_airpods(adapter: &Adapter) -> bluer::Result<bluer::Device> {
|
||||
let target_uuid = uuid::Uuid::parse_str("74ec2172-0bad-4d01-8f77-997b2be0722a").unwrap();
|
||||
|
||||
let addrs = adapter.device_addresses().await?;
|
||||
@@ -17,4 +19,23 @@ pub(crate) async fn find_connected_airpods(adapter: &bluer::Adapter) -> bluer::R
|
||||
}
|
||||
}
|
||||
Err(bluer::Error::from(Error::new(std::io::ErrorKind::NotFound, "No connected AirPods found")))
|
||||
}
|
||||
|
||||
pub async fn find_other_managed_devices(adapter: &Adapter, managed_macs: Vec<String>) -> bluer::Result<Vec<bluer::Device>> {
|
||||
let addrs = adapter.device_addresses().await?;
|
||||
let mut devices = Vec::new();
|
||||
for addr in addrs {
|
||||
let device = adapter.device(addr)?;
|
||||
let device_mac = device.address().to_string();
|
||||
let connected = device.is_connected().await.unwrap_or(false);
|
||||
debug!("Checking device: {}, connected: {}", device_mac, connected);
|
||||
if connected && managed_macs.contains(&device_mac) {
|
||||
debug!("Found managed device: {}", device_mac);
|
||||
devices.push(device);
|
||||
}
|
||||
}
|
||||
if !devices.is_empty() {
|
||||
return Ok(devices);
|
||||
}
|
||||
Err(bluer::Error::from(Error::new(std::io::ErrorKind::NotFound, "No other managed devices found")))
|
||||
}
|
||||
Reference in New Issue
Block a user