diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2017-05-29 15:07:57 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-05-29 15:08:28 -0700 |
commit | 18eff8f2b39bb304908c28b08b124cb7bb48a6ed (patch) | |
tree | 1f45e1510bf9d18adc522911606e97a41a4f513c | |
parent | 5c4f9986fe6f830fef37379bae35599a5427b9c0 (diff) | |
download | subsurface-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.cpp | 32 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.h | 9 |
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: |