summaryrefslogtreecommitdiff
path: root/system/gd/rust/linux/stack/src
diff options
context:
space:
mode:
Diffstat (limited to 'system/gd/rust/linux/stack/src')
-rw-r--r--system/gd/rust/linux/stack/src/bluetooth.rs49
1 files changed, 23 insertions, 26 deletions
diff --git a/system/gd/rust/linux/stack/src/bluetooth.rs b/system/gd/rust/linux/stack/src/bluetooth.rs
index c3b1d3218f..ef9ea31ae9 100644
--- a/system/gd/rust/linux/stack/src/bluetooth.rs
+++ b/system/gd/rust/linux/stack/src/bluetooth.rs
@@ -373,6 +373,22 @@ impl Bluetooth {
}
};
}
+
+ fn get_remote_device_if_found(
+ &self,
+ device: &BluetoothDevice,
+ ) -> Option<&BluetoothDeviceContext> {
+ self.bonded_devices.get(&device.address).or_else(|| self.found_devices.get(&device.address))
+ }
+
+ fn get_remote_device_property(
+ &self,
+ device: &BluetoothDevice,
+ property_type: &BtPropertyType,
+ ) -> Option<BluetoothProperty> {
+ self.get_remote_device_if_found(&device)
+ .and_then(|d| d.properties.get(property_type).and_then(|p| Some(p.clone())))
+ }
}
#[btif_callbacks_dispatcher(Bluetooth, dispatch_base_callbacks, BaseCallbacks)]
@@ -1055,35 +1071,16 @@ impl IBluetooth for Bluetooth {
}
fn get_remote_uuids(&self, device: BluetoothDevice) -> Vec<Uuid128Bit> {
- // Device must exist in either bonded or found list
- let found = self
- .bonded_devices
- .get(&device.address)
- .or_else(|| self.found_devices.get(&device.address));
-
- // Extract property from the device
- return found
- .and_then(|d| {
- if let Some(u) = d.properties.get(&BtPropertyType::Uuids) {
- match u {
- BluetoothProperty::Uuids(uuids) => {
- return Some(
- uuids.iter().map(|&x| x.uu.clone()).collect::<Vec<Uuid128Bit>>(),
- );
- }
- _ => (),
- }
- }
-
- None
- })
- .unwrap_or(vec![]);
+ match self.get_remote_device_property(&device, &BtPropertyType::Uuids) {
+ Some(BluetoothProperty::Uuids(uuids)) => {
+ return uuids.iter().map(|&x| x.uu.clone()).collect::<Vec<Uuid128Bit>>()
+ }
+ _ => return vec![],
+ }
}
fn fetch_remote_uuids(&self, device: BluetoothDevice) -> bool {
- if !self.bonded_devices.contains_key(&device.address)
- && !self.found_devices.contains_key(&device.address)
- {
+ if self.get_remote_device_if_found(&device).is_none() {
warn!("Won't fetch UUIDs on unknown device {}", device.address);
return false;
}