Loading system/gd/rust/linux/client/src/callbacks.rs +6 −4 Original line number Diff line number Diff line Loading @@ -283,7 +283,7 @@ impl RPCProxy for BtConnectionCallback { pub(crate) struct ScannerCallback { objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, Loading @@ -292,11 +292,11 @@ pub(crate) struct ScannerCallback { impl ScannerCallback { pub(crate) fn new( objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, ) -> Self { Self { objpath, _context, dbus_connection, dbus_crossroads } Self { objpath, context, dbus_connection, dbus_crossroads } } } Loading @@ -315,9 +315,11 @@ impl IScannerCallback for ScannerCallback { } fn on_scan_result(&self, scan_result: ScanResult) { if self.context.lock().unwrap().active_scanner_ids.len() > 0 { print_info!("Scan result: {:#?}", scan_result); } } } impl RPCProxy for ScannerCallback { fn get_object_id(&self) -> String { Loading system/gd/rust/linux/client/src/command_handler.rs +2 −0 Original line number Diff line number Diff line Loading @@ -855,6 +855,7 @@ impl CommandHandler { }, vec![], ); self.context.lock().unwrap().active_scanner_ids.insert(id); } else { print_error!("Failed parsing scanner id"); } Loading @@ -869,6 +870,7 @@ impl CommandHandler { if let Ok(id) = scanner_id { self.context.lock().unwrap().gatt_dbus.as_mut().unwrap().stop_scan(id); self.context.lock().unwrap().active_scanner_ids.remove(&id); } else { print_error!("Failed parsing scanner id"); } Loading system/gd/rust/linux/client/src/main.rs +5 −1 Original line number Diff line number Diff line use std::collections::HashMap; use std::collections::{HashMap, HashSet}; use std::sync::{Arc, Mutex}; use dbus::channel::MatchingReceiver; Loading Loading @@ -93,6 +93,9 @@ pub(crate) struct ClientContext { /// Identifies the callback to receive IAdvertisingSetCallback method calls. advertiser_callback_id: Option<u32>, /// Keeps track of active LE scanners. active_scanner_ids: HashSet<u8>, } impl ClientContext { Loading Loading @@ -126,6 +129,7 @@ impl ClientContext { dbus_crossroads, scanner_callback_id: None, advertiser_callback_id: None, active_scanner_ids: HashSet::new(), } } Loading Loading
system/gd/rust/linux/client/src/callbacks.rs +6 −4 Original line number Diff line number Diff line Loading @@ -283,7 +283,7 @@ impl RPCProxy for BtConnectionCallback { pub(crate) struct ScannerCallback { objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, Loading @@ -292,11 +292,11 @@ pub(crate) struct ScannerCallback { impl ScannerCallback { pub(crate) fn new( objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, ) -> Self { Self { objpath, _context, dbus_connection, dbus_crossroads } Self { objpath, context, dbus_connection, dbus_crossroads } } } Loading @@ -315,9 +315,11 @@ impl IScannerCallback for ScannerCallback { } fn on_scan_result(&self, scan_result: ScanResult) { if self.context.lock().unwrap().active_scanner_ids.len() > 0 { print_info!("Scan result: {:#?}", scan_result); } } } impl RPCProxy for ScannerCallback { fn get_object_id(&self) -> String { Loading
system/gd/rust/linux/client/src/command_handler.rs +2 −0 Original line number Diff line number Diff line Loading @@ -855,6 +855,7 @@ impl CommandHandler { }, vec![], ); self.context.lock().unwrap().active_scanner_ids.insert(id); } else { print_error!("Failed parsing scanner id"); } Loading @@ -869,6 +870,7 @@ impl CommandHandler { if let Ok(id) = scanner_id { self.context.lock().unwrap().gatt_dbus.as_mut().unwrap().stop_scan(id); self.context.lock().unwrap().active_scanner_ids.remove(&id); } else { print_error!("Failed parsing scanner id"); } Loading
system/gd/rust/linux/client/src/main.rs +5 −1 Original line number Diff line number Diff line use std::collections::HashMap; use std::collections::{HashMap, HashSet}; use std::sync::{Arc, Mutex}; use dbus::channel::MatchingReceiver; Loading Loading @@ -93,6 +93,9 @@ pub(crate) struct ClientContext { /// Identifies the callback to receive IAdvertisingSetCallback method calls. advertiser_callback_id: Option<u32>, /// Keeps track of active LE scanners. active_scanner_ids: HashSet<u8>, } impl ClientContext { Loading Loading @@ -126,6 +129,7 @@ impl ClientContext { dbus_crossroads, scanner_callback_id: None, advertiser_callback_id: None, active_scanner_ids: HashSet::new(), } } Loading