Loading system/gd/rust/linux/client/src/callbacks.rs +39 −11 Original line number Diff line number Diff line Loading @@ -339,7 +339,7 @@ impl RPCProxy for ScannerCallback { pub(crate) struct AdvertisingSetCallback { objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, Loading @@ -348,11 +348,11 @@ pub(crate) struct AdvertisingSetCallback { impl AdvertisingSetCallback { 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 @@ -362,7 +362,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { print_info!( "on_advertising_set_started: reg_id = {}, advertiser_id = {}, tx_power = {}, status = {}", Loading @@ -371,6 +371,23 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { tx_power, status ); if status == GattStatus::Success { if let Some(Some(ex_adv_id)) = self.context.lock().unwrap().adv_sets.insert(reg_id, Some(advertiser_id)) { print_error!( "on_advertising_set_started: previous advertising set ({}) registered ({}) is omitted", ex_adv_id, reg_id, ); } } else { print_error!( "on_advertising_set_started: remove advertising set registered ({})", reg_id ); self.context.lock().unwrap().adv_sets.remove(®_id); } } fn on_own_address_read(&self, advertiser_id: i32, address_type: i32, address: String) { Loading @@ -384,9 +401,10 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { fn on_advertising_set_stopped(&self, advertiser_id: i32) { print_info!("on_advertising_set_stopped: advertiser_id = {}", advertiser_id); self.context.lock().unwrap().adv_sets.retain(|_, val| *val != Some(advertiser_id)); } fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) { print_info!( "on_advertising_enabled: advertiser_id = {}, enable = {}, status = {}", advertiser_id, Loading @@ -395,7 +413,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_advertising_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -403,7 +421,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) { fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_scan_response_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -411,7 +429,12 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) { fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { print_info!( "on_advertising_parameters_updated: advertiser_id = {}, tx_power: {}, status = {}", advertiser_id, Loading @@ -420,7 +443,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_periodic_advertising_parameters_updated: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -428,7 +451,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_periodic_advertising_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -436,7 +459,12 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { print_info!( "on_periodic_advertising_enabled: advertiser_id = {}, enable = {}, status = {}", advertiser_id, Loading system/gd/rust/linux/client/src/command_handler.rs +83 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use crate::ClientContext; use crate::{console_red, console_yellow, print_error, print_info}; use bt_topshim::btif::{BtConnectionState, BtTransport}; use btstack::bluetooth::{BluetoothDevice, IBluetooth, IBluetoothQA}; use btstack::bluetooth_adv::{AdvertiseData, AdvertisingSetParameters}; use btstack::bluetooth_gatt::{IBluetoothGatt, RSSISettings, ScanSettings, ScanType}; use btstack::uuid::{Profile, UuidHelper, UuidWrapper}; use manager_service::iface_bluetooth_manager::IBluetoothManager; Loading Loading @@ -156,6 +157,14 @@ fn build_commands() -> HashMap<String, CommandOption> { function_pointer: CommandHandler::cmd_le_scan, }, ); command_options.insert( String::from("advertise"), CommandOption { rules: vec![String::from("advertise <on|off>")], description: String::from("Advertising utilities."), function_pointer: CommandHandler::cmd_advertise, }, ); command_options.insert( String::from("get-address"), CommandOption { Loading Loading @@ -881,6 +890,80 @@ impl CommandHandler { }); } // TODO(b/233128828): More options will be implemented to test BLE advertising. // Such as setting advertising parameters, starting multiple advertising sets, etc. fn cmd_advertise(&mut self, args: &Vec<String>) { if !self.context.lock().unwrap().adapter_ready { self.adapter_not_ready(); return; } if self.context.lock().unwrap().advertiser_callback_id == None { return; } let callback_id = self.context.lock().unwrap().advertiser_callback_id.clone().unwrap(); enforce_arg_len(args, 1, "advertise <commands>", || match &args[0][0..] { "on" => { if self.context.lock().unwrap().adv_sets.keys().len() > 0 { print_error!("Already started advertising"); return; } let params = AdvertisingSetParameters { connectable: false, scannable: false, is_legacy: true, is_anonymous: false, include_tx_power: true, primary_phy: 1, secondary_phy: 1, interval: 160, tx_power_level: -21, own_address_type: 0, // random }; let data = AdvertiseData { service_uuids: Vec::<String>::new(), solicit_uuids: Vec::<String>::new(), transport_discovery_data: Vec::<Vec<u8>>::new(), manufacturer_data: HashMap::<i32, Vec<u8>>::from([(0, vec![0, 1, 2])]), service_data: HashMap::<String, Vec<u8>>::new(), include_tx_power_level: true, include_device_name: false, }; let reg_id = self .context .lock() .unwrap() .gatt_dbus .as_mut() .unwrap() .start_advertising_set(params, data, None, None, None, 0, 0, callback_id); print_info!("Starting advertising set for reg_id = {}", reg_id); } "off" => { let adv_sets = self.context.lock().unwrap().adv_sets.clone(); for (_, val) in adv_sets.iter() { if let Some(&adv_id) = val.as_ref() { print_info!("Stopping advertising set {}", adv_id); self.context .lock() .unwrap() .gatt_dbus .as_mut() .unwrap() .stop_advertising_set(adv_id); } } self.context.lock().unwrap().adv_sets.clear(); } _ => { println!("Invalid argument '{}'", args[0]); } }); } /// Get the list of rules of supported commands pub fn get_command_rule_list(&self) -> Vec<String> { self.command_options.values().flat_map(|cmd| cmd.rules.clone()).collect() Loading system/gd/rust/linux/client/src/dbus_iface.rs +20 −8 Original line number Diff line number Diff line Loading @@ -629,7 +629,7 @@ impl IAdvertisingSetCallback for IAdvertisingSetCallbackDBus { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { } Loading @@ -640,25 +640,37 @@ impl IAdvertisingSetCallback for IAdvertisingSetCallbackDBus { fn on_advertising_set_stopped(&self, advertiser_id: i32) {} #[dbus_method("OnAdvertisingEnabled")] fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) {} fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) {} #[dbus_method("OnAdvertisingDataSet")] fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) {} fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnScanResponseDataSet")] fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) {} fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnAdvertisingParametersUpdated")] fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) {} fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { } #[dbus_method("OnPeriodicAdvertisingParametersUpdated")] fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) {} fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnPeriodicAdvertisingDataSet")] fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) {} fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnPeriodicAdvertisingEnabled")] fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) {} fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { } } #[dbus_propmap(AdvertisingSetParameters)] Loading system/gd/rust/linux/client/src/main.rs +4 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,9 @@ pub(crate) struct ClientContext { /// Keeps track of active LE scanners. active_scanner_ids: HashSet<u8>, /// Advertising sets started/registered. Map from reg_id to advertiser_id. adv_sets: HashMap<i32, Option<i32>>, } impl ClientContext { Loading Loading @@ -130,6 +133,7 @@ impl ClientContext { scanner_callback_id: None, advertiser_callback_id: None, active_scanner_ids: HashSet::new(), adv_sets: HashMap::new(), } } Loading system/gd/rust/linux/service/src/iface_bluetooth_gatt.rs +18 −8 Original line number Diff line number Diff line Loading @@ -242,7 +242,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallbackDBus { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { dbus_generated!() } Loading @@ -258,37 +258,47 @@ impl IAdvertisingSetCallback for AdvertisingSetCallbackDBus { } #[dbus_method("OnAdvertisingEnabled")] fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) { dbus_generated!() } #[dbus_method("OnAdvertisingDataSet")] fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnScanResponseDataSet")] fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) { fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnAdvertisingParametersUpdated")] fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) { fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingParametersUpdated")] fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingDataSet")] fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingEnabled")] fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { dbus_generated!() } } Loading Loading
system/gd/rust/linux/client/src/callbacks.rs +39 −11 Original line number Diff line number Diff line Loading @@ -339,7 +339,7 @@ impl RPCProxy for ScannerCallback { pub(crate) struct AdvertisingSetCallback { objpath: String, _context: Arc<Mutex<ClientContext>>, context: Arc<Mutex<ClientContext>>, dbus_connection: Arc<SyncConnection>, dbus_crossroads: Arc<Mutex<Crossroads>>, Loading @@ -348,11 +348,11 @@ pub(crate) struct AdvertisingSetCallback { impl AdvertisingSetCallback { 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 @@ -362,7 +362,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { print_info!( "on_advertising_set_started: reg_id = {}, advertiser_id = {}, tx_power = {}, status = {}", Loading @@ -371,6 +371,23 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { tx_power, status ); if status == GattStatus::Success { if let Some(Some(ex_adv_id)) = self.context.lock().unwrap().adv_sets.insert(reg_id, Some(advertiser_id)) { print_error!( "on_advertising_set_started: previous advertising set ({}) registered ({}) is omitted", ex_adv_id, reg_id, ); } } else { print_error!( "on_advertising_set_started: remove advertising set registered ({})", reg_id ); self.context.lock().unwrap().adv_sets.remove(®_id); } } fn on_own_address_read(&self, advertiser_id: i32, address_type: i32, address: String) { Loading @@ -384,9 +401,10 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { fn on_advertising_set_stopped(&self, advertiser_id: i32) { print_info!("on_advertising_set_stopped: advertiser_id = {}", advertiser_id); self.context.lock().unwrap().adv_sets.retain(|_, val| *val != Some(advertiser_id)); } fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) { print_info!( "on_advertising_enabled: advertiser_id = {}, enable = {}, status = {}", advertiser_id, Loading @@ -395,7 +413,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_advertising_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -403,7 +421,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) { fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_scan_response_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -411,7 +429,12 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) { fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { print_info!( "on_advertising_parameters_updated: advertiser_id = {}, tx_power: {}, status = {}", advertiser_id, Loading @@ -420,7 +443,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_periodic_advertising_parameters_updated: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -428,7 +451,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { print_info!( "on_periodic_advertising_data_set: advertiser_id = {}, status = {}", advertiser_id, Loading @@ -436,7 +459,12 @@ impl IAdvertisingSetCallback for AdvertisingSetCallback { ); } fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { print_info!( "on_periodic_advertising_enabled: advertiser_id = {}, enable = {}, status = {}", advertiser_id, Loading
system/gd/rust/linux/client/src/command_handler.rs +83 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use crate::ClientContext; use crate::{console_red, console_yellow, print_error, print_info}; use bt_topshim::btif::{BtConnectionState, BtTransport}; use btstack::bluetooth::{BluetoothDevice, IBluetooth, IBluetoothQA}; use btstack::bluetooth_adv::{AdvertiseData, AdvertisingSetParameters}; use btstack::bluetooth_gatt::{IBluetoothGatt, RSSISettings, ScanSettings, ScanType}; use btstack::uuid::{Profile, UuidHelper, UuidWrapper}; use manager_service::iface_bluetooth_manager::IBluetoothManager; Loading Loading @@ -156,6 +157,14 @@ fn build_commands() -> HashMap<String, CommandOption> { function_pointer: CommandHandler::cmd_le_scan, }, ); command_options.insert( String::from("advertise"), CommandOption { rules: vec![String::from("advertise <on|off>")], description: String::from("Advertising utilities."), function_pointer: CommandHandler::cmd_advertise, }, ); command_options.insert( String::from("get-address"), CommandOption { Loading Loading @@ -881,6 +890,80 @@ impl CommandHandler { }); } // TODO(b/233128828): More options will be implemented to test BLE advertising. // Such as setting advertising parameters, starting multiple advertising sets, etc. fn cmd_advertise(&mut self, args: &Vec<String>) { if !self.context.lock().unwrap().adapter_ready { self.adapter_not_ready(); return; } if self.context.lock().unwrap().advertiser_callback_id == None { return; } let callback_id = self.context.lock().unwrap().advertiser_callback_id.clone().unwrap(); enforce_arg_len(args, 1, "advertise <commands>", || match &args[0][0..] { "on" => { if self.context.lock().unwrap().adv_sets.keys().len() > 0 { print_error!("Already started advertising"); return; } let params = AdvertisingSetParameters { connectable: false, scannable: false, is_legacy: true, is_anonymous: false, include_tx_power: true, primary_phy: 1, secondary_phy: 1, interval: 160, tx_power_level: -21, own_address_type: 0, // random }; let data = AdvertiseData { service_uuids: Vec::<String>::new(), solicit_uuids: Vec::<String>::new(), transport_discovery_data: Vec::<Vec<u8>>::new(), manufacturer_data: HashMap::<i32, Vec<u8>>::from([(0, vec![0, 1, 2])]), service_data: HashMap::<String, Vec<u8>>::new(), include_tx_power_level: true, include_device_name: false, }; let reg_id = self .context .lock() .unwrap() .gatt_dbus .as_mut() .unwrap() .start_advertising_set(params, data, None, None, None, 0, 0, callback_id); print_info!("Starting advertising set for reg_id = {}", reg_id); } "off" => { let adv_sets = self.context.lock().unwrap().adv_sets.clone(); for (_, val) in adv_sets.iter() { if let Some(&adv_id) = val.as_ref() { print_info!("Stopping advertising set {}", adv_id); self.context .lock() .unwrap() .gatt_dbus .as_mut() .unwrap() .stop_advertising_set(adv_id); } } self.context.lock().unwrap().adv_sets.clear(); } _ => { println!("Invalid argument '{}'", args[0]); } }); } /// Get the list of rules of supported commands pub fn get_command_rule_list(&self) -> Vec<String> { self.command_options.values().flat_map(|cmd| cmd.rules.clone()).collect() Loading
system/gd/rust/linux/client/src/dbus_iface.rs +20 −8 Original line number Diff line number Diff line Loading @@ -629,7 +629,7 @@ impl IAdvertisingSetCallback for IAdvertisingSetCallbackDBus { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { } Loading @@ -640,25 +640,37 @@ impl IAdvertisingSetCallback for IAdvertisingSetCallbackDBus { fn on_advertising_set_stopped(&self, advertiser_id: i32) {} #[dbus_method("OnAdvertisingEnabled")] fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) {} fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) {} #[dbus_method("OnAdvertisingDataSet")] fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) {} fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnScanResponseDataSet")] fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) {} fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnAdvertisingParametersUpdated")] fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) {} fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { } #[dbus_method("OnPeriodicAdvertisingParametersUpdated")] fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) {} fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnPeriodicAdvertisingDataSet")] fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) {} fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) {} #[dbus_method("OnPeriodicAdvertisingEnabled")] fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) {} fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { } } #[dbus_propmap(AdvertisingSetParameters)] Loading
system/gd/rust/linux/client/src/main.rs +4 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,9 @@ pub(crate) struct ClientContext { /// Keeps track of active LE scanners. active_scanner_ids: HashSet<u8>, /// Advertising sets started/registered. Map from reg_id to advertiser_id. adv_sets: HashMap<i32, Option<i32>>, } impl ClientContext { Loading Loading @@ -130,6 +133,7 @@ impl ClientContext { scanner_callback_id: None, advertiser_callback_id: None, active_scanner_ids: HashSet::new(), adv_sets: HashMap::new(), } } Loading
system/gd/rust/linux/service/src/iface_bluetooth_gatt.rs +18 −8 Original line number Diff line number Diff line Loading @@ -242,7 +242,7 @@ impl IAdvertisingSetCallback for AdvertisingSetCallbackDBus { reg_id: i32, advertiser_id: i32, tx_power: i32, status: i32, status: GattStatus, ) { dbus_generated!() } Loading @@ -258,37 +258,47 @@ impl IAdvertisingSetCallback for AdvertisingSetCallbackDBus { } #[dbus_method("OnAdvertisingEnabled")] fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: GattStatus) { dbus_generated!() } #[dbus_method("OnAdvertisingDataSet")] fn on_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnScanResponseDataSet")] fn on_scan_response_data_set(&self, advertiser_id: i32, status: i32) { fn on_scan_response_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnAdvertisingParametersUpdated")] fn on_advertising_parameters_updated(&self, advertiser_id: i32, tx_power: i32, status: i32) { fn on_advertising_parameters_updated( &self, advertiser_id: i32, tx_power: i32, status: GattStatus, ) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingParametersUpdated")] fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_parameters_updated(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingDataSet")] fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: i32) { fn on_periodic_advertising_data_set(&self, advertiser_id: i32, status: GattStatus) { dbus_generated!() } #[dbus_method("OnPeriodicAdvertisingEnabled")] fn on_periodic_advertising_enabled(&self, advertiser_id: i32, enable: bool, status: i32) { fn on_periodic_advertising_enabled( &self, advertiser_id: i32, enable: bool, status: GattStatus, ) { dbus_generated!() } } Loading