From bd741337e89eb5f7c5c44eaea4c44af06c15efc3 Mon Sep 17 00:00:00 2001 From: Vibhav Pant Date: Fri, 8 Sep 2023 16:48:28 +0530 Subject: [PATCH] Set discovery filter to "bredr" before starting discovery. --- .../linux/bluetooth_classic_medium.cc | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/internal/platform/implementation/linux/bluetooth_classic_medium.cc b/internal/platform/implementation/linux/bluetooth_classic_medium.cc index c1001391..6a9ec652 100644 --- a/internal/platform/implementation/linux/bluetooth_classic_medium.cc +++ b/internal/platform/implementation/linux/bluetooth_classic_medium.cc @@ -117,13 +117,29 @@ bool BluetoothClassicMedium::StartDiscovery( discovery_cb_ = std::make_shared(std::move(discovery_callback)); + std::map filter; + filter["Transport"] = "bredr"; + auto &adapter = adapter_.GetBluezAdapterObject(); + try { - NEARBY_LOGS(INFO) << __func__ << ": Starting discovery on " - << adapter_.GetObjectPath(); - adapter_.GetBluezAdapterObject().StartDiscovery(); + adapter.SetDiscoveryFilter(filter); } catch (const sdbus::Error &e) { - DBUS_LOG_METHOD_CALL_ERROR(&adapter_.GetBluezAdapterObject(), - "StartDiscovery", e); + DBUS_LOG_METHOD_CALL_ERROR(&adapter, "SetDiscoveryFilter", e); + return false; + } + try { + adapter.StartDiscovery(); + } catch (const sdbus::Error &e) { + DBUS_LOG_METHOD_CALL_ERROR(&adapter, "StartDiscovery", e); + return false; + } + + try { + NEARBY_LOGS(INFO) << __func__ << ": Starting BR/EDR discovery on " + << adapter_.GetObjectPath(); + adapter.StartDiscovery(); + } catch (const sdbus::Error &e) { + DBUS_LOG_METHOD_CALL_ERROR(&adapter, "StartDiscovery", e); discovery_cb_.reset(); return false; }