diff --git a/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/caldevice.cpp b/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/caldevice.cpp index 92f3814..7bc1ada 100644 --- a/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/caldevice.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/caldevice.cpp @@ -1,7 +1,10 @@ #include "caldevice.h" +#include "Util/util.h" + #include #include + using namespace std; static QString getLocalDateTimeWithUtcOffset() @@ -173,7 +176,7 @@ void CalDevice::loadCoefficientSets(QStringList names, bool fast) { coeffSets.clear(); abortLoading = false; - if(fast) { + if(fast && Util::firmwareEqualOrHigher(firmware, "0.2.1")) { loadThread = new std::thread(&CalDevice::loadCoefficientSetsThreadFast, this, names); } else { loadThread = new std::thread(&CalDevice::loadCoefficientSetsThreadSlow, this, names); diff --git a/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/usbdevice.cpp b/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/usbdevice.cpp index a6d89e7..7915efd 100644 --- a/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/usbdevice.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Calibration/LibreCAL/usbdevice.cpp @@ -212,7 +212,6 @@ void USBDevice::SearchDevices(std::function lck(mtx); do { handled_len = 0; @@ -255,7 +253,6 @@ void USBDevice::ReceivedData() // add received line to buffer lineBuffer.append(line); -// qDebug() << "append" << line << "size" << lineBuffer.size(); usbBuffer->removeBytes(handled_len + 1); } @@ -263,7 +260,6 @@ void USBDevice::ReceivedData() if(lineBuffer.size() > 0) { cv.notify_one(); } -// qDebug() << "notify done"; } void USBDevice::flushReceived() diff --git a/Software/PC_Application/LibreVNA-GUI/Util/util.cpp b/Software/PC_Application/LibreVNA-GUI/Util/util.cpp index 5bd8284..8dce2ea 100644 --- a/Software/PC_Application/LibreVNA-GUI/Util/util.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Util/util.cpp @@ -201,3 +201,27 @@ QColor Util::getIntensityGradeColor(double intensity) return Qt::black; } } + +bool Util::firmwareEqualOrHigher(QString firmware, QString compare) +{ + QStringList f = firmware.split("."); + QStringList c = compare.split("."); + if(f.size() != 3 || c.size() != 3) { + return false; + } + if(f[0].toInt() < c[0].toInt()) { + return false; + } else if(f[0].toInt() > c[0].toInt()) { + return true; + } + if(f[1].toInt() < c[1].toInt()) { + return false; + } else if(f[1].toInt() > c[1].toInt()) { + return true; + } + if(f[2].toInt() < c[2].toInt()) { + return false; + } else { + return true; + } +} diff --git a/Software/PC_Application/LibreVNA-GUI/Util/util.h b/Software/PC_Application/LibreVNA-GUI/Util/util.h index 4963a52..47c6bb7 100644 --- a/Software/PC_Application/LibreVNA-GUI/Util/util.h +++ b/Software/PC_Application/LibreVNA-GUI/Util/util.h @@ -166,6 +166,8 @@ namespace Util { // intensity color scale, input value from 0.0 to 1.0 QColor getIntensityGradeColor(double intensity); + + bool firmwareEqualOrHigher(QString firmware, QString compare); } #endif // UTILH_H diff --git a/Software/PC_Application/LibreVNA-Test/utiltests.cpp b/Software/PC_Application/LibreVNA-Test/utiltests.cpp index 95d3f4e..c8badd3 100644 --- a/Software/PC_Application/LibreVNA-Test/utiltests.cpp +++ b/Software/PC_Application/LibreVNA-Test/utiltests.cpp @@ -63,3 +63,18 @@ void UtilTests::NoisyCircleApproximation() QVERIFY(abs(center.real() - circCenter.real()) <= maxDelta); QVERIFY(abs(center.imag() - circCenter.imag()) <= maxDelta); } + +void UtilTests::FirmwareComparison() +{ + QVERIFY(Util::firmwareEqualOrHigher("3.1.2", "2.1.2") == true); + QVERIFY(Util::firmwareEqualOrHigher("2.1.2", "2.0.2") == true); + QVERIFY(Util::firmwareEqualOrHigher("2.1.2", "2.1.1") == true); + QVERIFY(Util::firmwareEqualOrHigher("2.1.2", "2.1.2") == true); + QVERIFY(Util::firmwareEqualOrHigher("2.1.1", "2.1.2") == false); + + QVERIFY(Util::firmwareEqualOrHigher("2.2.2", "2.3.1") == false); + QVERIFY(Util::firmwareEqualOrHigher("2.2.2", "2.1.3") == true); + + QVERIFY(Util::firmwareEqualOrHigher("2.2.2", "2.3") == false); + QVERIFY(Util::firmwareEqualOrHigher("2.2", "2.3.1") == false); +} diff --git a/Software/PC_Application/LibreVNA-Test/utiltests.h b/Software/PC_Application/LibreVNA-Test/utiltests.h index 2c19026..4ac676a 100644 --- a/Software/PC_Application/LibreVNA-Test/utiltests.h +++ b/Software/PC_Application/LibreVNA-Test/utiltests.h @@ -13,6 +13,7 @@ private slots: void IdealCircleApproximation(); void IdealArcApproximation(); void NoisyCircleApproximation(); + void FirmwareComparison(); }; #endif // UTILTESTS_H