summaryrefslogtreecommitdiffstats
path: root/core/downloadfromdcthread.cpp
diff options
context:
space:
mode:
authorGravatar Jan Mulder <jlmulder@xs4all.nl>2017-06-10 14:22:28 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-06-12 10:59:05 -0700
commit5142d7409f9dc9a102ae9b5898b43b57621c660c (patch)
tree2a8f14ceffbaaf6d9a3cb78568412772c16c386f /core/downloadfromdcthread.cpp
parenta43cafa515f339b2a10069e7ebe926964449d447 (diff)
downloadsubsurface-5142d7409f9dc9a102ae9b5898b43b57621c660c.tar.gz
Mobile: add BT name to vendor/product capability
This adds a central function to convert a BT name to a vendor/product pair known to Subsurface. This allows interfacing from a paired BT dive computer, without actively selecting its type, but by selecting it from the list of paired BT devices. So, after this, downloading from multiple (paired) DCs is also possible. And not the niced piece of code ... Signed-off-by: Jan Mulder <jlmulder@xs4all.nl> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/downloadfromdcthread.cpp')
-rw-r--r--core/downloadfromdcthread.cpp59
1 files changed, 57 insertions, 2 deletions
diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp
index 64933b5bc..a98ab17b2 100644
--- a/core/downloadfromdcthread.cpp
+++ b/core/downloadfromdcthread.cpp
@@ -249,7 +249,7 @@ int DCDeviceData::getDetectedVendorIndex(const QString &currentText)
QList<btVendorProduct> btAllDevices = BTDiscovery::instance()->getBtAllDevices();
// Pick the vendor of the first confirmed find of a DC (if any), but
- // only return a true vendow, and not our virtual one
+ // only return a true vendor, and not our virtual one
if (!btDCs.isEmpty() && currentText != QObject::tr("Paired Bluetooth Devices")) {
qDebug() << "getDetectedVendorIndex" << currentText << btDCs.first().vendorIdx;
return btDCs.first().vendorIdx;
@@ -311,7 +311,62 @@ QString DCDeviceData::getDetectedDeviceAddress(const QString &currentVendorText,
qDebug() << "getDetectedDeviceAddress" << btAddr;
return btAddr;
}
-
+#endif
return QString();
+}
+
+QString DCDeviceData::getDeviceDescriptorVendor(const QString &currentVendorText,
+ const QString &currentProductText)
+{
+#if defined(BT_SUPPORT)
+ QList<btVendorProduct> btDCs = BTDiscovery::instance()->getBtDcs();
+ QList<btVendorProduct> btAllDevices = BTDiscovery::instance()->getBtAllDevices();
+
+ // Pull the vendor from the first found dive computer that is been
+ // detected as a possible real dive computer (and not some other paired
+ // BT device
+ if (currentVendorText != QObject::tr("Paired Bluetooth Devices") && !btDCs.isEmpty()) {
+ QString dcVendor = dc_descriptor_get_vendor(btDCs.first().dcDescriptor);
+ qDebug() << "getDeviceDescriptorVendor" << dcVendor;
+ return dcVendor;
+ }
+
+ // if the above fails, pull vendor from the selected paired device
+ // unsure being a dive computer
+ if (currentVendorText == QObject::tr("Paired Bluetooth Devices")) {
+ int i = productList[currentVendorText].indexOf(currentProductText);
+ QString dcVendor = dc_descriptor_get_vendor(btAllDevices[i].dcDescriptor);
+ qDebug() << "getDeviceDescriptorVendor" << dcVendor;
+ return dcVendor;
+ }
+#endif
+ return NULL;
+}
+
+QString DCDeviceData::getDeviceDescriptorProduct(const QString &currentVendorText,
+ const QString &currentProductText)
+{
+#if defined(BT_SUPPORT)
+ QList<btVendorProduct> btDCs = BTDiscovery::instance()->getBtDcs();
+ QList<btVendorProduct> btAllDevices = BTDiscovery::instance()->getBtAllDevices();
+
+ // Pull the product from the first found dive computer that is been
+ // detected as a possible real dive computer (and not some other paired
+ // BT device
+ if (currentVendorText != QObject::tr("Paired Bluetooth Devices") && !btDCs.isEmpty()) {
+ QString dcProduct = dc_descriptor_get_product(btDCs.first().dcDescriptor);
+ qDebug() << "getDeviceDescriptorProduct" << dcProduct;
+ return dcProduct;
+ }
+
+ // if the above fails, pull product from the selected paired device
+ // unsure being a dive computer
+ if (currentVendorText == QObject::tr("Paired Bluetooth Devices")) {
+ int i = productList[currentVendorText].indexOf(currentProductText);
+ QString dcProduct = dc_descriptor_get_product(btAllDevices[i].dcDescriptor);
+ qDebug() << "getDeviceDescriptorProduct" << dcProduct;
+ return dcProduct;
+ }
#endif
+ return NULL;
}