summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-29 14:50:05 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-30 16:40:41 -0700
commit5b485850925cc77c827b3e46d6f2236fe3329d7a (patch)
tree3ce194d185620bc0dfa6d8fefac8977c90f508bf
parentca23147228f98ba0a97bcfbd6d22854a60b30dd9 (diff)
downloadsubsurface-5b485850925cc77c827b3e46d6f2236fe3329d7a.tar.gz
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 <dirk@hohndel.org>
-rw-r--r--core/btdiscovery.cpp17
-rw-r--r--core/btdiscovery.h1
2 files changed, 18 insertions, 0 deletions
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<QBluetoothDeviceDiscoveryAgent::Error>::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<QBluetoothDeviceInfo> 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;