diff options
author | Jesse Melhuish <melhuishj@google.com> | 2022-02-25 17:30:58 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-02-25 17:30:58 +0000 |
commit | 4da5be342b703b01db3916848a095a438b05faa3 (patch) | |
tree | e4ade5eb9a5083f62ce9c1cc8940a7ba2af8c2a4 /system/gd/rust/linux/stack/src | |
parent | 610ab871a264ab994a4b2f5d3d04023a9300e2f4 (diff) | |
parent | afc8b6471a3fa9304e27f9edb383e4290b8ac64e (diff) |
Merge "floss: Refactor BluetoothDevice checks into helper"
Diffstat (limited to 'system/gd/rust/linux/stack/src')
-rw-r--r-- | system/gd/rust/linux/stack/src/bluetooth.rs | 49 |
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; } |