mirror of
https://github.com/jankae/LibreVNA.git
synced 2025-12-06 07:12:10 +01:00
Refactor Calkit::fromFile without the need for move semantics
Some checks failed
Build / PC_Application_Ubuntu (push) Has been cancelled
Build / PC_Application_RPi5 (push) Has been cancelled
Build / PC_Application_Windows (push) Has been cancelled
Build / PC_Application_OSX (push) Has been cancelled
Build / PC_Application_OSX_13 (push) Has been cancelled
Build / Embedded_Firmware (push) Has been cancelled
HIL_Tests / Get_Repository (push) Has been cancelled
Unit_Tests / Tests (push) Has been cancelled
HIL_Tests / PC_Application_RPi5 (push) Has been cancelled
HIL_Tests / Embedded_Firmware (push) Has been cancelled
HIL_Tests / HIL (push) Has been cancelled
Some checks failed
Build / PC_Application_Ubuntu (push) Has been cancelled
Build / PC_Application_RPi5 (push) Has been cancelled
Build / PC_Application_Windows (push) Has been cancelled
Build / PC_Application_OSX (push) Has been cancelled
Build / PC_Application_OSX_13 (push) Has been cancelled
Build / Embedded_Firmware (push) Has been cancelled
HIL_Tests / Get_Repository (push) Has been cancelled
Unit_Tests / Tests (push) Has been cancelled
HIL_Tests / PC_Application_RPi5 (push) Has been cancelled
HIL_Tests / Embedded_Firmware (push) Has been cancelled
HIL_Tests / HIL (push) Has been cancelled
This commit is contained in:
parent
7bdbcde9be
commit
6a7b985fa9
|
|
@ -1708,10 +1708,8 @@ bool Calibration::fromFile(QString filename)
|
||||||
}
|
}
|
||||||
calkit_file.append(".calkit");
|
calkit_file.append(".calkit");
|
||||||
qDebug() << "Associated calibration kit expected in" << calkit_file;
|
qDebug() << "Associated calibration kit expected in" << calkit_file;
|
||||||
try {
|
if(!kit.fromFile(calkit_file)) {
|
||||||
kit = Calkit::fromFile(calkit_file);
|
qDebug() << "Parsing of calibration kit failed while opening calibration file (ignore for calibration format >= 3)";
|
||||||
} catch (runtime_error &e) {
|
|
||||||
qDebug() << "Parsing of calibration kit failed while opening calibration file: " << e.what() << " (ignore for calibration format >= 3)";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ifstream file;
|
ifstream file;
|
||||||
|
|
|
||||||
|
|
@ -70,10 +70,9 @@ Calkit::Calkit()
|
||||||
// no filename given or no calibration active
|
// no filename given or no calibration active
|
||||||
return SCPI::getResultName(SCPI::Result::False);
|
return SCPI::getResultName(SCPI::Result::False);
|
||||||
}
|
}
|
||||||
try {
|
if(this->fromFile(params[0])) {
|
||||||
*this = fromFile(params[0]);
|
|
||||||
return SCPI::getResultName(SCPI::Result::True);
|
return SCPI::getResultName(SCPI::Result::True);
|
||||||
} catch (runtime_error &e) {
|
} else {
|
||||||
return SCPI::getResultName(SCPI::Result::False);
|
return SCPI::getResultName(SCPI::Result::False);
|
||||||
}
|
}
|
||||||
}, false));
|
}, false));
|
||||||
|
|
@ -147,28 +146,29 @@ static QString readLine(ifstream &file) {
|
||||||
return QString::fromStdString(line).simplified();
|
return QString::fromStdString(line).simplified();
|
||||||
}
|
}
|
||||||
|
|
||||||
Calkit Calkit::fromFile(QString filename)
|
bool Calkit::fromFile(QString filename)
|
||||||
{
|
{
|
||||||
qDebug() << "Opening calkit from file" << filename;
|
qDebug() << "Opening calkit from file" << filename;
|
||||||
|
|
||||||
auto c = Calkit();
|
|
||||||
ifstream file;
|
ifstream file;
|
||||||
file.open(filename.toStdString());
|
file.open(filename.toStdString());
|
||||||
if(!file.is_open()) {
|
if(!file.is_open()) {
|
||||||
throw runtime_error("Unable to open file");
|
qWarning() << "Unable to open file: " << filename;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
json j;
|
json j;
|
||||||
try {
|
try {
|
||||||
file >> j;
|
file >> j;
|
||||||
} catch (exception &e) {
|
} catch (exception &e) {
|
||||||
throw runtime_error("JSON parsing error: " + string(e.what()));
|
qWarning() << "JSON parsing error: " << QString(e.what());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
c.clearStandards();
|
clearStandards();
|
||||||
c.filename = "";
|
this->filename = "";
|
||||||
if(j.contains("standards")) {
|
if(j.contains("standards")) {
|
||||||
qDebug() << "new JSON format detected";
|
qDebug() << "new JSON format detected";
|
||||||
c.fromJSON(j);
|
fromJSON(j);
|
||||||
} else {
|
} else {
|
||||||
// older format is used
|
// older format is used
|
||||||
struct {
|
struct {
|
||||||
|
|
@ -216,7 +216,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
if(j.contains("SOLT")) {
|
if(j.contains("SOLT")) {
|
||||||
qDebug() << "old JSON format detected";
|
qDebug() << "old JSON format detected";
|
||||||
// calkit file uses json format, parse
|
// calkit file uses json format, parse
|
||||||
Savable::parseJSON(j, c.descr);
|
Savable::parseJSON(j, descr);
|
||||||
const std::vector<Savable::SettingDescription> descr_deprecated = {{
|
const std::vector<Savable::SettingDescription> descr_deprecated = {{
|
||||||
{&SOLT.open_m.Z0, "SOLT.Open.Param.Z0", 50.0},
|
{&SOLT.open_m.Z0, "SOLT.Open.Param.Z0", 50.0},
|
||||||
{&SOLT.open_m.delay, "SOLT.Open.Param.Delay", 0.0},
|
{&SOLT.open_m.delay, "SOLT.Open.Param.Delay", 0.0},
|
||||||
|
|
@ -369,7 +369,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.open_m.file.toStdString());
|
ts.fromFile(SOLT.open_m.file.toStdString());
|
||||||
open_m->setMeasurement(ts, SOLT.open_m.Sparam);
|
open_m->setMeasurement(ts, SOLT.open_m.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(open_m);
|
addStandard(open_m);
|
||||||
if(SOLT.separate_male_female) {
|
if(SOLT.separate_male_female) {
|
||||||
auto open_f = new CalStandard::Open("Default female standard", SOLT.open_f.Z0, SOLT.open_f.delay, SOLT.open_f.loss, SOLT.open_f.C0, SOLT.open_f.C1, SOLT.open_f.C2, SOLT.open_f.C3);
|
auto open_f = new CalStandard::Open("Default female standard", SOLT.open_f.Z0, SOLT.open_f.delay, SOLT.open_f.loss, SOLT.open_f.C0, SOLT.open_f.C1, SOLT.open_f.C2, SOLT.open_f.C3);
|
||||||
if(SOLT.open_f.useMeasurements) {
|
if(SOLT.open_f.useMeasurements) {
|
||||||
|
|
@ -377,7 +377,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.open_f.file.toStdString());
|
ts.fromFile(SOLT.open_f.file.toStdString());
|
||||||
open_m->setMeasurement(ts, SOLT.open_f.Sparam);
|
open_m->setMeasurement(ts, SOLT.open_f.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(open_f);
|
addStandard(open_f);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto short_m = new CalStandard::Short(SOLT.separate_male_female ? "Default male standard" : "Default standard", SOLT.short_m.Z0, SOLT.short_m.delay, SOLT.short_m.loss, SOLT.short_m.L0, SOLT.short_m.L1, SOLT.short_m.L2, SOLT.short_m.L3);
|
auto short_m = new CalStandard::Short(SOLT.separate_male_female ? "Default male standard" : "Default standard", SOLT.short_m.Z0, SOLT.short_m.delay, SOLT.short_m.loss, SOLT.short_m.L0, SOLT.short_m.L1, SOLT.short_m.L2, SOLT.short_m.L3);
|
||||||
|
|
@ -386,7 +386,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.short_m.file.toStdString());
|
ts.fromFile(SOLT.short_m.file.toStdString());
|
||||||
short_m->setMeasurement(ts, SOLT.short_m.Sparam);
|
short_m->setMeasurement(ts, SOLT.short_m.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(short_m);
|
addStandard(short_m);
|
||||||
if(SOLT.separate_male_female) {
|
if(SOLT.separate_male_female) {
|
||||||
auto short_f = new CalStandard::Short("Default female standard", SOLT.short_f.Z0, SOLT.short_f.delay, SOLT.short_f.loss, SOLT.short_f.L0, SOLT.short_f.L1, SOLT.short_f.L2, SOLT.short_f.L3);
|
auto short_f = new CalStandard::Short("Default female standard", SOLT.short_f.Z0, SOLT.short_f.delay, SOLT.short_f.loss, SOLT.short_f.L0, SOLT.short_f.L1, SOLT.short_f.L2, SOLT.short_f.L3);
|
||||||
if(SOLT.short_f.useMeasurements) {
|
if(SOLT.short_f.useMeasurements) {
|
||||||
|
|
@ -394,7 +394,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.short_f.file.toStdString());
|
ts.fromFile(SOLT.short_f.file.toStdString());
|
||||||
short_m->setMeasurement(ts, SOLT.short_f.Sparam);
|
short_m->setMeasurement(ts, SOLT.short_f.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(short_f);
|
addStandard(short_f);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto load_m = new CalStandard::Load(SOLT.separate_male_female ? "Default male standard" : "Default standard", SOLT.load_m.Z0, SOLT.load_m.delay, 0.0, SOLT.load_m.resistance, SOLT.load_m.Cparallel, SOLT.load_m.Lseries, SOLT.loadModelCFirst);
|
auto load_m = new CalStandard::Load(SOLT.separate_male_female ? "Default male standard" : "Default standard", SOLT.load_m.Z0, SOLT.load_m.delay, 0.0, SOLT.load_m.resistance, SOLT.load_m.Cparallel, SOLT.load_m.Lseries, SOLT.loadModelCFirst);
|
||||||
|
|
@ -403,7 +403,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.load_m.file.toStdString());
|
ts.fromFile(SOLT.load_m.file.toStdString());
|
||||||
load_m->setMeasurement(ts, SOLT.load_m.Sparam);
|
load_m->setMeasurement(ts, SOLT.load_m.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(load_m);
|
addStandard(load_m);
|
||||||
if(SOLT.separate_male_female) {
|
if(SOLT.separate_male_female) {
|
||||||
auto load_f = new CalStandard::Load("Default female standard", SOLT.load_m.Z0, SOLT.load_f.delay, 0.0, SOLT.load_f.resistance, SOLT.load_f.Cparallel, SOLT.load_f.Lseries, SOLT.loadModelCFirst);
|
auto load_f = new CalStandard::Load("Default female standard", SOLT.load_m.Z0, SOLT.load_f.delay, 0.0, SOLT.load_f.resistance, SOLT.load_f.Cparallel, SOLT.load_f.Lseries, SOLT.loadModelCFirst);
|
||||||
if(SOLT.load_f.useMeasurements) {
|
if(SOLT.load_f.useMeasurements) {
|
||||||
|
|
@ -411,7 +411,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.load_f.file.toStdString());
|
ts.fromFile(SOLT.load_f.file.toStdString());
|
||||||
load_m->setMeasurement(ts, SOLT.load_f.Sparam);
|
load_m->setMeasurement(ts, SOLT.load_f.Sparam);
|
||||||
}
|
}
|
||||||
c.addStandard(load_f);
|
addStandard(load_f);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto through = new CalStandard::Through("Default standard", SOLT.Through.Z0, SOLT.Through.delay, SOLT.Through.loss);
|
auto through = new CalStandard::Through("Default standard", SOLT.Through.Z0, SOLT.Through.delay, SOLT.Through.loss);
|
||||||
|
|
@ -420,7 +420,7 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
ts.fromFile(SOLT.Through.file.toStdString());
|
ts.fromFile(SOLT.Through.file.toStdString());
|
||||||
through->setMeasurement(ts, SOLT.Through.Sparam1, SOLT.Through.Sparam2);
|
through->setMeasurement(ts, SOLT.Through.Sparam1, SOLT.Through.Sparam2);
|
||||||
}
|
}
|
||||||
c.addStandard(through);
|
addStandard(through);
|
||||||
|
|
||||||
InformationBox::ShowMessage("Loading calkit file", "The file \"" + filename + "\" is stored in a deprecated"
|
InformationBox::ShowMessage("Loading calkit file", "The file \"" + filename + "\" is stored in a deprecated"
|
||||||
" calibration kit format. Future versions of this application might not support"
|
" calibration kit format. Future versions of this application might not support"
|
||||||
|
|
@ -428,10 +428,10 @@ Calkit Calkit::fromFile(QString filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
c.filename = filename;
|
this->filename = filename;
|
||||||
c.updateSCPINames();
|
updateSCPINames();
|
||||||
|
|
||||||
return c;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Calkit::edit(std::function<void (void)> updateCal)
|
void Calkit::edit(std::function<void (void)> updateCal)
|
||||||
|
|
@ -449,10 +449,9 @@ void Calkit::edit(std::function<void (void)> updateCal)
|
||||||
|
|
||||||
void Calkit::clearStandards()
|
void Calkit::clearStandards()
|
||||||
{
|
{
|
||||||
for(auto s : standards) {
|
while(standards.size() > 0) {
|
||||||
delete s;
|
removeStandard(standards[0]);
|
||||||
}
|
}
|
||||||
standards.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Calkit::updateSCPINames()
|
void Calkit::updateSCPINames()
|
||||||
|
|
|
||||||
|
|
@ -19,16 +19,8 @@ class Calkit : public Savable, public SCPINode
|
||||||
friend class LibreCALDialog;
|
friend class LibreCALDialog;
|
||||||
public:
|
public:
|
||||||
Calkit();
|
Calkit();
|
||||||
Calkit(const Calkit&) = default;
|
Calkit(const Calkit&) = delete;
|
||||||
Calkit& operator=(const Calkit& other)
|
Calkit& operator= (const Calkit&) = delete;
|
||||||
{
|
|
||||||
this->manufacturer = other.manufacturer;
|
|
||||||
this->serialnumber = other.serialnumber;
|
|
||||||
this->description = other.description;
|
|
||||||
this->standards = other.standards;
|
|
||||||
this->filename = other.filename;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
class SOLT {
|
class SOLT {
|
||||||
public:
|
public:
|
||||||
|
|
@ -45,7 +37,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
void toFile(QString filename);
|
void toFile(QString filename);
|
||||||
static Calkit fromFile(QString filename);
|
bool fromFile(QString filename);
|
||||||
void edit(std::function<void(void)> updateCal = nullptr);
|
void edit(std::function<void(void)> updateCal = nullptr);
|
||||||
|
|
||||||
std::vector<CalStandard::Virtual *> getStandards() const;
|
std::vector<CalStandard::Virtual *> getStandards() const;
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ CalkitDialog::CalkitDialog(Calkit &c, QWidget *parent) :
|
||||||
if(filename.length() > 0) {
|
if(filename.length() > 0) {
|
||||||
Preferences::getInstance().UISettings.Paths.calkit = QFileInfo(filename).path();
|
Preferences::getInstance().UISettings.Paths.calkit = QFileInfo(filename).path();
|
||||||
try {
|
try {
|
||||||
kit = Calkit::fromFile(filename);
|
kit.fromFile(filename);
|
||||||
} catch (runtime_error &e) {
|
} catch (runtime_error &e) {
|
||||||
InformationBox::ShowError("Error", "The calibration kit file could not be parsed (" + QString(e.what()) + ")");
|
InformationBox::ShowError("Error", "The calibration kit file could not be parsed (" + QString(e.what()) + ")");
|
||||||
qWarning() << "Parsing of calibration kit failed while opening calibration file: " << e.what();
|
qWarning() << "Parsing of calibration kit failed while opening calibration file: " << e.what();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue