11use super :: internal:: { run_corebluetooth_thread, CoreBluetoothEvent , CoreBluetoothMessage } ;
2- use super :: peripheral:: Peripheral ;
2+ use super :: peripheral:: { Peripheral , PeripheralId } ;
33use crate :: api:: { BDAddr , Central , CentralEvent } ;
44use crate :: common:: adapter_manager:: AdapterManager ;
55use crate :: { Error , Result } ;
@@ -19,11 +19,6 @@ pub struct Adapter {
1919 sender : Sender < CoreBluetoothMessage > ,
2020}
2121
22- pub ( crate ) fn uuid_to_bdaddr ( uuid : & str ) -> BDAddr {
23- let b: [ u8 ; 6 ] = uuid. as_bytes ( ) [ 0 ..6 ] . try_into ( ) . unwrap ( ) ;
24- BDAddr :: try_from ( b) . unwrap ( )
25- }
26-
2722impl Adapter {
2823 pub ( crate ) async fn new ( ) -> Result < Self > {
2924 let ( sender, mut receiver) = mpsc:: channel ( 256 ) ;
@@ -53,31 +48,24 @@ impl Adapter {
5348 name,
5449 event_receiver,
5550 } => {
56- // TODO Gotta change uuid into a BDAddr for now. Expand
57- // library identifier type. :(
58- let id = uuid_to_bdaddr ( & uuid. to_string ( ) ) ;
59- manager_clone. add_peripheral (
60- id,
61- Peripheral :: new (
62- uuid,
63- name,
64- manager_clone. clone ( ) ,
65- event_receiver,
66- adapter_sender_clone. clone ( ) ,
67- ) ,
68- ) ;
69- manager_clone. emit ( CentralEvent :: DeviceDiscovered ( id) ) ;
51+ manager_clone. add_peripheral ( Peripheral :: new (
52+ uuid,
53+ name,
54+ manager_clone. clone ( ) ,
55+ event_receiver,
56+ adapter_sender_clone. clone ( ) ,
57+ ) ) ;
58+ manager_clone. emit ( CentralEvent :: DeviceDiscovered ( uuid. into ( ) ) ) ;
7059 }
7160 CoreBluetoothEvent :: DeviceUpdated { uuid, name } => {
72- let id = uuid_to_bdaddr ( & uuid. to_string ( ) ) ;
73- if let Some ( entry) = manager_clone. peripheral_mut ( id) {
61+ let id = uuid. into ( ) ;
62+ if let Some ( entry) = manager_clone. peripheral_mut ( & id) {
7463 entry. value ( ) . update_name ( & name) ;
7564 manager_clone. emit ( CentralEvent :: DeviceUpdated ( id) ) ;
7665 }
7766 }
7867 CoreBluetoothEvent :: DeviceDisconnected { uuid } => {
79- let id = uuid_to_bdaddr ( & uuid. to_string ( ) ) ;
80- manager_clone. emit ( CentralEvent :: DeviceDisconnected ( id) ) ;
68+ manager_clone. emit ( CentralEvent :: DeviceDisconnected ( uuid. into ( ) ) ) ;
8169 }
8270 _ => { }
8371 }
@@ -119,10 +107,8 @@ impl Central for Adapter {
119107 Ok ( self . manager . peripherals ( ) )
120108 }
121109
122- async fn peripheral ( & self , address : BDAddr ) -> Result < Peripheral > {
123- self . manager
124- . peripheral ( address)
125- . ok_or ( Error :: DeviceNotFound )
110+ async fn peripheral ( & self , id : & PeripheralId ) -> Result < Peripheral > {
111+ self . manager . peripheral ( id) . ok_or ( Error :: DeviceNotFound )
126112 }
127113
128114 async fn add_peripheral ( & self , _address : BDAddr ) -> Result < Peripheral > {
0 commit comments