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>
This commit is contained in:
Dirk Hohndel 2017-05-29 15:07:57 -07:00
parent 5c4f9986fe
commit 18eff8f2b3
2 changed files with 41 additions and 0 deletions

View file

@ -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.

View file

@ -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: