Fix 32 bit overflow in SCPI commands

This commit is contained in:
Jan Käberich 2021-12-13 16:05:45 +01:00
parent 8972af3f53
commit 399ef3fd5e
5 changed files with 35 additions and 35 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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);