@@ -7,26 +7,11 @@ use windows::{
77} ;
88
99pub fn find_bluetooth_devices ( ) -> windows:: core:: Result < Vec < DeviceInformation > > {
10- let devices =
11- windows:: Devices :: Enumeration :: DeviceInformation :: FindAllAsync ( ) ?. get ( ) ?;
10+ let bt_le_aqs_filter = BluetoothLEDevice :: GetDeviceSelector ( ) . unwrap ( ) ;
1211
13- let mut discovered_devices = Vec :: new ( ) ;
12+ let devices = DeviceInformation :: FindAllAsyncAqsFilter ( & bt_le_aqs_filter ) ? . get ( ) ? ;
1413
15- Ok ( devices
16- . into_iter ( )
17- . filter_map ( |device| {
18- device. Name ( ) . ok ( ) . and_then ( |n| {
19- let name = n. to_string ( ) ;
20- if discovered_devices. contains ( & name) {
21- None
22- } else {
23- discovered_devices. push ( name) ;
24- Some ( device)
25- }
26- } )
27- } )
28- . collect ( )
29- )
14+ Ok ( devices. into_iter ( ) . collect ( ) )
3015}
3116
3217pub fn get_battery_level ( device : & BluetoothLEDevice ) -> windows:: core:: Result < u8 > {
@@ -55,6 +40,8 @@ pub fn get_bluetooth_info(devices: Vec<DeviceInformation>) -> windows::core::Res
5540
5641 for device in devices {
5742 if let Ok ( le_device) = BluetoothLEDevice :: FromIdAsync ( & device. Id ( ) ?) ?. get ( ) {
43+ let device_name = device. Name ( ) ?. to_string ( ) ;
44+
5845 let status = le_device. ConnectionStatus ( ) . expect ( "Failed to get link status" ) ;
5946
6047 let battery_level = match get_battery_level ( & le_device) {
@@ -63,13 +50,14 @@ pub fn get_bluetooth_info(devices: Vec<DeviceInformation>) -> windows::core::Res
6350 } ;
6451
6552 if status == BluetoothConnectionStatus :: Connected {
66- let menu_text = format ! ( "√ {} - {}%" , device . Name ( ) . unwrap ( ) , battery_level) ;
67- let tooltip_text = format ! ( "🟢 {} - {}%" , device . Name ( ) . unwrap ( ) , battery_level) ;
53+ let menu_text = format ! ( "🔗 {} - {}%" , & device_name , battery_level) ;
54+ let tooltip_text = format ! ( "🟢 {} - {}%" , & device_name , battery_level) ;
6855 menu_items. insert ( 0 , menu_text) ;
6956 tooltip. insert ( 0 , tooltip_text) ;
57+ // println!("{:?}", device.Properties()?)
7058 } else {
71- let menu_text = format ! ( "× {} - {}%" , device . Name ( ) . unwrap ( ) , battery_level) ;
72- let tooltip_text = format ! ( "🔴 {} - {}%" , device . Name ( ) . unwrap ( ) , battery_level) ;
59+ let menu_text = format ! ( " {} - {}%" , & device_name , battery_level) ;
60+ let tooltip_text = format ! ( "🔴 {} - {}%" , & device_name , battery_level) ;
7361 menu_items. push ( menu_text) ;
7462 tooltip. push ( tooltip_text) ;
7563 } ;
0 commit comments