summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--core/btdiscovery.cpp8
-rw-r--r--core/downloadfromdcthread.cpp9
-rw-r--r--desktop-widgets/configuredivecomputerdialog.cpp2
-rw-r--r--desktop-widgets/downloadfromdivecomputer.cpp4
5 files changed, 13 insertions, 11 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a2b898fff..7e6315761 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,4 @@
+Mobile: fix failure to recognize several Aqualung BLE dive computers
Mobile: show dive tags on dive details page
Desktop: update SAC fields and other statistics when editing cylinders
Desktop: Reconnect the variations checkbox in planner
diff --git a/core/btdiscovery.cpp b/core/btdiscovery.cpp
index b70330410..298c0408c 100644
--- a/core/btdiscovery.cpp
+++ b/core/btdiscovery.cpp
@@ -83,16 +83,16 @@ static dc_descriptor_t *getDeviceType(QString btName)
// number. The model code matches the hex model (so "FQ" is 0x4651,
// where 'F' is 46h and 'Q' is 51h in ASCII).
vendor = "Aqualung";
- product = "i200c";
+ product = "i200C";
} else if (btName.contains(QRegularExpression("^FH\\d{6}$"))) {
vendor = "Aqualung";
- product = "i300c";
+ product = "i300C";
} else if (btName.contains(QRegularExpression("^FQ\\d{6}$"))) {
vendor = "Aqualung";
product = "i770R";
} else if (btName.contains(QRegularExpression("^FR\\d{6}$"))) {
vendor = "Aqualung";
- product = "i550c";
+ product = "i550C";
} else if (btName.contains(QRegularExpression("^ER\\d{6}$"))) {
vendor = "Oceanic";
product = "Pro Plus X";
@@ -111,7 +111,7 @@ static dc_descriptor_t *getDeviceType(QString btName)
// check if we found a known dive computer
if (!vendor.isEmpty() && !product.isEmpty()) {
- dc_descriptor_t *lookup = descriptorLookup.value(vendor + product);
+ dc_descriptor_t *lookup = descriptorLookup.value(vendor.toLower() + product.toLower());
if (!lookup)
qWarning("known dive computer %s not found in descriptorLookup", qPrintable(QString(vendor + product)));
return lookup;
diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp
index 8a3365842..d8a65c809 100644
--- a/core/downloadfromdcthread.cpp
+++ b/core/downloadfromdcthread.cpp
@@ -68,7 +68,7 @@ DownloadThread::DownloadThread() : downloadTable({ 0 }),
void DownloadThread::run()
{
auto internalData = m_data->internalData();
- internalData->descriptor = descriptorLookup[m_data->vendor() + m_data->product()];
+ internalData->descriptor = descriptorLookup[m_data->vendor().toLower() + m_data->product().toLower()];
internalData->download_table = &downloadTable;
internalData->sites = &diveSiteTable;
internalData->btname = strdup(m_data->devBluetoothName().toUtf8());
@@ -127,7 +127,7 @@ void fill_computer_list()
if (!productList[vendor].contains(product))
productList[vendor].append(product);
- descriptorLookup[QString(vendor) + QString(product)] = descriptor;
+ descriptorLookup[QString(vendor).toLower() + QString(product).toLower()] = descriptor;
}
dc_iterator_free(iterator);
Q_FOREACH (QString vendor, vendorList) {
@@ -157,7 +157,8 @@ void fill_computer_list()
if (!productList["Uemis"].contains("Zurich"))
productList["Uemis"].push_back("Zurich");
- descriptorLookup["UemisZurich"] = (dc_descriptor_t *)mydescriptor;
+ // note: keys in the descriptorLookup are always lowercase
+ descriptorLookup["uemiszurich"] = (dc_descriptor_t *)mydescriptor;
#endif
std::sort(vendorList.begin(), vendorList.end());
@@ -192,7 +193,7 @@ void show_computer_list()
Q_FOREACH (QString vendor, vendorList) {
QString msg = vendor + ": ";
Q_FOREACH (QString product, productList[vendor]) {
- dc_descriptor_t *descriptor = descriptorLookup[vendor + product];
+ dc_descriptor_t *descriptor = descriptorLookup[vendor.toLower() + product.toLower()];
unsigned int transport = dc_descriptor_get_transports(descriptor) & transportMask;
QString transportString = getTransportString(transport);
msg += product + " (" + transportString + "), ";
diff --git a/desktop-widgets/configuredivecomputerdialog.cpp b/desktop-widgets/configuredivecomputerdialog.cpp
index 2315f47ea..6fd855648 100644
--- a/desktop-widgets/configuredivecomputerdialog.cpp
+++ b/desktop-widgets/configuredivecomputerdialog.cpp
@@ -908,7 +908,7 @@ void ConfigureDiveComputerDialog::getDeviceData()
device_data.vendor = copy_qstring(selected_vendor);
device_data.product = copy_qstring(selected_product);
- device_data.descriptor = descriptorLookup.value(selected_vendor + selected_product);
+ device_data.descriptor = descriptorLookup.value(selected_vendor.toLower() + selected_product.toLower());
device_data.deviceid = device_data.diveid = 0;
qPrefDiveComputer::set_device(device_data.devname);
diff --git a/desktop-widgets/downloadfromdivecomputer.cpp b/desktop-widgets/downloadfromdivecomputer.cpp
index cf3aad492..3c84683af 100644
--- a/desktop-widgets/downloadfromdivecomputer.cpp
+++ b/desktop-widgets/downloadfromdivecomputer.cpp
@@ -318,7 +318,7 @@ void DownloadFromDCWidget::on_vendor_currentIndexChanged(const QString &vendor)
productModel.setStringList(productList[vendor]);
ui.product->setCurrentIndex(0);
- descriptor = descriptorLookup.value(ui.vendor->currentText() + ui.product->currentText());
+ descriptor = descriptorLookup.value(ui.vendor->currentText().toLower() + ui.product->currentText().toLower());
transport = dc_descriptor_get_transports(descriptor);
fill_device_list(transport);
}
@@ -542,7 +542,7 @@ void DownloadFromDCWidget::updateDeviceEnabled()
{
// Set up the DC descriptor
dc_descriptor_t *descriptor = NULL;
- descriptor = descriptorLookup.value(ui.vendor->currentText() + ui.product->currentText());
+ descriptor = descriptorLookup.value(ui.vendor->currentText().toLower() + ui.product->currentText().toLower());
// call dc_descriptor_get_transport to see if the dc_transport_t is DC_TRANSPORT_SERIAL
if (dc_descriptor_get_transports(descriptor) & (DC_TRANSPORT_SERIAL | DC_TRANSPORT_USBSTORAGE)) {