From a2cda688d42e27a10e1132e1d57c1cdace5dc692 Mon Sep 17 00:00:00 2001 From: Kavish Devar Date: Fri, 7 Nov 2025 01:57:14 +0530 Subject: [PATCH] linux-rust: add skeleton for other devices --- linux-rust/Cargo.lock | 68 ++- linux-rust/Cargo.toml | 2 +- linux-rust/assets/icon.png | Bin 0 -> 272655 bytes linux-rust/src/bluetooth/aacp.rs | 67 +-- linux-rust/src/bluetooth/att.rs | 55 +- linux-rust/src/bluetooth/discovery.rs | 23 +- linux-rust/src/bluetooth/le.rs | 35 +- linux-rust/src/bluetooth/managers.rs | 52 ++ linux-rust/src/bluetooth/mod.rs | 3 +- linux-rust/src/{ => devices}/airpods.rs | 40 +- linux-rust/src/devices/enums.rs | 107 ++++ linux-rust/src/devices/mod.rs | 3 + linux-rust/src/devices/nothing.rs | 167 ++++++ linux-rust/src/main.rs | 191 ++++++- linux-rust/src/ui/airpods.rs | 197 +++++++ linux-rust/src/ui/messages.rs | 27 +- linux-rust/src/ui/mod.rs | 4 +- linux-rust/src/ui/nothing.rs | 77 +++ linux-rust/src/ui/tray.rs | 6 +- linux-rust/src/ui/window.rs | 663 ++++++++++++++++-------- 20 files changed, 1449 insertions(+), 338 deletions(-) create mode 100644 linux-rust/assets/icon.png create mode 100644 linux-rust/src/bluetooth/managers.rs rename linux-rust/src/{ => devices}/airpods.rs (88%) create mode 100644 linux-rust/src/devices/enums.rs create mode 100644 linux-rust/src/devices/mod.rs create mode 100644 linux-rust/src/devices/nothing.rs create mode 100644 linux-rust/src/ui/airpods.rs create mode 100644 linux-rust/src/ui/nothing.rs diff --git a/linux-rust/Cargo.lock b/linux-rust/Cargo.lock index 398ac3f..b2374fc 100644 --- a/linux-rust/Cargo.lock +++ b/linux-rust/Cargo.lock @@ -548,6 +548,12 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "byteorder-lite" version = "0.1.0" @@ -1822,6 +1828,7 @@ dependencies = [ "iced_renderer", "iced_widget", "iced_winit", + "image 0.24.9", "thiserror", ] @@ -1885,6 +1892,8 @@ dependencies = [ "half", "iced_core", "iced_futures", + "image 0.24.9", + "kamadak-exif", "log", "once_cell", "raw-window-handle", @@ -1996,6 +2005,24 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-traits", + "png 0.17.16", + "qoi", + "tiff 0.9.1", +] + [[package]] name = "image" version = "0.25.8" @@ -2015,7 +2042,7 @@ dependencies = [ "ravif", "rayon", "rgb", - "tiff", + "tiff 0.10.3", "zune-core", "zune-jpeg", ] @@ -2039,7 +2066,7 @@ dependencies = [ "ab_glyph", "approx", "getrandom 0.2.16", - "image", + "image 0.25.8", "itertools", "nalgebra", "num", @@ -2170,6 +2197,15 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" +dependencies = [ + "rayon", +] + [[package]] name = "js-sys" version = "0.3.81" @@ -2180,6 +2216,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kamadak-exif" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +dependencies = [ + "mutate_once", +] + [[package]] name = "khronos-egl" version = "6.0.0" @@ -2334,7 +2379,7 @@ dependencies = [ "futures", "hex", "iced", - "image", + "image 0.25.8", "imageproc", "ksni", "libpulse-binding", @@ -2504,6 +2549,12 @@ dependencies = [ "pxfm", ] +[[package]] +name = "mutate_once" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d2233c9842d08cfe13f9eac96e207ca6a2ea10b80259ebe8ad0268be27d2af" + [[package]] name = "naga" version = "0.19.2" @@ -4116,6 +4167,17 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + [[package]] name = "tiff" version = "0.10.3" diff --git a/linux-rust/Cargo.toml b/linux-rust/Cargo.toml index 644b6d6..9251ada 100644 --- a/linux-rust/Cargo.toml +++ b/linux-rust/Cargo.toml @@ -11,7 +11,7 @@ uuid = "1.18.1" log = "0.4.28" dbus = "0.9.9" hex = "0.4.3" -iced = {version = "0.13.1", features = ["tokio"]} +iced = { version = "0.13.1", features = ["tokio", "image"] } libpulse-binding = "2.30.1" ksni = "0.3.1" image = "0.25.8" diff --git a/linux-rust/assets/icon.png b/linux-rust/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..825ac7a4012038d53100aedcaf86f3ffa2a324dd GIT binary patch literal 272655 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%0D_JLKfOri$0VG-fRWDo} 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… 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

ChR$qrfj?4r_Z?5ve+8IzC8<_?%Pgm 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 iB@6t&PUgvN+skdfk#wAXpaT3mdE(5kMZaA5, -} - pub struct AACPManagerState { pub sender: Option>>, pub control_command_status_list: Vec, @@ -647,7 +615,7 @@ impl AACPManager { strings.push(s.to_string()); } } - strings.remove(0); // Remove the first empty string as per comment + strings.remove(0); let info = AirPodsInformation { name: strings.get(0).cloned().unwrap_or_default(), model_number: strings.get(1).cloned().unwrap_or_default(), @@ -660,6 +628,10 @@ impl AACPManager { left_serial_number: strings.get(8).cloned().unwrap_or_default(), right_serial_number: strings.get(9).cloned().unwrap_or_default(), version3: strings.get(10).cloned().unwrap_or_default(), + le_keys: AirPodsLEKeys { + irk: "".to_string(), + enc_key: "".to_string(), + }, }; let mut state = self.state.lock().await; if let Some(mac) = state.airpods_mac { @@ -715,12 +687,29 @@ impl AACPManager { let device_data = state.devices.entry(mac_str.clone()).or_insert(DeviceData { name: mac_str.clone(), type_: DeviceType::AirPods, - le: LEData { irk: "".to_string(), enc_key: "".to_string() }, information: None, }); match kt { - ProximityKeyType::Irk => device_data.le.irk = hex::encode(key_data), - ProximityKeyType::EncKey => device_data.le.enc_key = hex::encode(key_data), + ProximityKeyType::Irk => { + match device_data.information.as_mut() { + Some(DeviceInformation::AirPods(info)) => { + info.le_keys.irk = hex::encode(key_data); + } + _ => { + error!("Device information is not AirPods for adding LE IRK."); + } + } + } + ProximityKeyType::EncKey => { + match device_data.information.as_mut() { + Some(DeviceInformation::AirPods(info)) => { + info.le_keys.enc_key = hex::encode(key_data); + } + _ => { + error!("Device information is not AirPods for adding LE encryption key."); + } + } + } } } } diff --git a/linux-rust/src/bluetooth/att.rs b/linux-rust/src/bluetooth/att.rs index c770139..88fd37e 100644 --- a/linux-rust/src/bluetooth/att.rs +++ b/linux-rust/src/bluetooth/att.rs @@ -16,29 +16,34 @@ const OPCODE_READ_REQUEST: u8 = 0x0A; const OPCODE_WRITE_REQUEST: u8 = 0x12; const OPCODE_HANDLE_VALUE_NTF: u8 = 0x1B; const OPCODE_WRITE_RESPONSE: u8 = 0x13; +const RESPONSE_TIMEOUT: u64 = 5000; #[repr(u16)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum ATTHandles { - Transparency = 0x18, - LoudSoundReduction = 0x1B, - HearingAid = 0x2A, + AirPodsTransparency = 0x18, + AirPodsLoudSoundReduction = 0x1B, + AirPodsHearingAid = 0x2A, + NothingEverything = 0x8002, + NothingEverythingRead = 0x8005 // for some reason, and not the same as the write handle } #[repr(u16)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum ATTCCCDHandles { - Transparency = ATTHandles::Transparency as u16 + 1, - LoudSoundReduction = ATTHandles::LoudSoundReduction as u16 + 1, - HearingAid = ATTHandles::HearingAid as u16 + 1, + Transparency = ATTHandles::AirPodsTransparency as u16 + 1, + LoudSoundReduction = ATTHandles::AirPodsLoudSoundReduction as u16 + 1, + HearingAid = ATTHandles::AirPodsHearingAid as u16 + 1, } impl From for ATTCCCDHandles { fn from(handle: ATTHandles) -> Self { match handle { - ATTHandles::Transparency => ATTCCCDHandles::Transparency, - ATTHandles::LoudSoundReduction => ATTCCCDHandles::LoudSoundReduction, - ATTHandles::HearingAid => ATTCCCDHandles::HearingAid, + ATTHandles::AirPodsTransparency => ATTCCCDHandles::Transparency, + ATTHandles::AirPodsLoudSoundReduction => ATTCCCDHandles::LoudSoundReduction, + ATTHandles::AirPodsHearingAid => ATTCCCDHandles::HearingAid, + ATTHandles::NothingEverything => panic!("No CCCD for NothingEverything handle"), // we don't request it + ATTHandles::NothingEverythingRead => panic!("No CCD for NothingEverythingRead handle") // it sends notifications without CCCD } } } @@ -46,18 +51,13 @@ impl From for ATTCCCDHandles { struct ATTManagerState { sender: Option>>, listeners: HashMap>>>, - responses: mpsc::UnboundedReceiver>, - response_tx: mpsc::UnboundedSender>, } impl ATTManagerState { fn new() -> Self { - let (tx, rx) = mpsc::unbounded_channel(); ATTManagerState { sender: None, - listeners: HashMap::new(), - responses: rx, - response_tx: tx, + listeners: HashMap::new() } } } @@ -65,13 +65,18 @@ impl ATTManagerState { #[derive(Clone)] pub struct ATTManager { state: Arc>, + response_rx: Arc>>>, + response_tx: mpsc::UnboundedSender>, tasks: Arc>>, } impl ATTManager { pub fn new() -> Self { + let (tx, rx) = mpsc::unbounded_channel(); ATTManager { state: Arc::new(Mutex::new(ATTManagerState::new())), + response_rx: Arc::new(Mutex::new(rx)), + response_tx: tx, tasks: Arc::new(Mutex::new(JoinSet::new())), } } @@ -184,11 +189,18 @@ impl ATTManager { } async fn read_response(&self) -> Result> { - let mut state = self.state.lock().await; - match tokio::time::timeout(Duration::from_millis(2000), state.responses.recv()).await { + debug!("Waiting for response..."); + let mut rx = self.response_rx.lock().await; + match tokio::time::timeout(Duration::from_millis(RESPONSE_TIMEOUT), rx.recv()).await { Ok(Some(resp)) => Ok(resp), - Ok(None) => Err(Error::from(std::io::Error::new(std::io::ErrorKind::UnexpectedEof, "Response channel closed"))), - Err(_) => Err(Error::from(std::io::Error::new(std::io::ErrorKind::TimedOut, "Response timeout"))), + Ok(None) => Err(Error::from(std::io::Error::new( + std::io::ErrorKind::UnexpectedEof, + "Response channel closed" + ))), + Err(_) => Err(Error::from(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "Response timeout" + ))), } } } @@ -217,10 +229,11 @@ async fn recv_thread(manager: ATTManager, sp: Arc) { let _ = listener.send(value.clone()); } } + } else if data[0] == OPCODE_WRITE_RESPONSE { + let _ = manager.response_tx.send(vec![]); } else { // Response - let state = manager.state.lock().await; - let _ = state.response_tx.send(data[1..].to_vec()); + let _ = manager.response_tx.send(data[1..].to_vec()); } } Err(e) => { diff --git a/linux-rust/src/bluetooth/discovery.rs b/linux-rust/src/bluetooth/discovery.rs index 6c56678..b6d0e17 100644 --- a/linux-rust/src/bluetooth/discovery.rs +++ b/linux-rust/src/bluetooth/discovery.rs @@ -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 { +pub(crate) async fn find_connected_airpods(adapter: &Adapter) -> bluer::Result { 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) -> bluer::Result> { + 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"))) } \ No newline at end of file diff --git a/linux-rust/src/bluetooth/le.rs b/linux-rust/src/bluetooth/le.rs index 0331e2f..7d80c15 100644 --- a/linux-rust/src/bluetooth/le.rs +++ b/linux-rust/src/bluetooth/le.rs @@ -1,4 +1,3 @@ -use std::cmp::PartialEq; use bluer::monitor::{Monitor, MonitorEvent, Pattern}; use bluer::{Address, Session}; use aes::Aes128; @@ -14,7 +13,7 @@ use std::sync::Arc; use tokio::sync::Mutex; use crate::bluetooth::aacp::BatteryStatus; use crate::ui::tray::MyTray; -use crate::bluetooth::aacp::{DeviceData, DeviceType}; +use crate::devices::enums::{DeviceData, DeviceInformation, DeviceType}; use crate::utils::{get_devices_path, get_preferences_path, ah}; fn decrypt(key: &[u8; 16], data: &[u8; 16]) -> [u8; 16] { @@ -43,14 +42,6 @@ fn verify_rpa(addr: &str, irk: &[u8; 16]) -> bool { hash == computed_hash } -impl PartialEq for DeviceType { - fn eq(&self, other: &Self) -> bool { - match (self, other) { - (DeviceType::AirPods, DeviceType::AirPods) => true - } - } -} - pub async fn start_le_monitor(tray_handle: Option>) -> bluer::Result<()> { let session = Session::new().await?; let adapter = session.default_adapter().await?; @@ -107,15 +98,17 @@ pub async fn start_le_monitor(tray_handle: Option>) -> blue let mut found_mac = None; for (airpods_mac, device_data) in &all_devices { if device_data.type_ == DeviceType::AirPods { - if let Ok(irk_bytes) = hex::decode(&device_data.le.irk) { - if irk_bytes.len() == 16 { - let irk: [u8; 16] = irk_bytes.as_slice().try_into().unwrap(); - debug!("Verifying RPA {} for airpods MAC {} with IRK {}", addr_str, airpods_mac, device_data.le.irk); - if verify_rpa(&addr_str, &irk) { - info!("Matched our device ({}) with the irk for {}", addr, airpods_mac); - verified_macs.insert(addr, airpods_mac.clone()); - found_mac = Some(airpods_mac.clone()); - break; + if let Some(DeviceInformation::AirPods(info)) = &device_data.information { + if let Ok(irk_bytes) = hex::decode(&info.le_keys.irk) { + if irk_bytes.len() == 16 { + let irk: [u8; 16] = irk_bytes.as_slice().try_into().unwrap(); + debug!("Verifying RPA {} for airpods MAC {} with IRK {}", addr_str, airpods_mac, info.le_keys.irk); + if verify_rpa(&addr_str, &irk) { + info!("Matched our device ({}) with the irk for {}", addr, airpods_mac); + verified_macs.insert(addr, airpods_mac.clone()); + found_mac = Some(airpods_mac.clone()); + break; + } } } } @@ -133,8 +126,8 @@ pub async fn start_le_monitor(tray_handle: Option>) -> blue if let Some(ref mac) = matched_airpods_mac { if let Some(device_data) = all_devices.get(mac) { - if !device_data.le.enc_key.is_empty() { - if let Ok(enc_key_bytes) = hex::decode(&device_data.le.enc_key) { + if let Some(DeviceInformation::AirPods(info)) = &device_data.information { + if let Ok(enc_key_bytes) = hex::decode(&info.le_keys.enc_key) { if enc_key_bytes.len() == 16 { matched_enc_key = Some(enc_key_bytes.as_slice().try_into().unwrap()); } diff --git a/linux-rust/src/bluetooth/managers.rs b/linux-rust/src/bluetooth/managers.rs new file mode 100644 index 0000000..25cf630 --- /dev/null +++ b/linux-rust/src/bluetooth/managers.rs @@ -0,0 +1,52 @@ +use std::collections::HashMap; +use std::sync::Arc; +use crate::bluetooth::aacp::AACPManager; +use crate::bluetooth::att::ATTManager; + +pub enum BluetoothManager { + AACP(Arc), + ATT(Arc), +} + +pub struct DeviceManagers { + att: Option>, + aacp: Option>, +} + +impl DeviceManagers { + fn new() -> Self { + Self { att: None, aacp: None } + } + + fn with_aacp(aacp: AACPManager) -> Self { + Self { att: None, aacp: Some(Arc::new(aacp)) } + } + + fn with_att(att: ATTManager) -> Self { + Self { att: Some(Arc::new(att)), aacp: None } + } +} + +pub struct BluetoothDevices { + devices: HashMap, +} + +impl BluetoothDevices { + fn new() -> Self { + Self { devices: HashMap::new() } + } + + fn add_aacp(&mut self, mac: String, manager: AACPManager) { + self.devices + .entry(mac) + .or_insert_with(DeviceManagers::new) + .aacp = Some(Arc::new(manager)); + } + + fn add_att(&mut self, mac: String, manager: ATTManager) { + self.devices + .entry(mac) + .or_insert_with(DeviceManagers::new) + .att = Some(Arc::new(manager)); + } +} diff --git a/linux-rust/src/bluetooth/mod.rs b/linux-rust/src/bluetooth/mod.rs index d628d9e..dd4bd55 100644 --- a/linux-rust/src/bluetooth/mod.rs +++ b/linux-rust/src/bluetooth/mod.rs @@ -1,4 +1,5 @@ pub(crate) mod discovery; pub mod aacp; pub mod att; -pub mod le; \ No newline at end of file +pub mod le; +pub mod managers; \ No newline at end of file diff --git a/linux-rust/src/airpods.rs b/linux-rust/src/devices/airpods.rs similarity index 88% rename from linux-rust/src/airpods.rs rename to linux-rust/src/devices/airpods.rs index 21ebed3..71a533a 100644 --- a/linux-rust/src/airpods.rs +++ b/linux-rust/src/devices/airpods.rs @@ -1,4 +1,4 @@ -use crate::bluetooth::aacp::{AACPManager, ProximityKeyType, AACPEvent}; +use crate::bluetooth::aacp::{AACPManager, ProximityKeyType, AACPEvent, AirPodsLEKeys}; use crate::bluetooth::aacp::ControlCommandIdentifiers; // use crate::bluetooth::att::ATTManager; use crate::media_controller::MediaController; @@ -6,20 +6,26 @@ use bluer::Address; use log::{debug, info, error}; use std::sync::Arc; use ksni::Handle; +use serde::{Deserialize, Serialize}; use tokio::sync::Mutex; use tokio::time::{sleep, Duration}; use crate::ui::tray::MyTray; -use crate::ui::messages::UIMessage; +use crate::ui::messages::BluetoothUIMessage; pub struct AirPodsDevice { pub mac_address: Address, pub aacp_manager: AACPManager, // pub att_manager: ATTManager, pub media_controller: Arc>, + // pub command_tx: Option)>>, } impl AirPodsDevice { - pub async fn new(mac_address: Address, tray_handle: Option>, ui_tx: tokio::sync::mpsc::UnboundedSender) -> Self { + pub async fn new( + mac_address: Address, + tray_handle: Option>, + ui_tx: tokio::sync::mpsc::UnboundedSender, + ) -> Self { info!("Creating new AirPodsDevice for {}", mac_address); let mut aacp_manager = AACPManager::new(); aacp_manager.connect(mac_address).await; @@ -146,8 +152,9 @@ impl AirPodsDevice { let aacp_manager_clone_events = aacp_manager.clone(); let local_mac_events = local_mac.clone(); + let ui_tx_clone = ui_tx.clone(); + let command_tx_clone = command_tx.clone(); tokio::spawn(async move { - let ui_tx_clone = ui_tx.clone(); while let Some(event) = rx.recv().await { let event_clone = event.clone(); match event { @@ -182,12 +189,12 @@ impl AirPodsDevice { } debug!("Updated tray with new battery info"); - let _ = ui_tx_clone.send(UIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); + let _ = ui_tx_clone.send(BluetoothUIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); debug!("Sent BatteryInfo event to UI"); } AACPEvent::ControlCommand(status) => { debug!("Received ControlCommand event: {:?}", status); - let _ = ui_tx_clone.send(UIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); + let _ = ui_tx_clone.send(BluetoothUIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); debug!("Sent ControlCommand event to UI"); } AACPEvent::ConversationalAwareness(status) => { @@ -221,14 +228,14 @@ impl AirPodsDevice { } AACPEvent::OwnershipToFalseRequest => { info!("Received ownership to false request. Setting ownership to false and pausing media."); - let _ = command_tx.send((ControlCommandIdentifiers::OwnsConnection, vec![0x00])); + let _ = command_tx_clone.send((ControlCommandIdentifiers::OwnsConnection, vec![0x00])); let controller = mc_clone.lock().await; controller.pause_all_media().await; controller.deactivate_a2dp_profile().await; } _ => { debug!("Received unhandled AACP event: {:?}", event); - let _ = ui_tx_clone.send(UIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); + let _ = ui_tx_clone.send(BluetoothUIMessage::AACPUIEvent(mac_address.to_string(), event_clone)); debug!("Sent unhandled AACP event to UI"); } } @@ -240,6 +247,23 @@ impl AirPodsDevice { aacp_manager, // att_manager, media_controller, + // command_tx: Some(command_tx.clone()), } } } + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct AirPodsInformation { + pub name: String, + pub model_number: String, + pub manufacturer: String, + pub serial_number: String, + pub version1: String, + pub version2: String, + pub hardware_revision: String, + pub updater_identifier: String, + pub left_serial_number: String, + pub right_serial_number: String, + pub version3: String, + pub le_keys: AirPodsLEKeys +} \ No newline at end of file diff --git a/linux-rust/src/devices/enums.rs b/linux-rust/src/devices/enums.rs new file mode 100644 index 0000000..846d436 --- /dev/null +++ b/linux-rust/src/devices/enums.rs @@ -0,0 +1,107 @@ +use std::fmt::Display; +use serde::{Deserialize, Serialize}; +use crate::devices::airpods::AirPodsInformation; +use crate::devices::nothing::NothingInformation; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(PartialEq)] +pub enum DeviceType { + AirPods, + Nothing +} + +impl Display for DeviceType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + DeviceType::AirPods => write!(f, "AirPods"), + DeviceType::Nothing => write!(f, "Nothing"), + } + } +} + + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "kind", content = "data")] +pub enum DeviceInformation { + AirPods(AirPodsInformation), + Nothing(NothingInformation) +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DeviceData { + pub name: String, + pub type_: DeviceType, + pub information: Option, +} + + +#[derive(Clone, Debug)] +pub enum DeviceState { + AirPods(AirPodsState), + Nothing(NothingState), +} + +impl Display for DeviceState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + DeviceState::AirPods(_) => write!(f, "AirPods State"), + DeviceState::Nothing(_) => write!(f, "Nothing State"), + } + } +} + +#[derive(Clone, Debug)] +pub struct AirPodsState { + pub conversation_awareness_enabled: bool, +} + +#[derive(Clone, Debug)] +pub struct NothingState { + pub anc_mode: NothingAncMode, +} + +#[derive(Clone, Debug)] +pub enum NothingAncMode { + Off, + LowNoiseCancellation, + MidNoiseCancellation, + HighNoiseCancellation, + AdaptiveNoiseCancellation, + Transparency +} + +impl Display for NothingAncMode { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + NothingAncMode::Off => write!(f, "Off"), + NothingAncMode::LowNoiseCancellation => write!(f, "Low Noise Cancellation"), + NothingAncMode::MidNoiseCancellation => write!(f, "Mid Noise Cancellation"), + NothingAncMode::HighNoiseCancellation => write!(f, "High Noise Cancellation"), + NothingAncMode::AdaptiveNoiseCancellation => write!(f, "Adaptive Noise Cancellation"), + NothingAncMode::Transparency => write!(f, "Transparency"), + } + } +} +impl NothingAncMode { + pub fn from_byte(value: u8) -> Self { + match value { + 0x03 => NothingAncMode::LowNoiseCancellation, + 0x02 => NothingAncMode::MidNoiseCancellation, + 0x01 => NothingAncMode::HighNoiseCancellation, + 0x04 => NothingAncMode::AdaptiveNoiseCancellation, + 0x07 => NothingAncMode::Transparency, + 0x05 => NothingAncMode::Off, + _ => NothingAncMode::Off, + } + } + pub fn to_byte(&self) -> u8 { + match self { + NothingAncMode::LowNoiseCancellation => 0x03, + NothingAncMode::MidNoiseCancellation => 0x02, + NothingAncMode::HighNoiseCancellation => 0x01, + NothingAncMode::AdaptiveNoiseCancellation => 0x04, + NothingAncMode::Transparency => 0x07, + NothingAncMode::Off => 0x05, + } + } +} \ No newline at end of file diff --git a/linux-rust/src/devices/mod.rs b/linux-rust/src/devices/mod.rs new file mode 100644 index 0000000..d40c1cf --- /dev/null +++ b/linux-rust/src/devices/mod.rs @@ -0,0 +1,3 @@ +pub mod airpods; +pub mod enums; +pub(crate) mod nothing; \ No newline at end of file diff --git a/linux-rust/src/devices/nothing.rs b/linux-rust/src/devices/nothing.rs new file mode 100644 index 0000000..1246270 --- /dev/null +++ b/linux-rust/src/devices/nothing.rs @@ -0,0 +1,167 @@ +use std::collections::HashMap; +use std::time::Duration; +use bluer::Address; +use log::{debug, info}; +use serde::{Deserialize, Serialize}; +use tokio::sync::mpsc; +use tokio::time::sleep; +use crate::bluetooth::att::{ATTHandles, ATTManager}; +use crate::devices::enums::{DeviceData, DeviceInformation, DeviceType}; +use crate::ui::messages::BluetoothUIMessage; +use crate::utils::get_devices_path; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct NothingInformation{ + pub serial_number: String, + pub firmware_version: String +} + +pub struct NothingDevice{ + pub att_manager: ATTManager, + pub information: NothingInformation +} + +impl NothingDevice{ + pub async fn new( + mac_address: Address, + ui_tx: mpsc::UnboundedSender + ) -> Self { + let mut att_manager = ATTManager::new(); + att_manager.connect(mac_address).await.expect("Failed to connect"); + + let (tx, mut rx) = mpsc::unbounded_channel::>(); + + att_manager.register_listener( + ATTHandles::NothingEverythingRead, + tx + ).await; + + let devices: HashMap = + std::fs::read_to_string(get_devices_path()) + .ok() + .and_then(|s| serde_json::from_str(&s).ok()) + .unwrap_or_default(); + let device_key = mac_address.to_string(); + let information = if let Some(device_data) = devices.get(&device_key) { + let info = device_data.information.clone(); + if let Some(DeviceInformation::Nothing(ref nothing_info)) = info { + nothing_info.clone() + } else { + NothingInformation{ + serial_number: String::new(), + firmware_version: String::new() + } + } + } else { + NothingInformation{ + serial_number: String::new(), + firmware_version: String::new() + } + }; + + // Request version information + att_manager.write( + ATTHandles::NothingEverything, + &[ + 0x55, 0x20, + 0x01, 0x42, + 0xC0, 0x00, + 0x00, 0x00, + 0x00, 0x00 // something, idk + ] + ).await.expect("Failed to write"); + + sleep(Duration::from_millis(100)).await; + + // Request serial number + att_manager.write( + ATTHandles::NothingEverything, + &[ + 0x55, 0x20, + 0x01, 0x06, + 0xC0, 0x00, + 0x00, 0x13, + 0x00, 0x00 + ] + ).await.expect("Failed to write"); + + // let ui_tx_clone = ui_tx.clone(); + let information_l = information.clone(); + tokio::spawn(async move { + while let Some(data) = rx.recv().await { + if data.starts_with(&[ + 0x55, 0x20, + 0x01, 0x42, 0x40 + ]) { + let firmware_version = String::from_utf8_lossy(&data[8..]).to_string(); + info!("Received firmware version from Nothing device {}: {}", mac_address, firmware_version); + let new_information = NothingInformation{ + serial_number: information_l.serial_number.clone(), + firmware_version: firmware_version.clone() + }; + let mut new_devices = devices.clone(); + new_devices.insert( + device_key.clone(), + DeviceData{ + name: devices.get(&device_key) + .map(|d| d.name.clone()) + .unwrap_or("Nothing Device".to_string()), + type_: devices.get(&device_key) + .map(|d| d.type_.clone()) + .unwrap_or(DeviceType::Nothing), + information: Some(DeviceInformation::Nothing(new_information)), + } + ); + let json = serde_json::to_string(&new_devices).unwrap(); + std::fs::write(get_devices_path(), json).expect("Failed to write devices file"); + } else if data.starts_with( + &[ + 0x55, 0x20, + 0x01, 0x06, 0x40 + ] + ) { + let serial_number_start_position = data.iter().position(|&b| b == "S".as_bytes()[0]).unwrap_or(8); + let serial_number_end = data.iter() + .skip(serial_number_start_position) + .position(|&b| b == 0x0A) + .map(|pos| pos + serial_number_start_position) + .unwrap_or(data.len()); + if data.get(serial_number_start_position + 1) == Some(&"H".as_bytes()[0]) { + let serial_number = String::from_utf8_lossy( + &data[serial_number_start_position..serial_number_end] + ).to_string(); + info!("Received serial number from Nothing device {}: {}", mac_address, serial_number); + let new_information = NothingInformation{ + serial_number: serial_number.clone(), + firmware_version: information_l.firmware_version.clone() + }; + let mut new_devices = devices.clone(); + new_devices.insert( + device_key.clone(), + DeviceData{ + name: devices.get(&device_key) + .map(|d| d.name.clone()) + .unwrap_or("Nothing Device".to_string()), + type_: devices.get(&device_key) + .map(|d| d.type_.clone()) + .unwrap_or(DeviceType::Nothing), + information: Some(DeviceInformation::Nothing(new_information)), + } + ); + let json = serde_json::to_string(&new_devices).unwrap(); + std::fs::write(get_devices_path(), json).expect("Failed to write devices file"); + } else { + debug!("Serial number format unexpected from Nothing device {}: {:?}", mac_address, data); + } + } + else {} + debug!("Received data from (Nothing) device {}, data: {:?}", mac_address, data); + } + }); + + NothingDevice{ + att_manager, + information + } + } +} \ No newline at end of file diff --git a/linux-rust/src/main.rs b/linux-rust/src/main.rs index 9be27ce..a2af5c1 100644 --- a/linux-rust/src/main.rs +++ b/linux-rust/src/main.rs @@ -1,8 +1,8 @@ mod bluetooth; -mod airpods; mod media_controller; mod ui; mod utils; +mod devices; use std::env; use log::info; @@ -11,15 +11,20 @@ use dbus::blocking::stdintf::org_freedesktop_dbus::Properties; use dbus::message::MatchRule; use dbus::arg::{RefArg, Variant}; use std::collections::HashMap; -use crate::bluetooth::discovery::find_connected_airpods; -use crate::airpods::AirPodsDevice; +use std::sync::Arc; +use crate::bluetooth::discovery::{find_connected_airpods, find_other_managed_devices}; +use devices::airpods::AirPodsDevice; use bluer::Address; use ksni::TrayMethods; use crate::ui::tray::MyTray; use clap::Parser; use crate::bluetooth::le::start_le_monitor; use tokio::sync::mpsc::unbounded_channel; -use crate::ui::messages::UIMessage; +use crate::bluetooth::att::ATTHandles; +use crate::bluetooth::managers::BluetoothManager; +use crate::devices::enums::DeviceData; +use crate::ui::messages::{AirPodsCommand, BluetoothUIMessage, NothingCommand, UICommand}; +use crate::utils::get_devices_path; #[derive(Parser)] struct Args { @@ -35,23 +40,48 @@ fn main() -> iced::Result { let args = Args::parse(); let log_level = if args.debug { "debug" } else { "info" }; if env::var("RUST_LOG").is_err() { - unsafe { env::set_var("RUST_LOG", log_level.to_owned() + ",wgpu_core=off,librepods_rust::bluetooth::le=off,cosmic_text=off,naga=off,iced_winit=off") }; + unsafe { env::set_var("RUST_LOG", log_level.to_owned() + ",iced_wgpu=off,wgpu_hal=off,wgpu_core=off,librepods_rust::bluetooth::le=off,cosmic_text=off,naga=off,iced_winit=off") }; } env_logger::init(); - let (ui_tx, ui_rx) = unbounded_channel::(); + let (ui_tx, ui_rx) = unbounded_channel::(); + let (ui_command_tx, ui_command_rx) = unbounded_channel::(); + std::thread::spawn(|| { let rt = tokio::runtime::Runtime::new().unwrap(); - rt.block_on(async_main(ui_tx)).unwrap(); + rt.block_on(async_main(ui_tx, ui_command_rx)).unwrap(); }); - ui::window::start_ui(ui_rx, args.start_minimized) + ui::window::start_ui(ui_rx, args.start_minimized, ui_command_tx) } -async fn async_main(ui_tx: tokio::sync::mpsc::UnboundedSender) -> bluer::Result<()> { +async fn async_main(ui_tx: tokio::sync::mpsc::UnboundedSender, mut ui_command_rx: tokio::sync::mpsc::UnboundedReceiver) -> bluer::Result<()> { let args = Args::parse(); + // let mut device_command_txs: HashMap)>> = HashMap::new(); + let mut device_managers: HashMap> = HashMap::new(); + + let mut managed_devices_mac: Vec = Vec::new(); // includes ony non-AirPods. AirPods handled separately. + + let devices_path = get_devices_path(); + let devices_json = std::fs::read_to_string(&devices_path).unwrap_or_else(|e| { + log::error!("Failed to read devices file: {}", e); + "{}".to_string() + }); + let devices_list: HashMap = serde_json::from_str(&devices_json).unwrap_or_else(|e| { + log::error!("Deserialization failed: {}", e); + HashMap::new() + }); + for (mac, device_data) in devices_list.iter() { + match device_data.type_ { + devices::enums::DeviceType::Nothing => { + managed_devices_mac.push(mac.clone()); + } + _ => {} + } + } + let tray_handle = if args.no_tray { None } else { @@ -93,16 +123,51 @@ async fn async_main(ui_tx: tokio::sync::mpsc::UnboundedSender) -> blu let name = device.name().await?.unwrap_or_else(|| "Unknown".to_string()); info!("Found connected AirPods: {}, initializing.", name); let ui_tx_clone = ui_tx.clone(); - ui_tx_clone.send(UIMessage::DeviceConnected(device.address().to_string())).unwrap(); - let _airpods_device = AirPodsDevice::new(device.address(), tray_handle.clone(), ui_tx_clone).await; + ui_tx_clone.send(BluetoothUIMessage::DeviceConnected(device.address().to_string())).unwrap(); + let airpods_device = AirPodsDevice::new(device.address(), tray_handle.clone(), ui_tx_clone).await; + // device_command_txs.insert(device.address().to_string(), airpods_device.command_tx.unwrap()); + // device_managers.insert(device.address().to_string(), Arc::new(airpods_device.aacp_manager)); + device_managers.insert( + device.address().to_string(), + Arc::from(BluetoothManager::AACP(Arc::new(airpods_device.aacp_manager))), + ); } Err(_) => { info!("No connected AirPods found."); } } + match find_other_managed_devices(&adapter, managed_devices_mac.clone()).await { + Ok(devices) => { + for device in devices { + let addr_str = device.address().to_string(); + info!("Found connected managed device: {}, initializing.", addr_str); + let type_ = devices_list.get(&addr_str).unwrap().type_.clone(); + let ui_tx_clone = ui_tx.clone(); + let mut device_managers = device_managers.clone(); + tokio::spawn(async move { + ui_tx_clone.send(BluetoothUIMessage::DeviceConnected(addr_str.clone())).unwrap(); + match type_ { + devices::enums::DeviceType::Nothing => { + let dev = devices::nothing::NothingDevice::new(device.address(), ui_tx_clone).await; + device_managers.insert( + addr_str, + Arc::from(BluetoothManager::ATT(Arc::new(dev.att_manager))), + ); + } + _ => {} + } + }); + } + } + Err(e) => { + log::error!("Error finding connected managed devices: {}", e); + } + } + let conn = Connection::new_system()?; let rule = MatchRule::new_signal("org.freedesktop.DBus.Properties", "PropertiesChanged"); + let device_managers_clone = device_managers.clone(); conn.add_match(rule, move |_: (), conn, msg| { let Some(path) = msg.path() else { return true; }; if !path.contains("/org/bluez/hci") || !path.contains("/dev_") { @@ -123,21 +188,117 @@ async fn async_main(ui_tx: tokio::sync::mpsc::UnboundedSender) -> blu let proxy = conn.with_proxy("org.bluez", path, std::time::Duration::from_millis(5000)); let Ok(uuids) = proxy.get::>("org.bluez.Device1", "UUIDs") else { return true; }; let target_uuid = "74ec2172-0bad-4d01-8f77-997b2be0722a"; + + let Ok(addr_str) = proxy.get::("org.bluez.Device1", "Address") else { return true; }; + let Ok(addr) = addr_str.parse::

() else { return true; }; + + if managed_devices_mac.contains(&addr_str) { + info!("Managed device connected: {}, initializing", addr_str); + let type_ = devices_list.get(&addr_str).unwrap().type_.clone(); + match type_ { + devices::enums::DeviceType::Nothing => { + let ui_tx_clone = ui_tx.clone(); + let mut device_managers = device_managers.clone(); + tokio::spawn(async move { + ui_tx_clone.send(BluetoothUIMessage::DeviceConnected(addr_str.clone())).unwrap(); + let dev = devices::nothing::NothingDevice::new(addr, ui_tx_clone).await; + device_managers.insert( + addr_str, + Arc::from(BluetoothManager::ATT(Arc::new(dev.att_manager))), + ); + }); + } + _ => {} + } + return true; + } + if !uuids.iter().any(|u| u.to_lowercase() == target_uuid) { return true; } let name = proxy.get::("org.bluez.Device1", "Name").unwrap_or_else(|_| "Unknown".to_string()); - let Ok(addr_str) = proxy.get::("org.bluez.Device1", "Address") else { return true; }; - let Ok(addr) = addr_str.parse::
() else { return true; }; info!("AirPods connected: {}, initializing", name); let handle_clone = tray_handle.clone(); let ui_tx_clone = ui_tx.clone(); + let mut device_managers = device_managers.clone(); tokio::spawn(async move { - ui_tx_clone.send(UIMessage::DeviceConnected(addr_str)).unwrap(); - let _airpods_device = AirPodsDevice::new(addr, handle_clone, ui_tx_clone).await; + ui_tx_clone.send(BluetoothUIMessage::DeviceConnected(addr_str.clone())).unwrap(); + let airpods_device = AirPodsDevice::new(addr, handle_clone, ui_tx_clone).await; + device_managers.insert( + addr_str, + Arc::from(BluetoothManager::AACP(Arc::new(airpods_device.aacp_manager))), + ); }); true })?; + tokio::spawn(async move { + while let Some(command) = ui_command_rx.recv().await { + match command { + UICommand::AirPods(AirPodsCommand::SetControlCommandStatus(mac, identifier, value)) => { + if let Some(manager) = device_managers_clone.get(&mac) { + match manager.as_ref() { + BluetoothManager::AACP(manager) => { + log::debug!("Sending control command to device {}: {:?} = {:?}", mac, identifier, value); + if let Err(e) = manager.send_control_command(identifier, value.as_ref()).await { + log::error!("Failed to send control command to device {}: {}", mac, e); + } + } + _ => { + log::warn!("AACP not available for {}", mac); + } + } + } else { + log::warn!("No manager for device {}", mac); + } + } + UICommand::AirPods(AirPodsCommand::RenameDevice(mac, new_name)) => { + if let Some(manager) = device_managers_clone.get(&mac) { + match manager.as_ref() { + BluetoothManager::AACP(manager) => { + log::debug!("Renaming device {} to {}", mac, new_name); + if let Err(e) = manager.send_rename_packet(&new_name).await { + log::error!("Failed to rename device {}: {}", mac, e); + } + } + _ => { + log::warn!("AACP not available for {}", mac); + } + } + } else { + log::warn!("No manager for device {}", mac); + } + } + UICommand::Nothing(NothingCommand::SetNoiseCancellationMode(mac, mode)) => { + if let Some(manager) = device_managers_clone.get(&mac) { + match manager.as_ref() { + BluetoothManager::ATT(manager) => { + log::debug!("Setting noise cancellation mode for device {}: {:?}", mac, mode); + if let Err(e) = manager.write( + ATTHandles::NothingEverything, + &[ + 0x55, + 0x60, 0x01, + 0x0F, 0xF0, + 0x03, 0x00, + 0x00, 0x01, // the 0x00 is an incremental counter, but it works without it + mode.to_byte(), 0x00, + 0x00, 0x00 // these both bytes were something random, 0 works too + ] + ).await { + log::error!("Failed to set noise cancellation mode for device {}: {}", mac, e); + } + } + _ => { + log::warn!("Nothing manager not available for {}", mac); + } + } + } else { + log::warn!("No manager for device {}", mac); + } + } + } + } + }); info!("Listening for Bluetooth connections via D-Bus..."); loop { diff --git a/linux-rust/src/ui/airpods.rs b/linux-rust/src/ui/airpods.rs new file mode 100644 index 0000000..ed45660 --- /dev/null +++ b/linux-rust/src/ui/airpods.rs @@ -0,0 +1,197 @@ +use std::collections::HashMap; +use iced::widget::{button, column, container, row, text, toggler, Space}; +use iced::{Background, Border, Color, Length, Theme}; +use iced::widget::button::Style; +use log::error; +use crate::devices::enums::{AirPodsState, DeviceData, DeviceInformation}; +use crate::ui::window::{DeviceMessage, Message}; + +pub fn airpods_view<'a>( + mac: &str, + devices_list: &HashMap, + state: &AirPodsState, +) -> iced::widget::Container<'a, Message> { + let mut information_col = column![]; + let mac = mac.to_string(); + if let Some(device) = devices_list.get(mac.as_str()) { + if let Some(DeviceInformation::AirPods(ref airpods_info)) = device.information { + information_col = information_col + .push(text("Device Information").size(18).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().primary); + style + } + )) + .push(Space::with_height(Length::from(10))) + .push( + row![ + text("Model Number").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + text(airpods_info.model_number.clone()).size(16) + ] + ) + .push( + row![ + text("Manufacturer").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + text(airpods_info.manufacturer.clone()).size(16) + ] + ) + .push( + row![ + text("Serial Number").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + button( + text(airpods_info.serial_number.clone()).size(16) + ) + .style( + |theme: &Theme, _status| { + let mut style = Style::default(); + style.text_color = theme.palette().text; + style.background = Some(Background::Color(Color::TRANSPARENT)); + style + } + ) + .padding(0) + .on_press(Message::CopyToClipboard(airpods_info.serial_number.clone())) + ] + ) + .push( + row![ + text("Left Serial Number").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + button( + text(airpods_info.left_serial_number.clone()).size(16) + ) + .style( + |theme: &Theme, _status| { + let mut style = Style::default(); + style.text_color = theme.palette().text; + style.background = Some(Background::Color(Color::TRANSPARENT)); + style + } + ) + .padding(0) + .on_press(Message::CopyToClipboard(airpods_info.left_serial_number.clone())) + ] + ) + .push( + row![ + text("Right Serial Number").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + button( + text(airpods_info.right_serial_number.clone()).size(16) + ) + .style( + |theme: &Theme, _status| { + let mut style = Style::default(); + style.text_color = theme.palette().text; + style.background = Some(Background::Color(Color::TRANSPARENT)); + style + } + ) + .padding(0) + .on_press(Message::CopyToClipboard(airpods_info.right_serial_number.clone())) + ] + ) + .push( + row![ + text("Version 1").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + text(airpods_info.version1.clone()).size(16) + ] + ) + .push( + row![ + text("Version 2").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + text(airpods_info.version2.clone()).size(16) + ] + ) + .push( + row![ + text("Version 3").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + Space::with_width(Length::Fill), + text(airpods_info.version3.clone()).size(16) + ] + ); + } else { + error!("Expected AirPodsInformation for device {}, got something else", mac); + } + } + + let toggler_widget = toggler(state.conversation_awareness_enabled) + .label("Conversation Awareness") + .on_toggle(move |is_enabled| Message::DeviceMessage(mac.to_string(), DeviceMessage::ConversationAwarenessToggled(is_enabled))); + + container( + column![ + toggler_widget, + Space::with_height(Length::from(10)), + container(information_col) + .style( + |theme: &Theme| { + let mut style = container::Style::default(); + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); + let mut border = Border::default(); + border.color = theme.palette().text; + style.border = border.rounded(20); + style + } + ) + .padding(20) + ] + ) + .padding(20) + .center_x(Length::Fill) + .height(Length::Fill) +} diff --git a/linux-rust/src/ui/messages.rs b/linux-rust/src/ui/messages.rs index 04e777e..8bb8689 100644 --- a/linux-rust/src/ui/messages.rs +++ b/linux-rust/src/ui/messages.rs @@ -1,15 +1,30 @@ use crate::bluetooth::aacp::{AACPEvent, ControlCommandIdentifiers}; +use crate::devices::enums::NothingAncMode; #[derive(Debug, Clone)] -pub enum UIMessage { +pub enum BluetoothUIMessage { OpenWindow, - DeviceConnected(String), - DeviceDisconnected(String), - AACPUIEvent(String, AACPEvent), - NoOp, + DeviceConnected(String), // mac + DeviceDisconnected(String), // mac + AACPUIEvent(String, AACPEvent), // mac, event + ATTNotification(String, u16, Vec), // mac, handle, data + NoOp } #[derive(Debug, Clone)] pub enum UICommand { + AirPods(AirPodsCommand), + Nothing(NothingCommand), +} + +#[derive(Debug, Clone)] +pub enum AirPodsCommand { SetControlCommandStatus(String, ControlCommandIdentifiers, Vec), -} \ No newline at end of file + RenameDevice(String, String), +} + +#[derive(Debug, Clone)] +pub enum NothingCommand { + SetNoiseCancellationMode(String, NothingAncMode), +} + diff --git a/linux-rust/src/ui/mod.rs b/linux-rust/src/ui/mod.rs index feca689..1f22d99 100644 --- a/linux-rust/src/ui/mod.rs +++ b/linux-rust/src/ui/mod.rs @@ -1,3 +1,5 @@ pub mod tray; pub mod window; -pub mod messages; \ No newline at end of file +pub mod messages; +mod airpods; +mod nothing; \ No newline at end of file diff --git a/linux-rust/src/ui/nothing.rs b/linux-rust/src/ui/nothing.rs new file mode 100644 index 0000000..6237247 --- /dev/null +++ b/linux-rust/src/ui/nothing.rs @@ -0,0 +1,77 @@ +use std::collections::HashMap; +use iced::{Background, Border, Length, Theme}; +use iced::widget::{container, text, column, row, Space, combo_box}; +use crate::devices::enums::{DeviceData, DeviceInformation, NothingState}; +use crate::ui::window::Message; + +pub fn nothing_view<'a>( + mac: &str, + devices_list: &HashMap, + state: &NothingState +) -> iced::widget::Container<'a, Message> { + let mut information_col = iced::widget::column![]; + let mac = mac.to_string(); + if let Some(device) = devices_list.get(mac.as_str()) { + if let Some(DeviceInformation::Nothing(ref nothing_info)) = device.information { + information_col = information_col + .push(text("Device Information").size(18).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().primary); + style + } + )) + .push(iced::widget::Space::with_height(iced::Length::from(10))) + .push( + iced::widget::row![ + text("Serial Number").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + iced::widget::Space::with_width(iced::Length::Fill), + text(nothing_info.serial_number.clone()).size(16) + ] + ) + .push( + iced::widget::row![ + text("Firmware Version").size(16).style( + |theme: &Theme| { + let mut style = text::Style::default(); + style.color = Some(theme.palette().text); + style + } + ), + iced::widget::Space::with_width(iced::Length::Fill), + text(nothing_info.firmware_version.clone()).size(16) + ] + ); + } + } + container( + column![ + row![ + text("Noise Control Mode").size(18), + Space::with_width(Length::Fill), + // combobox here + ], + container(information_col) + .style( + |theme: &Theme| { + let mut style = container::Style::default(); + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); + let mut border = Border::default(); + border.color = theme.palette().text; + style.border = border.rounded(20); + style + } + ) + .padding(20) + ] + ) + .padding(20) + .center_x(Length::Fill) + .height(Length::Fill) +} \ No newline at end of file diff --git a/linux-rust/src/ui/tray.rs b/linux-rust/src/ui/tray.rs index d0aa875..0dc45aa 100644 --- a/linux-rust/src/ui/tray.rs +++ b/linux-rust/src/ui/tray.rs @@ -5,7 +5,7 @@ use ksni::{Icon, ToolTip}; use tokio::sync::mpsc::UnboundedSender; use crate::bluetooth::aacp::ControlCommandIdentifiers; -use crate::ui::messages::UIMessage; +use crate::ui::messages::BluetoothUIMessage; #[derive(Debug)] pub(crate) struct MyTray { @@ -20,7 +20,7 @@ pub(crate) struct MyTray { pub(crate) listening_mode: Option, pub(crate) allow_off_option: Option, pub(crate) command_tx: Option)>>, - pub(crate) ui_tx: Option>, + pub(crate) ui_tx: Option>, } impl ksni::Tray for MyTray { @@ -114,7 +114,7 @@ impl ksni::Tray for MyTray { icon_name: "window-new".into(), activate: Box::new(|this: &mut Self| { if let Some(tx) = &this.ui_tx { - let _ = tx.send(UIMessage::OpenWindow); + let _ = tx.send(BluetoothUIMessage::OpenWindow); } }), ..Default::default() diff --git a/linux-rust/src/ui/window.rs b/linux-rust/src/ui/window.rs index 3bbd1a0..b0cc6b8 100644 --- a/linux-rust/src/ui/window.rs +++ b/linux-rust/src/ui/window.rs @@ -1,23 +1,30 @@ - use std::collections::HashMap; use iced::widget::button::Style; -use iced::widget::{button, column, container, pane_grid, text, Space, combo_box, row, text_input}; +use iced::widget::{button, column, container, pane_grid, text, Space, combo_box, row, text_input, scrollable}; use iced::{daemon, window, Background, Border, Center, Color, Element, Length, Size, Subscription, Task, Theme}; use std::sync::Arc; +use bluer::{Address, Session}; use iced::border::Radius; use iced::overlay::menu; use log::{debug, error}; use tokio::sync::mpsc::UnboundedReceiver; use tokio::sync::Mutex; -use crate::bluetooth::aacp::{DeviceData, DeviceInformation, DeviceType}; -use crate::ui::messages::UIMessage; +use crate::bluetooth::aacp::{AACPEvent}; +use crate::devices::enums::{AirPodsState, DeviceData, DeviceState, DeviceType, NothingAncMode, NothingState}; +use crate::ui::messages::{AirPodsCommand, BluetoothUIMessage, NothingCommand, UICommand}; use crate::utils::{get_devices_path, get_app_settings_path, MyTheme}; +use crate::ui::airpods::airpods_view; +use crate::ui::nothing::nothing_view; -pub fn start_ui(ui_rx: UnboundedReceiver, start_minimized: bool) -> iced::Result { +pub fn start_ui( + ui_rx: UnboundedReceiver, + start_minimized: bool, + ui_command_tx: tokio::sync::mpsc::UnboundedSender, +) -> iced::Result { daemon(App::title, App::update, App::view) .subscription(App::subscription) .theme(App::theme) - .run_with(move || App::new(ui_rx, start_minimized)) + .run_with(move || App::new(ui_rx, start_minimized, ui_command_tx)) } pub struct App { @@ -26,8 +33,14 @@ pub struct App { selected_tab: Tab, theme_state: combo_box::State, selected_theme: MyTheme, - ui_rx: Arc>>, - bluetooth_state: BluetoothState + ui_rx: Arc>>, + bluetooth_state: BluetoothState, + ui_command_tx: tokio::sync::mpsc::UnboundedSender, + paired_devices: HashMap, + device_states: HashMap, + pending_add_device: Option<(String, Address)>, + device_type_state: combo_box::State, + selected_device_type: Option, } pub struct BluetoothState { @@ -42,6 +55,12 @@ impl BluetoothState { } } +#[derive(Debug, Clone)] +pub enum DeviceMessage { + ConversationAwarenessToggled(bool), + NothingAncModeSelected(NothingAncMode) +} + #[derive(Debug, Clone)] pub enum Message { WindowOpened(window::Id), @@ -50,13 +69,21 @@ pub enum Message { SelectTab(Tab), ThemeSelected(MyTheme), CopyToClipboard(String), - UIMessage(UIMessage), + BluetoothMessage(BluetoothUIMessage), + DeviceMessage(String, DeviceMessage), + ShowNewDialogTab, + GotPairedDevices(HashMap), + StartAddDevice(String, Address), + SelectDeviceType(DeviceType), + ConfirmAddDevice, + CancelAddDevice, } #[derive(Clone, Debug, PartialEq, Eq, Hash)] pub enum Tab { Device(String), Settings, + AddDevice } #[derive(Clone, Copy)] @@ -65,9 +92,12 @@ pub enum Pane { Content, } - impl App { - pub fn new(ui_rx: UnboundedReceiver, start_minimized: bool) -> (Self, Task) { + pub fn new( + ui_rx: UnboundedReceiver, + start_minimized: bool, + ui_command_tx: tokio::sync::mpsc::UnboundedSender, + ) -> (Self, Task) { let (mut panes, first_pane) = pane_grid::State::new(Pane::Sidebar); let split = panes.split(pane_grid::Axis::Vertical, first_pane, Pane::Content); panes.resize(split.unwrap().1, 0.2); @@ -99,6 +129,14 @@ impl App { let bluetooth_state = BluetoothState::new(); + // let dummy_device_state = DeviceState::AirPods(AirPodsState { + // conversation_awareness_enabled: false, + // }); + // let device_states = HashMap::from([ + // ("28:2D:7F:C2:05:5B".to_string(), dummy_device_state), + // ]); + + let device_states = HashMap::new(); ( Self { window, @@ -131,6 +169,14 @@ impl App { selected_theme, ui_rx, bluetooth_state, + ui_command_tx, + paired_devices: HashMap::new(), + device_states, + pending_add_device: None, + device_type_state: combo_box::State::new(vec![ + DeviceType::Nothing + ]), + selected_device_type: None, }, Task::batch(vec![open_task, wait_task]) ) @@ -171,9 +217,35 @@ impl App { Message::CopyToClipboard(data) => { iced::clipboard::write(data) } - Message::UIMessage(ui_message) => { + Message::DeviceMessage(mac, device_msg) => { + match device_msg { + DeviceMessage::ConversationAwarenessToggled(is_enabled) => { + if let Some(DeviceState::AirPods(state)) = self.device_states.get_mut(&mac) { + state.conversation_awareness_enabled = is_enabled; + let value = if is_enabled { 0x01 } else { 0x02 }; + let _ = self.ui_command_tx.send(UICommand::AirPods(AirPodsCommand::SetControlCommandStatus( + mac, + crate::bluetooth::aacp::ControlCommandIdentifiers::ConversationDetectConfig, + vec![value], + ))); + } + Task::none() + } + DeviceMessage::NothingAncModeSelected(mode) => { + if let Some(DeviceState::Nothing(state)) = self.device_states.get_mut(&mac) { + state.anc_mode = mode.clone(); + let _ = self.ui_command_tx.send(UICommand::Nothing(NothingCommand::SetNoiseCancellationMode( + mac, + mode, + ))); + } + Task::none() + } + } + } + Message::BluetoothMessage(ui_message) => { match ui_message { - UIMessage::NoOp => { + BluetoothUIMessage::NoOp => { let ui_rx = Arc::clone(&self.ui_rx); let wait_task = Task::perform( wait_for_message(ui_rx), @@ -181,7 +253,7 @@ impl App { ); wait_task } - UIMessage::OpenWindow => { + BluetoothUIMessage::OpenWindow => { let ui_rx = Arc::clone(&self.ui_rx); let wait_task = Task::perform( wait_for_message(ui_rx), @@ -205,7 +277,7 @@ impl App { ]) } } - UIMessage::DeviceConnected(mac) => { + BluetoothUIMessage::DeviceConnected(mac) => { let ui_rx = Arc::clone(&self.ui_rx); let wait_task = Task::perform( wait_for_message(ui_rx), @@ -223,34 +295,151 @@ impl App { self.bluetooth_state.connected_devices.push(mac.clone()); } + // self.device_states.insert(mac.clone(), DeviceState::AirPods(AirPodsState { + // conversation_awareness_enabled: false, + // })); + + let type_ = { + let devices_json = std::fs::read_to_string(get_devices_path()).unwrap_or_else(|e| { + error!("Failed to read devices file: {}", e); + "{}".to_string() + }); + let devices_list: HashMap = serde_json::from_str(&devices_json).unwrap_or_else(|e| { + error!("Deserialization failed: {}", e); + HashMap::new() + }); + devices_list.get(&mac).map(|d| d.type_.clone()) + }; + match type_ { + Some(DeviceType::AirPods) => { + self.device_states.insert(mac.clone(), DeviceState::AirPods(AirPodsState { + conversation_awareness_enabled: false, + })); + } + Some(DeviceType::Nothing) => { + self.device_states.insert(mac.clone(), DeviceState::Nothing(NothingState { + anc_mode: NothingAncMode::Off, + })); + } + _ => {} + } + Task::batch(vec![ wait_task, ]) } - UIMessage::DeviceDisconnected(mac) => { + BluetoothUIMessage::DeviceDisconnected(mac) => { let ui_rx = Arc::clone(&self.ui_rx); let wait_task = Task::perform( wait_for_message(ui_rx), |msg| msg, ); debug!("Device disconnected: {}", mac); + + self.device_states.remove(&mac); Task::batch(vec![ wait_task, ]) } - UIMessage::AACPUIEvent(mac, event) => { + BluetoothUIMessage::AACPUIEvent(mac, event) => { let ui_rx = Arc::clone(&self.ui_rx); let wait_task = Task::perform( wait_for_message(ui_rx), |msg| msg, ); debug!("AACP UI Event for {}: {:?}", mac, event); + match event { + AACPEvent::ControlCommand(status) => { + match status.identifier { + crate::bluetooth::aacp::ControlCommandIdentifiers::ConversationDetectConfig => { + let is_enabled = match status.value.as_slice() { + [0x01] => true, + [0x02] => false, + _ => { + error!("Unknown Conversation Detect Config value: {:?}", status.value); + false + } + }; + if let Some(DeviceState::AirPods(state)) = self.device_states.get_mut(&mac) { + state.conversation_awareness_enabled = is_enabled; + } + } + _ => { + debug!("Unhandled Control Command Status: {:?}", status); + } + } + } + _ => {} + } + Task::batch(vec![ + wait_task, + ]) + } + BluetoothUIMessage::ATTNotification(mac, handle, value) => { + debug!("ATT Notification for {}: handle=0x{:04X}, value={:?}", mac, handle, value); + let ui_rx = Arc::clone(&self.ui_rx); + let wait_task = Task::perform( + wait_for_message(ui_rx), + |msg| msg, + ); Task::batch(vec![ wait_task, ]) } } } + Message::ShowNewDialogTab => { + debug!("switching to Add Device tab"); + self.selected_tab = Tab::AddDevice; + Task::perform(load_paired_devices(), Message::GotPairedDevices) + } + Message::GotPairedDevices(map) => { + self.paired_devices = map; + Task::none() + } + Message::StartAddDevice(name, addr) => { + self.pending_add_device = Some((name, addr)); + self.selected_device_type = None; + Task::none() + } + Message::SelectDeviceType(device_type) => { + self.selected_device_type = Some(device_type); + Task::none() + } + Message::ConfirmAddDevice => { + if let Some((name, addr)) = self.pending_add_device.take() { + if let Some(type_) = self.selected_device_type.take() { + let devices_path = get_devices_path(); + let devices_json = std::fs::read_to_string(&devices_path).unwrap_or_else(|e| { + error!("Failed to read devices file: {}", e); + "{}".to_string() + }); + let mut devices_list: HashMap = serde_json::from_str(&devices_json).unwrap_or_else(|e| { + error!("Deserialization failed: {}", e); + HashMap::new() + }); + devices_list.insert(addr.to_string(), DeviceData { + name, + type_: type_.clone(), + information: None + }); + let updated_json = serde_json::to_string(&devices_list).unwrap_or_else(|e| { + error!("Serialization failed: {}", e); + "{}".to_string() + }); + if let Err(e) = std::fs::write(&devices_path, updated_json) { + error!("Failed to write devices file: {}", e); + } + self.selected_tab = Tab::Device(addr.to_string()); + } + } + Task::none() + } + Message::CancelAddDevice => { + self.pending_add_device = None; + self.selected_device_type = None; + Task::none() + } } } @@ -356,6 +545,33 @@ impl App { let settings = create_settings_button(); let content = column![ + row![ + text("Devices").size(18), + Space::with_width(Length::Fill), + button( + container(text("+").size(18)).center_x(Length::Fill).center_y(Length::Fill) + ) + .style( + |theme: &Theme, _status| { + let mut style = Style::default(); + style.text_color = theme.palette().text; + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); + style.border = Border { + width: 1.0, + color: theme.palette().primary.scale_alpha(0.1), + radius: Radius::from(8.0), + }; + style + } + ) + .padding(0) + .width(Length::from(28)) + .height(Length::from(28)) + .on_press(Message::ShowNewDialogTab) + ] + .align_y(Center) + .padding(4), + Space::with_height(Length::from(8)), devices, Space::with_height(Length::Fill), settings @@ -375,200 +591,38 @@ impl App { .center_x(Length::Fill) .center_y(Length::Fill) } else { - let mut information_col = column![]; - - let device_type = devices_list.get(id) - .map(|d| d.type_.clone()).unwrap(); - - if device_type == DeviceType::AirPods { - let device_information = devices_list.get(id) - .and_then(|d| d.information.clone()); - match device_information { - Some(DeviceInformation::AirPods(ref airpods_information)) => { - information_col = information_col - .push(text("Device Information").size(18).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().primary); - style - } - )) - .push(Space::with_height(Length::from(10))) - .push( - row![ - text("Model Number").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - text(airpods_information.model_number.clone()).size(16) - ] - ) - .push( - row![ - text("Manufacturer").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - text(airpods_information.manufacturer.clone()).size(16) - ] - ) - .push( - row![ - text("Serial Number").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - button( - text( - airpods_information.serial_number.clone() - ) - .size(16) - ) - .style( - |theme: &Theme, _status| { - let mut style = Style::default(); - style.text_color = theme.palette().text; - style.background = Some(Background::Color(Color::TRANSPARENT)); - style - } - ) - .padding(0) - .on_press(Message::CopyToClipboard(airpods_information.serial_number.clone())) - ] - ) - .push( - row![ - text("Left Serial Number").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - button( - text( - airpods_information.left_serial_number.clone() - ) - .size(16) - ) - .style( - |theme: &Theme, _status| { - let mut style = Style::default(); - style.text_color = theme.palette().text; - style.background = Some(Background::Color(Color::TRANSPARENT)); - style - } - ) - .padding(0) - .on_press(Message::CopyToClipboard(airpods_information.left_serial_number.clone())) - ] - ) - .push( - row![ - text("Right Serial Number").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - button( - text( - airpods_information.right_serial_number.clone() - ) - .size(16) - ) - .style( - |theme: &Theme, _status| { - let mut style = Style::default(); - style.text_color = theme.palette().text; - style.background = Some(Background::Color(Color::TRANSPARENT)); - style - } - ) - .padding(0) - .on_press(Message::CopyToClipboard(airpods_information.right_serial_number.clone())) - ] - ) - .push( - row![ - text("Version 1").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - text(airpods_information.version1.clone()).size(16) - ] - ) - .push( - row![ - text("Version 2").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - text(airpods_information.version2.clone()).size(16) - ] - ) - .push( - row![ - text("Version 3").size(16).style( - |theme: &Theme| { - let mut style = text::Style::default(); - style.color = Some(theme.palette().text); - style - } - ), - Space::with_width(Length::Fill), - text(airpods_information.version3.clone()).size(16) - ] - ); - debug!("AirPods Information: {:?}", airpods_information); + let device_type = devices_list.get(id).map(|d| d.type_.clone()); + let device_state = self.device_states.get(id); + debug!("Rendering device view for {}: type={:?}, state={:?}", id, device_type, device_state); + match device_type { + Some(DeviceType::AirPods) => { + if let Some(DeviceState::AirPods(state)) = device_state { + airpods_view(id, &devices_list, state) + } else { + container( + text("No state available for this AirPods device").size(16) + ) + .center_x(Length::Fill) + .center_y(Length::Fill) } - _ => { - error!("Expected AirPodsInformation, got something else: {:?}", device_information); - }, + } + Some(DeviceType::Nothing) => { + if let Some(DeviceState::Nothing(state)) = device_state { + nothing_view(id, &devices_list, state) + } else { + container( + text("No state available for this Nothing device").size(16) + ) + .center_x(Length::Fill) + .center_y(Length::Fill) + } + } + _ => { + container(text("Unsupported device").size(16)) + .center_x(Length::Fill) + .center_y(Length::Fill) } } - container( - column![ - container(information_col) - .style( - |theme: &Theme| { - let mut style = container::Style::default(); - style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); - let mut border = Border::default(); - border.color = theme.palette().text; - style.border = border.rounded(20); - style - } - ) - .padding(20) - ] - ) - .padding(20) - .center_x(Length::Fill) - .height(Length::Fill) } } Tab::Settings => { @@ -579,7 +633,7 @@ impl App { row![ text("Theme:") .size(16), - Space::with_width(Length::from(10)), + Space::with_width(Length::Fill), combo_box( &self.theme_state, "Select theme", @@ -591,9 +645,9 @@ impl App { text_input::Style { background: Background::Color(Color::TRANSPARENT), border: Border { - width: 0.5, + width: 1.0, color: theme.palette().text, - radius: Radius::from(10.0), + radius: Radius::from(8.0), }, icon: Default::default(), placeholder: theme.palette().text.scale_alpha(0.5), @@ -607,9 +661,9 @@ impl App { menu::Style { background: Background::Color(Color::TRANSPARENT), border: Border { - width: 0.5, + width: 1.0, color: theme.palette().text, - radius: Radius::from(10.0) + radius: Radius::from(8.0) }, text_color: theme.palette().text, selected_text_color: theme.palette().text, @@ -617,7 +671,7 @@ impl App { } } ) - .width(Length::Fill) + .width(Length::from(350)) ] .align_y(Center) ] @@ -626,6 +680,162 @@ impl App { .width(Length::Fill) .height(Length::Fill) }, + Tab::AddDevice => { + container( + column![ + text("Pick a paired device to add:").size(18), + Space::with_height(Length::from(10)), + { + let mut list_col = column![].spacing(12); + for device in self.paired_devices.clone() { + if !devices_list.contains_key(&device.1.to_string()) { + let mut item_col = column![].spacing(8); + let mut row_elements = vec![ + column![ + text(device.0.to_string()).size(16), + text(device.1.to_string()).size(12) + ].into(), + Space::with_width(Length::Fill).into(), + ]; + // Only show "Add" button if this device is not the pending one + if !matches!(&self.pending_add_device, Some((_, addr)) if addr == &device.1) { + row_elements.push( + button( + text("Add").size(14).width(120).align_y(Center).align_x(Center) + ) + .style( + |theme: &Theme, _status| { + let mut style = Style::default(); + style.text_color = theme.palette().text; + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.5))); + style.border = Border { + width: 1.0, + color: theme.palette().primary, + radius: Radius::from(8.0), + }; + style + } + ) + .padding(8) + .on_press(Message::StartAddDevice(device.0.clone(), device.1.clone())) + .into() + ); + } + item_col = item_col.push(row(row_elements).align_y(Center)); + + if let Some((_, pending_addr)) = &self.pending_add_device { + if pending_addr == &device.1 { + item_col = item_col.push( + row![ + text("Device Type:").size(16), + Space::with_width(Length::Fill), + combo_box( + &self.device_type_state, + "Select device type", + self.selected_device_type.as_ref(), + Message::SelectDeviceType + ) + .input_style( + |theme: &Theme, _status| { + text_input::Style { + background: Background::Color(theme.palette().background), + border: Border { + width: 1.0, + color: theme.palette().text, + radius: Radius::from(8.0), + }, + icon: Default::default(), + placeholder: theme.palette().text.scale_alpha(0.5), + value: theme.palette().text, + selection: theme.palette().primary + } + } + ) + .menu_style( + |theme: &Theme| { + menu::Style { + background: Background::Color(theme.palette().background), + border: Border { + width: 1.0, + color: theme.palette().text, + radius: Radius::from(8.0) + }, + text_color: theme.palette().text, + selected_text_color: theme.palette().text, + selected_background: Background::Color(theme.palette().primary.scale_alpha(0.3)), + } + } + ) + .width(Length::from(200)) + ] + ); + item_col = item_col.push( + row![ + Space::with_width(Length::Fill), + button(text("Cancel").size(16).width(Length::Fill).center()) + .on_press(Message::CancelAddDevice) + .style(|theme: &Theme, _status| { + let mut style = Style::default(); + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); + style.text_color = theme.palette().text; + style.border = Border::default().rounded(8.0); + style + }) + .width(Length::from(120)) + .padding(4), + Space::with_width(Length::from(20)), + button(text("Add Device").size(16).width(Length::Fill).center()) + .on_press(Message::ConfirmAddDevice) + .style(|theme: &Theme, _status| { + let mut style = Style::default(); + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.3))); + style.text_color = theme.palette().text; + style.border = Border::default().rounded(8.0); + style + }) + .width(Length::from(120)) + .padding(4), + ] + .align_y(Center) + .width(Length::Fill) + ); + } + } + + list_col = list_col.push( + container(item_col) + .padding(8) + .style( + |theme: &Theme| { + let mut style = container::Style::default(); + style.background = Some(Background::Color(theme.palette().primary.scale_alpha(0.1))); + let mut border = Border::default(); + border.color = theme.palette().text; + style.border = border.rounded(8); + style + } + ) + ); + } + } + if self.paired_devices.iter().all(|device| devices_list.contains_key(&device.1.to_string())) && self.pending_add_device.is_none() { + list_col = list_col.push( + container( + text("No new paired devices found. All paired devices are already added.").size(16) + ) + .width(Length::Fill) + ); + } + scrollable(list_col) + .height(Length::Fill) + .width(Length::Fill) + } + ] + ) + .padding(20) + .height(Length::Fill) + .width(Length::Fill) + } }; pane_grid::Content::new(content) @@ -649,14 +859,31 @@ impl App { } async fn wait_for_message( - ui_rx: Arc>>, + ui_rx: Arc>>, ) -> Message { let mut rx = ui_rx.lock().await; match rx.recv().await { - Some(msg) => Message::UIMessage(msg), + Some(msg) => Message::BluetoothMessage(msg), None => { error!("UI message channel closed"); - Message::UIMessage(UIMessage::NoOp) + Message::BluetoothMessage(BluetoothUIMessage::NoOp) } } -} \ No newline at end of file +} +async fn load_paired_devices() -> HashMap { + let mut devices = HashMap::new(); + + let session = Session::new().await.ok().unwrap(); + let adapter = session.default_adapter().await.ok().unwrap(); + let addresses = adapter.device_addresses().await.ok().unwrap(); + for addr in addresses { + let device = adapter.device(addr.clone()).ok().unwrap(); + let paired = device.is_paired().await.ok().unwrap(); + if paired { + let name = device.name().await.ok().flatten().unwrap_or_else(|| "Unknown".to_string()); + devices.insert(name, addr); + } + } + + devices +}