Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: device/bluetooth/bluez/bluetooth_adapter_bluez.cc

Issue 2483783005: bluetooth: bluez: Implement RetrieveGattConnectedDevicesWithDiscoveryFilter (Closed)
Patch Set: Clean up Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: device/bluetooth/bluez/bluetooth_adapter_bluez.cc
diff --git a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
index ce20a7d469957a535d854df7c5d6ab4b809d3f13..e1ed672fff233aa616cd97d843953299ad373e1d 100644
--- a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
+++ b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
@@ -52,6 +52,7 @@
using device::BluetoothAdapter;
using device::BluetoothDevice;
+using UUIDSet = device::BluetoothDevice::UUIDSet;
using device::BluetoothDiscoveryFilter;
using device::BluetoothSocket;
using device::BluetoothUUID;
@@ -398,6 +399,35 @@ bool BluetoothAdapterBlueZ::IsDiscovering() const {
return properties->discovering.value();
}
+std::unordered_map<BluetoothDevice*, UUIDSet>
+BluetoothAdapterBlueZ::RetrieveGattConnectedDevicesWithDiscoveryFilter(
+ const BluetoothDiscoveryFilter& discovery_filter) {
+ std::unordered_map<BluetoothDevice*, UUIDSet> connected_devices;
+
+ std::set<BluetoothUUID> filter_uuids;
+ discovery_filter.GetUUIDs(filter_uuids);
+
+ for (BluetoothDevice* device : GetDevices()) {
+ if (device->IsGattConnected() &&
+ (device->GetType() & device::BLUETOOTH_TRANSPORT_LE)) {
+ UUIDSet device_uuids = device->GetUUIDs();
+
+ UUIDSet intersection;
+ for (const BluetoothUUID& uuid : filter_uuids) {
+ if (base::ContainsKey(device_uuids, uuid)) {
+ intersection.insert(uuid);
+ }
+ }
+
+ if (filter_uuids.empty() || !intersection.empty()) {
+ connected_devices[device] = std::move(intersection);
+ }
+ }
+ }
+
+ return connected_devices;
+}
+
BluetoothAdapterBlueZ::UUIDList BluetoothAdapterBlueZ::GetUUIDs() const {
bluez::BluetoothAdapterClient::Properties* properties =
bluez::BluezDBusManager::Get()
« no previous file with comments | « device/bluetooth/bluez/bluetooth_adapter_bluez.h ('k') | device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698