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)) {