summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2017-05-29 15:07:57 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-05-29 15:08:28 -0700
commit18eff8f2b39bb304908c28b08b124cb7bb48a6ed (patch)
tree1f45e1510bf9d18adc522911606e97a41a4f513c
parent5c4f9986fe6f830fef37379bae35599a5427b9c0 (diff)
downloadsubsurface-18eff8f2b39bb304908c28b08b124cb7bb48a6ed.tar.gz
QML UI: detect BT dive computers
If we find something that looks like a known BT dive computer, set things up so that we can use it later. If multiple dive computers are found, simply use the first. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--mobile-widgets/qmlmanager.cpp32
-rw-r--r--mobile-widgets/qmlmanager.h9
2 files changed, 41 insertions, 0 deletions
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index 510866137..d9ec7c1c8 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -207,16 +207,48 @@ void QMLManager::mergeLocalRepo()
void QMLManager::btDeviceDiscovered(const QBluetoothDeviceInfo &device)
{
QString newDevice = device.name();
+ QList<QBluetoothUuid> serviceUuids = device.serviceUuids();
+ foreach (QBluetoothUuid id, serviceUuids) {
+ qDebug() << id.toByteArray();
+ }
appendTextToLog("Found new device " + newDevice + " (" + device.address().toString() + ")");
QString vendor, product;
foreach (vendor, productList.keys()) {
if (productList[vendor].contains(newDevice)) {
appendTextToLog("this could be a " + vendor + " " + newDevice);
+ struct btVendorProduct btVP;
+ btVP.btdi = device;
+ btVP.vendorIdx = vendorList.indexOf(vendor);
+ btVP.productIdx = productList[vendor].indexOf(newDevice);
+ qDebug() << "adding new btDCs entry" << newDevice << btVP.vendorIdx << btVP.productIdx;
+ btDCs << btVP;
}
}
}
#endif
+int QMLManager::getVendorIndex()
+{
+#if BT_SUPPORT
+ if (!btDCs.isEmpty()) {
+ qDebug() << "getVendorIdx" << btDCs.first().vendorIdx;
+ return btDCs.first().vendorIdx;
+ }
+#endif
+ return -1;
+}
+
+int QMLManager::getProductIndex()
+{
+#if BT_SUPPORT
+ if (!btDCs.isEmpty()) {
+ qDebug() << "getProductIdx" << btDCs.first().productIdx;
+ return btDCs.first().productIdx;
+ }
+#endif
+ return -1;
+}
+
void QMLManager::finishSetup()
{
// Initialize cloud credentials.
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index 16085dc44..0d7f2aaa0 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -10,6 +10,7 @@
#if BT_SUPPORT
#include <QBluetoothLocalDevice>
#include <QBluetoothDeviceDiscoveryAgent>
+#include <QBluetoothUuid>
#endif
#include "core/gpslocation.h"
@@ -118,6 +119,8 @@ public:
bool showPin() const;
void setShowPin(bool enable);
Q_INVOKABLE QStringList getDCListFromVendor(const QString& vendor);
+ Q_INVOKABLE int getVendorIndex();
+ Q_INVOKABLE int getProductIndex();
#if BT_SUPPORT
void btDeviceDiscovered(const QBluetoothDeviceInfo &device);
#endif
@@ -206,6 +209,12 @@ private:
#if BT_SUPPORT
QBluetoothLocalDevice localBtDevice;
QBluetoothDeviceDiscoveryAgent *discoveryAgent;
+ struct btVendorProduct {
+ QBluetoothDeviceInfo btdi;
+ int vendorIdx;
+ int productIdx;
+ };
+ QList<struct btVendorProduct> btDCs;
#endif
signals: