From 399ef3fd5e53a6e6c7c951158a7744f53e914489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Mon, 13 Dec 2021 16:05:45 +0100 Subject: [PATCH] Fix 32 bit overflow in SCPI commands --- .../PC_Application/Generator/generator.cpp | 8 ++--- .../SpectrumAnalyzer/spectrumanalyzer.cpp | 24 +++++++------- Software/PC_Application/VNA/vna.cpp | 32 +++++++++---------- Software/PC_Application/scpi.cpp | 4 +-- Software/PC_Application/scpi.h | 2 +- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Software/PC_Application/Generator/generator.cpp b/Software/PC_Application/Generator/generator.cpp index 8b8eb63..f7cc411 100644 --- a/Software/PC_Application/Generator/generator.cpp +++ b/Software/PC_Application/Generator/generator.cpp @@ -69,8 +69,8 @@ void Generator::updateDevice() void Generator::setupSCPI() { add(new SCPICommand("FREQuency", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { central->setFrequency(newval); @@ -92,8 +92,8 @@ void Generator::setupSCPI() return QString::number(central->getDeviceStatus().cdbm_level / 100.0); })); add(new SCPICommand("PORT", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval) || newval > 2) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval) || newval > 2) { return "ERROR"; } else { central->setPort(newval); diff --git a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp index cb99744..5552ab8 100644 --- a/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp +++ b/Software/PC_Application/SpectrumAnalyzer/spectrumanalyzer.cpp @@ -758,8 +758,8 @@ void SpectrumAnalyzer::SetupSCPI() auto scpi_freq = new SCPINode("FREQuency"); SCPINode::add(scpi_freq); scpi_freq->add(new SCPICommand("SPAN", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetSpan(newval); @@ -769,8 +769,8 @@ void SpectrumAnalyzer::SetupSCPI() return QString::number(settings.f_stop - settings.f_start); })); scpi_freq->add(new SCPICommand("START", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetStartFreq(newval); @@ -780,8 +780,8 @@ void SpectrumAnalyzer::SetupSCPI() return QString::number(settings.f_start); })); scpi_freq->add(new SCPICommand("CENTer", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetCenterFreq(newval); @@ -791,8 +791,8 @@ void SpectrumAnalyzer::SetupSCPI() return QString::number((settings.f_start + settings.f_stop)/2); })); scpi_freq->add(new SCPICommand("STOP", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetStopFreq(newval); @@ -809,8 +809,8 @@ void SpectrumAnalyzer::SetupSCPI() auto scpi_acq = new SCPINode("ACQuisition"); SCPINode::add(scpi_acq); scpi_acq->add(new SCPICommand("RBW", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetRBW(newval); @@ -873,8 +873,8 @@ void SpectrumAnalyzer::SetupSCPI() } })); scpi_acq->add(new SCPICommand("AVG", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetAveraging(newval); diff --git a/Software/PC_Application/VNA/vna.cpp b/Software/PC_Application/VNA/vna.cpp index 13b8881..921172b 100644 --- a/Software/PC_Application/VNA/vna.cpp +++ b/Software/PC_Application/VNA/vna.cpp @@ -1142,8 +1142,8 @@ void VNA::SetupSCPI() auto scpi_freq = new SCPINode("FREQuency"); SCPINode::add(scpi_freq); scpi_freq->add(new SCPICommand("SPAN", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetSpan(newval); @@ -1153,8 +1153,8 @@ void VNA::SetupSCPI() return QString::number(settings.Freq.stop - settings.Freq.start); })); scpi_freq->add(new SCPICommand("START", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetStartFreq(newval); @@ -1164,8 +1164,8 @@ void VNA::SetupSCPI() return QString::number(settings.Freq.start); })); scpi_freq->add(new SCPICommand("CENTer", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetCenterFreq(newval); @@ -1175,8 +1175,8 @@ void VNA::SetupSCPI() return QString::number((settings.Freq.start + settings.Freq.stop)/2); })); scpi_freq->add(new SCPICommand("STOP", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetStopFreq(newval); @@ -1217,8 +1217,8 @@ void VNA::SetupSCPI() auto scpi_acq = new SCPINode("ACQuisition"); SCPINode::add(scpi_acq); scpi_acq->add(new SCPICommand("IFBW", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetIFBandwidth(newval); @@ -1228,8 +1228,8 @@ void VNA::SetupSCPI() return QString::number(settings.bandwidth); })); scpi_acq->add(new SCPICommand("POINTS", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetPoints(newval); @@ -1239,8 +1239,8 @@ void VNA::SetupSCPI() return QString::number(settings.npoints); })); scpi_acq->add(new SCPICommand("AVG", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetAveraging(newval); @@ -1269,8 +1269,8 @@ void VNA::SetupSCPI() return QString::number(settings.Freq.excitation_power); })); scpi_stim->add(new SCPICommand("FREQuency", [=](QStringList params) -> QString { - unsigned long newval; - if(!SCPI::paramToULong(params, 0, newval)) { + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval)) { return "ERROR"; } else { SetPowerSweepFrequency(newval); diff --git a/Software/PC_Application/scpi.cpp b/Software/PC_Application/scpi.cpp index a89e2d2..01b31d1 100644 --- a/Software/PC_Application/scpi.cpp +++ b/Software/PC_Application/scpi.cpp @@ -43,13 +43,13 @@ bool SCPI::paramToDouble(QStringList params, int index, double &dest) return okay; } -bool SCPI::paramToULong(QStringList params, int index, unsigned long &dest) +bool SCPI::paramToULongLong(QStringList params, int index, unsigned long long &dest) { if(index >= params.size()) { return false; } bool okay; - dest = params[index].toULong(&okay); + dest = params[index].toULongLong(&okay); return okay; } diff --git a/Software/PC_Application/scpi.h b/Software/PC_Application/scpi.h index bfa1f23..57614f2 100644 --- a/Software/PC_Application/scpi.h +++ b/Software/PC_Application/scpi.h @@ -52,7 +52,7 @@ public: static QString alternateName(QString name); static bool paramToDouble(QStringList params, int index, double &dest); - static bool paramToULong(QStringList params, int index, unsigned long &dest); + static bool paramToULongLong(QStringList params, int index, unsigned long long &dest); static bool paramToLong(QStringList params, int index, long &dest); static bool paramToBool(QStringList params, int index, bool &dest);