Port extension test
This commit is contained in:
parent
96f8b6c90a
commit
b20e5598be
@ -141,27 +141,6 @@ void OnePort::fromJSON(nlohmann::json j)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::complex<double> OnePort::addTransmissionLine(std::complex<double> termination_reflection, double offset_impedance, double offset_delay, double offset_loss, double frequency)
|
|
||||||
{
|
|
||||||
// nomenclature and formulas from https://loco.lab.asu.edu/loco-memos/edges_reports/report_20130807.pdf
|
|
||||||
auto Gamma_T = termination_reflection;
|
|
||||||
auto f = frequency;
|
|
||||||
auto w = 2.0 * M_PI * frequency;
|
|
||||||
auto f_sqrt = sqrt(f / 1e9);
|
|
||||||
|
|
||||||
auto Z_c = complex<double>(offset_impedance + (offset_loss / (2*w)) * f_sqrt, -(offset_loss / (2*w)) * f_sqrt);
|
|
||||||
auto gamma_l = complex<double>(offset_loss*offset_delay/(2*offset_impedance)*f_sqrt, w*offset_delay+offset_loss*offset_delay/(2*offset_impedance)*f_sqrt);
|
|
||||||
|
|
||||||
auto Z_r = complex<double>(50.0);
|
|
||||||
|
|
||||||
auto Gamma_1 = (Z_c - Z_r) / (Z_c + Z_r);
|
|
||||||
|
|
||||||
auto Gamma_i = (Gamma_1*(1.0-exp(-2.0*gamma_l)-Gamma_1*Gamma_T)+exp(-2.0*gamma_l)*Gamma_T)
|
|
||||||
/ (1.0-Gamma_1*(exp(-2.0*gamma_l)*Gamma_1+Gamma_T*(1.0-exp(-2.0*gamma_l))));
|
|
||||||
|
|
||||||
return Gamma_i;
|
|
||||||
}
|
|
||||||
|
|
||||||
Open::Open()
|
Open::Open()
|
||||||
{
|
{
|
||||||
Z0 = 50.0;
|
Z0 = 50.0;
|
||||||
@ -184,7 +163,7 @@ std::complex<double> Open::toS11(double freq)
|
|||||||
auto imp_open = complex<double>(0, -1.0 / (freq * 2 * M_PI * Cfringing));
|
auto imp_open = complex<double>(0, -1.0 / (freq * 2 * M_PI * Cfringing));
|
||||||
open = (imp_open - complex<double>(50.0)) / (imp_open + complex<double>(50.0));
|
open = (imp_open - complex<double>(50.0)) / (imp_open + complex<double>(50.0));
|
||||||
}
|
}
|
||||||
return addTransmissionLine(open, Z0, delay*1e-12, loss*1e9, freq);
|
return Util::addTransmissionLine(open, Z0, delay*1e-12, loss*1e9, freq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,7 +278,7 @@ std::complex<double> Short::toS11(double freq)
|
|||||||
// convert to impedance
|
// convert to impedance
|
||||||
auto imp_short = complex<double>(0, freq * 2 * M_PI * Lseries);
|
auto imp_short = complex<double>(0, freq * 2 * M_PI * Lseries);
|
||||||
complex<double> _short = (imp_short - complex<double>(50.0)) / (imp_short + complex<double>(50.0));
|
complex<double> _short = (imp_short - complex<double>(50.0)) / (imp_short + complex<double>(50.0));
|
||||||
return addTransmissionLine(_short, Z0, delay*1e-12, loss*1e9, freq);
|
return Util::addTransmissionLine(_short, Z0, delay*1e-12, loss*1e9, freq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +406,7 @@ std::complex<double> Load::toS11(double freq)
|
|||||||
imp_load += complex<double>(0, freq * 2 * M_PI * Lseries);
|
imp_load += complex<double>(0, freq * 2 * M_PI * Lseries);
|
||||||
}
|
}
|
||||||
complex<double> load = (imp_load - complex<double>(50.0)) / (imp_load + complex<double>(50.0));
|
complex<double> load = (imp_load - complex<double>(50.0)) / (imp_load + complex<double>(50.0));
|
||||||
return addTransmissionLine(load, Z0, delay*1e-12, loss*1e9, freq);
|
return Util::addTransmissionLine(load, Z0, delay*1e-12, loss*1e9, freq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,9 +70,6 @@ public:
|
|||||||
virtual void fromJSON(nlohmann::json j) override;
|
virtual void fromJSON(nlohmann::json j) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::complex<double> addTransmissionLine(std::complex<double> termination_reflection,
|
|
||||||
double offset_impedance, double offset_delay,
|
|
||||||
double offset_loss, double frequency);
|
|
||||||
Touchstone *touchstone;
|
Touchstone *touchstone;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Binary file not shown.
@ -167,3 +167,24 @@ std::complex<double> Util::findCenterOfCircle(const std::vector<std::complex<dou
|
|||||||
|
|
||||||
return std::complex<double>(Xcenter + meanX, Ycenter + meanY);
|
return std::complex<double>(Xcenter + meanX, Ycenter + meanY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::complex<double> Util::addTransmissionLine(std::complex<double> termination_reflection, double offset_impedance, double offset_delay, double offset_loss, double frequency)
|
||||||
|
{
|
||||||
|
// nomenclature and formulas from https://loco.lab.asu.edu/loco-memos/edges_reports/report_20130807.pdf
|
||||||
|
auto Gamma_T = termination_reflection;
|
||||||
|
auto f = frequency;
|
||||||
|
auto w = 2.0 * M_PI * frequency;
|
||||||
|
auto f_sqrt = sqrt(f / 1e9);
|
||||||
|
|
||||||
|
auto Z_c = std::complex<double>(offset_impedance + (offset_loss / (2*w)) * f_sqrt, -(offset_loss / (2*w)) * f_sqrt);
|
||||||
|
auto gamma_l = std::complex<double>(offset_loss*offset_delay/(2*offset_impedance)*f_sqrt, w*offset_delay+offset_loss*offset_delay/(2*offset_impedance)*f_sqrt);
|
||||||
|
|
||||||
|
auto Z_r = std::complex<double>(50.0);
|
||||||
|
|
||||||
|
auto Gamma_1 = (Z_c - Z_r) / (Z_c + Z_r);
|
||||||
|
|
||||||
|
auto Gamma_i = (Gamma_1*(1.0-exp(-2.0*gamma_l)-Gamma_1*Gamma_T)+exp(-2.0*gamma_l)*Gamma_T)
|
||||||
|
/ (1.0-Gamma_1*(exp(-2.0*gamma_l)*Gamma_1+Gamma_T*(1.0-exp(-2.0*gamma_l))));
|
||||||
|
|
||||||
|
return Gamma_i;
|
||||||
|
}
|
||||||
|
@ -79,6 +79,8 @@ namespace Util {
|
|||||||
unsigned long long random(unsigned long long max);
|
unsigned long long random(unsigned long long max);
|
||||||
|
|
||||||
std::complex<double> findCenterOfCircle(const std::vector<std::complex<double>> &points);
|
std::complex<double> findCenterOfCircle(const std::vector<std::complex<double>> &points);
|
||||||
|
|
||||||
|
std::complex<double> addTransmissionLine(std::complex<double> termination_reflection, double offset_impedance, double offset_delay, double offset_loss, double frequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // UTILH_H
|
#endif // UTILH_H
|
||||||
|
@ -20,8 +20,10 @@ PortExtension::PortExtension()
|
|||||||
ext.velocityFactor = 0.66;
|
ext.velocityFactor = 0.66;
|
||||||
|
|
||||||
port = 1;
|
port = 1;
|
||||||
|
isIdeal = true;
|
||||||
|
|
||||||
kit = nullptr;
|
kit = nullptr;
|
||||||
|
ui = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<int> PortExtension::getAffectedPorts()
|
std::set<int> PortExtension::getAffectedPorts()
|
||||||
@ -60,6 +62,7 @@ void PortExtension::edit()
|
|||||||
ui->setupUi(dialog);
|
ui->setupUi(dialog);
|
||||||
connect(dialog, &QDialog::finished, [=](){
|
connect(dialog, &QDialog::finished, [=](){
|
||||||
delete ui;
|
delete ui;
|
||||||
|
ui = nullptr;
|
||||||
});
|
});
|
||||||
|
|
||||||
// set initial values
|
// set initial values
|
||||||
@ -164,7 +167,6 @@ void PortExtension::measurementCompleted(std::vector<VirtualDevice::VNAMeasureme
|
|||||||
phasediff += 2 * M_PI;
|
phasediff += 2 * M_PI;
|
||||||
}
|
}
|
||||||
phasediff_sum += phasediff;
|
phasediff_sum += phasediff;
|
||||||
qDebug() << phasediff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double x = sqrt(p.frequency / m.back().frequency);
|
double x = sqrt(p.frequency / m.back().frequency);
|
||||||
@ -230,6 +232,7 @@ void PortExtension::fromJSON(nlohmann::json j)
|
|||||||
if(j.contains("port")) {
|
if(j.contains("port")) {
|
||||||
// new format
|
// new format
|
||||||
jfrom = j;
|
jfrom = j;
|
||||||
|
port = j.value("port", 1);
|
||||||
} else {
|
} else {
|
||||||
jfrom = j[0];
|
jfrom = j[0];
|
||||||
port = 1;
|
port = 1;
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
#ifndef PORTEXTENSIONDIALOG_H
|
|
||||||
#define PORTEXTENSIONDIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class PortExtensionDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class PortExtensionDialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit PortExtensionDialog(QWidget *parent = nullptr);
|
|
||||||
~PortExtensionDialog();
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void on_buttonBox_accepted();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::PortExtensionDialog *ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // PORTEXTENSIONDIALOG_H
|
|
Binary file not shown.
@ -1,5 +1,4 @@
|
|||||||
QT += testlib
|
QT += testlib widgets network
|
||||||
#QT -= gui
|
|
||||||
|
|
||||||
CONFIG += qt console warn_on depend_includepath testcase
|
CONFIG += qt console warn_on depend_includepath testcase
|
||||||
CONFIG -= app_bundle
|
CONFIG -= app_bundle
|
||||||
@ -7,13 +6,384 @@ CONFIG -= app_bundle
|
|||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
../../VNA_embedded/Application/Communication/Protocol.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/caldevice.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/librecaldialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/usbdevice.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/amplitudecaldialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/calibration.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/calibrationmeasurement.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/calkit.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/calkitdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/calstandard.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/frequencycaldialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/manualcalibrationdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/receivercaldialog.cpp \
|
||||||
|
../LibreVNA-GUI/Calibration/sourcecaldialog.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/colorpickerbutton.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/csvimport.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/informationbox.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/jsonpickerdialog.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/siunitedit.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/tilewidget.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/toggleswitch.cpp \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/touchstoneimport.cpp \
|
||||||
|
../LibreVNA-GUI/Device/compounddevice.cpp \
|
||||||
|
../LibreVNA-GUI/Device/compounddeviceeditdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Device/device.cpp \
|
||||||
|
../LibreVNA-GUI/Device/devicelog.cpp \
|
||||||
|
../LibreVNA-GUI/Device/firmwareupdatedialog.cpp \
|
||||||
|
../LibreVNA-GUI/Device/manualcontroldialog.cpp \
|
||||||
|
../LibreVNA-GUI/Device/virtualdevice.cpp \
|
||||||
|
../LibreVNA-GUI/Generator/generator.cpp \
|
||||||
|
../LibreVNA-GUI/Generator/signalgenwidget.cpp \
|
||||||
|
../LibreVNA-GUI/SpectrumAnalyzer/spectrumanalyzer.cpp \
|
||||||
|
../LibreVNA-GUI/SpectrumAnalyzer/tracewidgetsa.cpp \
|
||||||
|
../LibreVNA-GUI/Tools/eseries.cpp \
|
||||||
|
../LibreVNA-GUI/Tools/impedancematchdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Tools/parameters.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/marker.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markergroup.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markermodel.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markerwidget.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/dft.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/expression.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/medianfilter.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpError.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncCommon.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncMatrix.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncNonCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncStr.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpICallback.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIOprt.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIPackage.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIToken.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIValReader.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIValue.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIfThenElse.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtBinAssign.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtBinCommon.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtIndex.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtMatrix.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtNonCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtPostfixCommon.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageCommon.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageMatrix.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageNonCmplx.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageStr.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageUnit.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParser.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParserBase.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParserMessageProvider.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpRPN.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpScriptTokens.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpTest.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpTokenReader.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValReader.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValue.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValueCache.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpVariable.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tdr.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/timegate.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tracemath.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/Math/windowfunction.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/fftcomplex.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/sparamtraceselector.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/trace.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/traceaxis.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracecsvexport.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/traceeditdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/traceimportdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracemodel.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/traceplot.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracepolar.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracepolarchart.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracesmithchart.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracetouchstoneexport.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracewaterfall.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracewidget.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/tracexyplot.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/waterfallaxisdialog.cpp \
|
||||||
|
../LibreVNA-GUI/Traces/xyplotaxisdialog.cpp \
|
||||||
../LibreVNA-GUI/Util/util.cpp \
|
../LibreVNA-GUI/Util/util.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembedding.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembeddingdialog.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembeddingoption.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/impedancerenormalization.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/manualdeembeddingdialog.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/matchingnetwork.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/portextension.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/twothru.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/tracewidgetvna.cpp \
|
||||||
|
../LibreVNA-GUI/VNA/vna.cpp \
|
||||||
|
../LibreVNA-GUI/about.cpp \
|
||||||
|
../LibreVNA-GUI/appwindow.cpp \
|
||||||
|
../LibreVNA-GUI/averaging.cpp \
|
||||||
|
../LibreVNA-GUI/csv.cpp \
|
||||||
|
../LibreVNA-GUI/mode.cpp \
|
||||||
|
../LibreVNA-GUI/modehandler.cpp \
|
||||||
|
../LibreVNA-GUI/modewindow.cpp \
|
||||||
|
../LibreVNA-GUI/preferences.cpp \
|
||||||
|
../LibreVNA-GUI/savable.cpp \
|
||||||
|
../LibreVNA-GUI/scpi.cpp \
|
||||||
|
../LibreVNA-GUI/tcpserver.cpp \
|
||||||
|
../LibreVNA-GUI/touchstone.cpp \
|
||||||
|
../LibreVNA-GUI/unit.cpp \
|
||||||
main.cpp \
|
main.cpp \
|
||||||
|
portextensiontests.cpp \
|
||||||
utiltests.cpp
|
utiltests.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
../../VNA_embedded/Application/Communication/Protocol.hpp \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Cholesky \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/CholmodSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Core \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Dense \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Eigen \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Eigenvalues \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Geometry \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Householder \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/IterativeLinearSolvers \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Jacobi \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/KLUSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/LU \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/MetisSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/OrderingMethods \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/PaStiXSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/PardisoSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/QR \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/QtAlignedMalloc \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SPQRSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SVD \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/Sparse \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SparseCholesky \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SparseCore \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SparseLU \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SparseQR \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/StdDeque \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/StdList \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/StdVector \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/SuperLUSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/Eigen/UmfPackSupport \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/caldevice.h \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/librecaldialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/usbdevice.h \
|
||||||
|
../LibreVNA-GUI/Calibration/amplitudecaldialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/calibration.h \
|
||||||
|
../LibreVNA-GUI/Calibration/calibrationmeasurement.h \
|
||||||
|
../LibreVNA-GUI/Calibration/calkit.h \
|
||||||
|
../LibreVNA-GUI/Calibration/calkitdialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/calstandard.h \
|
||||||
|
../LibreVNA-GUI/Calibration/frequencycaldialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/manualcalibrationdialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/receivercaldialog.h \
|
||||||
|
../LibreVNA-GUI/Calibration/sourcecaldialog.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/colorpickerbutton.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/csvimport.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/informationbox.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/jsonpickerdialog.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/siunitedit.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/tilewidget.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/toggleswitch.h \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/touchstoneimport.h \
|
||||||
|
../LibreVNA-GUI/Device/compounddevice.h \
|
||||||
|
../LibreVNA-GUI/Device/compounddeviceeditdialog.h \
|
||||||
|
../LibreVNA-GUI/Device/device.h \
|
||||||
|
../LibreVNA-GUI/Device/devicelog.h \
|
||||||
|
../LibreVNA-GUI/Device/firmwareupdatedialog.h \
|
||||||
|
../LibreVNA-GUI/Device/manualcontroldialog.h \
|
||||||
|
../LibreVNA-GUI/Device/virtualdevice.h \
|
||||||
|
../LibreVNA-GUI/Generator/generator.h \
|
||||||
|
../LibreVNA-GUI/Generator/signalgenwidget.h \
|
||||||
|
../LibreVNA-GUI/SpectrumAnalyzer/spectrumanalyzer.h \
|
||||||
|
../LibreVNA-GUI/SpectrumAnalyzer/tracewidgetsa.h \
|
||||||
|
../LibreVNA-GUI/Tools/eseries.h \
|
||||||
|
../LibreVNA-GUI/Tools/impedancematchdialog.h \
|
||||||
|
../LibreVNA-GUI/Tools/parameters.h \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/marker.h \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markergroup.h \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markermodel.h \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markerwidget.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/dft.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/expression.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/medianfilter.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpCompat.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpDefines.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpError.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncCommon.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncMatrix.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncNonCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFuncStr.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpFwdDecl.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpICallback.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIOprt.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIPackage.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIPrecedence.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIToken.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIValReader.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIValue.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpIfThenElse.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpMatrix.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpMatrixError.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtBinAssign.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtBinCommon.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtIndex.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtMatrix.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtNonCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpOprtPostfixCommon.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageCommon.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageMatrix.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageNonCmplx.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageStr.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpPackageUnit.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParser.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParserBase.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpParserMessageProvider.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpRPN.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpScriptTokens.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpStack.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpTest.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpTokenReader.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpTypes.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValReader.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValue.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpValueCache.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/mpVariable.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/suSortPred.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/suStringTokens.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/parser/utGeneric.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tdr.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/timegate.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tracemath.h \
|
||||||
|
../LibreVNA-GUI/Traces/Math/windowfunction.h \
|
||||||
|
../LibreVNA-GUI/Traces/fftcomplex.h \
|
||||||
|
../LibreVNA-GUI/Traces/sparamtraceselector.h \
|
||||||
|
../LibreVNA-GUI/Traces/trace.h \
|
||||||
|
../LibreVNA-GUI/Traces/traceaxis.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracecsvexport.h \
|
||||||
|
../LibreVNA-GUI/Traces/traceeditdialog.h \
|
||||||
|
../LibreVNA-GUI/Traces/traceimportdialog.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracemodel.h \
|
||||||
|
../LibreVNA-GUI/Traces/traceplot.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracepolar.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracepolarchart.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracesmithchart.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracetouchstoneexport.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracewaterfall.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracewidget.h \
|
||||||
|
../LibreVNA-GUI/Traces/tracexyplot.h \
|
||||||
|
../LibreVNA-GUI/Traces/waterfallaxisdialog.h \
|
||||||
|
../LibreVNA-GUI/Traces/xyplotaxisdialog.h \
|
||||||
../LibreVNA-GUI/Util/util.h \
|
../LibreVNA-GUI/Util/util.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembedding.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembeddingdialog.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembeddingoption.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/impedancerenormalization.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/manualdeembeddingdialog.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/matchingnetwork.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/portextension.h \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/twothru.h \
|
||||||
|
../LibreVNA-GUI/VNA/portextensiondialog.h \
|
||||||
|
../LibreVNA-GUI/VNA/tracewidgetvna.h \
|
||||||
|
../LibreVNA-GUI/VNA/vna.h \
|
||||||
|
../LibreVNA-GUI/about.h \
|
||||||
|
../LibreVNA-GUI/appwindow.h \
|
||||||
|
../LibreVNA-GUI/averaging.h \
|
||||||
|
../LibreVNA-GUI/csv.h \
|
||||||
|
../LibreVNA-GUI/json.hpp \
|
||||||
|
../LibreVNA-GUI/mode.h \
|
||||||
|
../LibreVNA-GUI/modehandler.h \
|
||||||
|
../LibreVNA-GUI/modewindow.h \
|
||||||
|
../LibreVNA-GUI/preferences.h \
|
||||||
|
../LibreVNA-GUI/savable.h \
|
||||||
|
../LibreVNA-GUI/scpi.h \
|
||||||
|
../LibreVNA-GUI/tcpserver.h \
|
||||||
|
../LibreVNA-GUI/touchstone.h \
|
||||||
|
../LibreVNA-GUI/unit.h \
|
||||||
|
portextensiontests.h \
|
||||||
utiltests.h
|
utiltests.h
|
||||||
|
|
||||||
INCLUDEPATH += \
|
INCLUDEPATH += \
|
||||||
../LibreVNA-GUI/Util
|
../LibreVNA-GUI \
|
||||||
|
../LibreVNA-GUI/Util \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding \
|
||||||
|
../LibreVNA-GUI/Calibration
|
||||||
|
|
||||||
|
FORMS += \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardLineEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardLoadEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardOpenEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardReflectEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardShortEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/CalStandardThroughEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/LibreCAL/librecaldialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/addamplitudepointsdialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/amplitudecaldialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/automaticamplitudedialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/calibrationdialogui.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/calkitdialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/frequencycaldialog.ui \
|
||||||
|
../LibreVNA-GUI/Calibration/manualcalibrationdialog.ui \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/csvimport.ui \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/jsonpickerdialog.ui \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/tilewidget.ui \
|
||||||
|
../LibreVNA-GUI/CustomWidgets/touchstoneimport.ui \
|
||||||
|
../LibreVNA-GUI/Device/compounddeviceeditdialog.ui \
|
||||||
|
../LibreVNA-GUI/Device/devicelog.ui \
|
||||||
|
../LibreVNA-GUI/Device/firmwareupdatedialog.ui \
|
||||||
|
../LibreVNA-GUI/Device/manualcontroldialog.ui \
|
||||||
|
../LibreVNA-GUI/Generator/signalgenwidget.ui \
|
||||||
|
../LibreVNA-GUI/Tools/impedancematchdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Marker/markerwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/dftdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/dftexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/expressiondialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/expressionexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/medianexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/medianfilterdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/newtracemathdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tdrdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/tdrexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/timedomaingatingexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/timegatedialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/Math/timegateexplanationwidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/XYPlotConstantLineEditDialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/polarchartdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/smithchartdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/tracecsvexport.ui \
|
||||||
|
../LibreVNA-GUI/Traces/traceeditdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/traceimportdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/tracetouchstoneexport.ui \
|
||||||
|
../LibreVNA-GUI/Traces/tracewidget.ui \
|
||||||
|
../LibreVNA-GUI/Traces/waterfallaxisdialog.ui \
|
||||||
|
../LibreVNA-GUI/Traces/xyplotaxisdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/deembeddingdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/impedancenormalizationdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/manualdeembeddingdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/matchingnetworkdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/measurementdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/portextensioneditdialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/Deembedding/twothrudialog.ui \
|
||||||
|
../LibreVNA-GUI/VNA/s2pImportOptions.ui \
|
||||||
|
../LibreVNA-GUI/aboutdialog.ui \
|
||||||
|
../LibreVNA-GUI/main.ui \
|
||||||
|
../LibreVNA-GUI/preferencesdialog.ui
|
||||||
|
|
||||||
|
DISTFILES += \
|
||||||
|
../LibreVNA-GUI/TraceSetup \
|
||||||
|
../LibreVNA-GUI/test.setup
|
||||||
|
|
||||||
|
CONFIG += c++17
|
||||||
|
|
||||||
|
LIBS += -lusb-1.0
|
||||||
|
unix:LIBS += -L/usr/lib/
|
||||||
|
|
||||||
|
REVISION = $$system(git rev-parse HEAD)
|
||||||
|
DEFINES += GITHASH=\\"\"$$REVISION\\"\"
|
||||||
|
DEFINES += FW_MAJOR=1 FW_MINOR=4 FW_PATCH=0 FW_SUFFIX=""#\\"\"-alpha.2\\"\"
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
#include "utiltests.h"
|
#include "utiltests.h"
|
||||||
|
#include "portextensiontests.h"
|
||||||
|
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
status |= QTest::qExec(new UtilTests, argc, argv);
|
status |= QTest::qExec(new UtilTests, argc, argv);
|
||||||
|
status |= QTest::qExec(new PortExtensionTests, argc, argv);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
72
Software/PC_Application/LibreVNA-Test/portextensiontests.cpp
Normal file
72
Software/PC_Application/LibreVNA-Test/portextensiontests.cpp
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#include "portextensiontests.h"
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
#include "json.hpp"
|
||||||
|
|
||||||
|
#include <QtTest>
|
||||||
|
|
||||||
|
PortExtensionTests::PortExtensionTests() : QObject(nullptr)
|
||||||
|
{
|
||||||
|
// create dummy data: port 1 is a simple open, port 2 is open with 1ns of (one-way) delay and some loss
|
||||||
|
constexpr double startFreq = 1000000;
|
||||||
|
constexpr double stopFreq = 6000000000;
|
||||||
|
constexpr int steps = 501;
|
||||||
|
for(int i=0;i<steps;i++) {
|
||||||
|
double f = startFreq + (stopFreq - startFreq) * i / (steps - 1);
|
||||||
|
VirtualDevice::VNAMeasurement m;
|
||||||
|
m.frequency = f;
|
||||||
|
m.dBm = -10;
|
||||||
|
m.pointNum = i;
|
||||||
|
m.Z0 = 50.0;
|
||||||
|
m.measurements["S11"] = 1.0;
|
||||||
|
m.measurements["S22"] = Util::addTransmissionLine(0.5, 50.0, 1e-9, 10, f);
|
||||||
|
dummyData.push_back(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PortExtensionTests::autocalc()
|
||||||
|
{
|
||||||
|
auto pe2 = new PortExtension();
|
||||||
|
|
||||||
|
nlohmann::json j;
|
||||||
|
j["port"] = 2;
|
||||||
|
pe2->fromJSON(j);
|
||||||
|
|
||||||
|
pe2->edit();
|
||||||
|
pe2->measurementCompleted(dummyData);
|
||||||
|
|
||||||
|
j = pe2->toJSON();
|
||||||
|
QVERIFY(qFuzzyCompare((float)j.value("delay", 0.0), (float)1e-9));
|
||||||
|
QVERIFY(qFuzzyCompare((float)j.value("DCloss", 0.0), (float)(-10*log10(0.5))));
|
||||||
|
|
||||||
|
auto pe1 = new PortExtension();
|
||||||
|
|
||||||
|
j.clear();
|
||||||
|
j["port"] = 1;
|
||||||
|
pe1->fromJSON(j);
|
||||||
|
|
||||||
|
pe1->edit();
|
||||||
|
pe1->measurementCompleted(dummyData);
|
||||||
|
|
||||||
|
j = pe1->toJSON();
|
||||||
|
QVERIFY(qFuzzyIsNull((float)j.value("delay", 0.0)));
|
||||||
|
QVERIFY(qFuzzyIsNull((float)j.value("DCloss", 0.0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PortExtensionTests::correct()
|
||||||
|
{
|
||||||
|
auto pe = new PortExtension();
|
||||||
|
nlohmann::json j;
|
||||||
|
j["port"] = 2;
|
||||||
|
pe->fromJSON(j);
|
||||||
|
pe->edit();
|
||||||
|
pe->measurementCompleted(dummyData);
|
||||||
|
|
||||||
|
for(auto m : dummyData) {
|
||||||
|
pe->transformDatapoint(m);
|
||||||
|
QVERIFY(qFuzzyIsNull((float)m.measurements["S22"].imag()));
|
||||||
|
QVERIFY(qFuzzyCompare((float)m.measurements["S22"].real(), 1.0f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
21
Software/PC_Application/LibreVNA-Test/portextensiontests.h
Normal file
21
Software/PC_Application/LibreVNA-Test/portextensiontests.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef PORTEXTENSIONTESTS_H
|
||||||
|
#define PORTEXTENSIONTESTS_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "portextension.h"
|
||||||
|
|
||||||
|
class PortExtensionTests : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit PortExtensionTests();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void autocalc();
|
||||||
|
void correct();
|
||||||
|
private:
|
||||||
|
std::vector<VirtualDevice::VNAMeasurement> dummyData;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PORTEXTENSIONTESTS_H
|
Loading…
Reference in New Issue
Block a user