From 5b485850925cc77c827b3e46d6f2236fe3329d7a Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 29 Sep 2020 14:50:05 -0700 Subject: [PATCH] bluetooth discovery: report more information about progress We certainly should log errors and the complete list of discovered devices. Also, it's good practice to set a specific search time (I picked three minutes). This way we won't constantly scan and drain resources. Signed-off-by: Dirk Hohndel --- core/btdiscovery.cpp | 17 +++++++++++++++++ core/btdiscovery.h | 1 + 2 files changed, 18 insertions(+) diff --git a/core/btdiscovery.cpp b/core/btdiscovery.cpp index 31cf7fa5d..6538ba117 100644 --- a/core/btdiscovery.cpp +++ b/core/btdiscovery.cpp @@ -184,7 +184,15 @@ void BTDiscovery::BTDiscoveryReDiscover() #if !defined(Q_OS_ANDROID) if (discoveryAgent == nullptr) { discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this); + discoveryAgent->setLowEnergyDiscoveryTimeout(3 * 60 * 1000); // search for three minutes connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered, this, &BTDiscovery::btDeviceDiscovered); + connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished, this, &BTDiscovery::btDeviceDiscoveryFinished); + connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::canceled, this, &BTDiscovery::btDeviceDiscoveryFinished); + connect(discoveryAgent, QOverload::of(&QBluetoothDeviceDiscoveryAgent::error), + [this](QBluetoothDeviceDiscoveryAgent::Error error){ + qDebug() << "device discovery received error" << discoveryAgent->errorString(); + }); + qDebug() << "discovery methods" << (int)QBluetoothDeviceDiscoveryAgent::supportedDiscoveryMethods(); } qDebug() << "starting BLE discovery"; discoveryAgent->start(); @@ -247,6 +255,15 @@ QString markBLEAddress(const QBluetoothDeviceInfo *device) return btDeviceAddress(device, isBle); } +void BTDiscovery::btDeviceDiscoveryFinished() +{ + qDebug() << "BT/BLE finished discovery"; + QList devList = discoveryAgent->discoveredDevices(); + for (QBluetoothDeviceInfo device: devList) { + qDebug() << device.name() << device.address().toString(); + } +} + void BTDiscovery::btDeviceDiscovered(const QBluetoothDeviceInfo &device) { btPairedDevice this_d; diff --git a/core/btdiscovery.h b/core/btdiscovery.h index 953e707b4..85f2d4d4a 100644 --- a/core/btdiscovery.h +++ b/core/btdiscovery.h @@ -43,6 +43,7 @@ public: int productIdx; }; + void btDeviceDiscoveryFinished(); void btDeviceDiscovered(const QBluetoothDeviceInfo &device); void btDeviceDiscoveredMain(const btPairedDevice &device, bool fromPaired); bool btAvailable() const;