mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-06 23:13:43 +00:00
Partial virtual device wrapper
This commit is contained in:
parent
181ba1d6bd
commit
f0a40417e4
13 changed files with 1102 additions and 500 deletions
|
|
@ -30,8 +30,8 @@ void Generator::deactivate()
|
|||
// store current settings
|
||||
QSettings s;
|
||||
auto settings = central->getDeviceStatus();
|
||||
s.setValue("GeneratorFrequency", static_cast<unsigned long long>(settings.frequency));
|
||||
s.setValue("GeneratorLevel", static_cast<unsigned long long>((double) settings.cdbm_level / 100.0));
|
||||
s.setValue("GeneratorFrequency", static_cast<unsigned long long>(settings.freq));
|
||||
s.setValue("GeneratorLevel", static_cast<unsigned long long>((double) settings.dBm));
|
||||
Mode::deactivate();
|
||||
}
|
||||
|
||||
|
|
@ -59,10 +59,7 @@ void Generator::updateDevice()
|
|||
// can't update if not connected
|
||||
return;
|
||||
}
|
||||
Protocol::PacketInfo p;
|
||||
p.type = Protocol::PacketType::Generator;
|
||||
p.generator = central->getDeviceStatus();
|
||||
window->getDevice()->SendPacket(p);
|
||||
window->getDevice()->setSG(central->getDeviceStatus());
|
||||
}
|
||||
|
||||
void Generator::setupSCPI()
|
||||
|
|
@ -76,7 +73,7 @@ void Generator::setupSCPI()
|
|||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().frequency);
|
||||
return QString::number(central->getDeviceStatus().freq);
|
||||
}));
|
||||
add(new SCPICommand("LVL", [=](QStringList params) -> QString {
|
||||
double newval;
|
||||
|
|
@ -88,7 +85,7 @@ void Generator::setupSCPI()
|
|||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().cdbm_level / 100.0);
|
||||
return QString::number(central->getDeviceStatus().dBm);
|
||||
}));
|
||||
add(new SCPICommand("PORT", [=](QStringList params) -> QString {
|
||||
unsigned long long newval;
|
||||
|
|
@ -99,6 +96,6 @@ void Generator::setupSCPI()
|
|||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().activePort);
|
||||
return QString::number(central->getDeviceStatus().port);
|
||||
}));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "ui_signalgenwidget.h"
|
||||
|
||||
SignalgeneratorWidget::SignalgeneratorWidget(Device *&dev, QWidget *parent) :
|
||||
SignalgeneratorWidget::SignalgeneratorWidget(VirtualDevice *dev, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::SignalgeneratorWidget),
|
||||
dev(dev)
|
||||
|
|
@ -32,16 +32,16 @@ SignalgeneratorWidget::SignalgeneratorWidget(Device *&dev, QWidget *parent) :
|
|||
ui->steps->setPrecision(0);
|
||||
|
||||
connect(ui->frequency, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||
if(newval < Device::Info(dev).limits_minFreq) {
|
||||
newval = Device::Info(dev).limits_minFreq;
|
||||
} else if (newval > Device::Info(dev).limits_maxFreq) {
|
||||
newval = Device::Info(dev).limits_maxFreq;
|
||||
if(newval < VirtualDevice::getInfo(dev).Limits.minFreq) {
|
||||
newval = VirtualDevice::getInfo(dev).Limits.minFreq;
|
||||
} else if (newval > VirtualDevice::getInfo(dev).Limits.maxFreq) {
|
||||
newval = VirtualDevice::getInfo(dev).Limits.maxFreq;
|
||||
}
|
||||
ui->frequency->setValueQuiet(newval);
|
||||
if (newval < ui->span->value()/2)
|
||||
ui->span->setValueQuiet(newval/2);
|
||||
if (newval + ui->span->value()/2 > Device::Info(dev).limits_maxFreq)
|
||||
ui->span->setValueQuiet((Device::Info(dev).limits_maxFreq - newval)*2);
|
||||
if (newval + ui->span->value()/2 > VirtualDevice::getInfo(dev).Limits.maxFreq)
|
||||
ui->span->setValueQuiet((VirtualDevice::getInfo(dev).Limits.maxFreq - newval)*2);
|
||||
newval = ui->frequency->value() - ui->span->value()/2;
|
||||
ui->current->setValueQuiet(newval);
|
||||
emit SettingsChanged();
|
||||
|
|
@ -50,8 +50,8 @@ SignalgeneratorWidget::SignalgeneratorWidget(Device *&dev, QWidget *parent) :
|
|||
connect(ui->span, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||
if(newval < 0 ) {
|
||||
newval = 0;
|
||||
} else if (newval > Device::Info(dev).limits_maxFreq - Device::Info(dev).limits_minFreq) {
|
||||
newval = Device::Info(dev).limits_maxFreq - Device::Info(dev).limits_minFreq;
|
||||
} else if (newval > VirtualDevice::getInfo(dev).Limits.maxFreq - VirtualDevice::getInfo(dev).Limits.minFreq) {
|
||||
newval = VirtualDevice::getInfo(dev).Limits.maxFreq - VirtualDevice::getInfo(dev).Limits.minFreq;
|
||||
}
|
||||
ui->span->setValueQuiet(newval);
|
||||
|
||||
|
|
@ -60,8 +60,8 @@ SignalgeneratorWidget::SignalgeneratorWidget(Device *&dev, QWidget *parent) :
|
|||
ui->frequency->setValueQuiet(ui->span->value()/2);
|
||||
}
|
||||
newF = ui->frequency->value() + ui->span->value()/2;
|
||||
if (newF > Device::Info(dev).limits_maxFreq) {
|
||||
ui->frequency->setValueQuiet(Device::Info(dev).limits_maxFreq - ui->span->value()/2);
|
||||
if (newF > VirtualDevice::getInfo(dev).Limits.maxFreq) {
|
||||
ui->frequency->setValueQuiet(VirtualDevice::getInfo(dev).Limits.maxFreq - ui->span->value()/2);
|
||||
}
|
||||
|
||||
newval = ui->frequency->value() - ui->span->value()/2;
|
||||
|
|
@ -72,8 +72,8 @@ SignalgeneratorWidget::SignalgeneratorWidget(Device *&dev, QWidget *parent) :
|
|||
connect(ui->current, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||
if(newval < 0 ) {
|
||||
newval = 0;
|
||||
} else if (newval > Device::Info(dev).limits_maxFreq - Device::Info(dev).limits_minFreq) {
|
||||
newval = Device::Info(dev).limits_maxFreq - Device::Info(dev).limits_minFreq;
|
||||
} else if (newval > VirtualDevice::getInfo(dev).Limits.maxFreq - VirtualDevice::getInfo(dev).Limits.minFreq) {
|
||||
newval = VirtualDevice::getInfo(dev).Limits.maxFreq - VirtualDevice::getInfo(dev).Limits.minFreq;
|
||||
}
|
||||
ui->current->setValueQuiet(newval);
|
||||
emit SettingsChanged();
|
||||
|
|
@ -140,22 +140,21 @@ void SignalgeneratorWidget::timerEvent(QTimerEvent *event)
|
|||
}
|
||||
}
|
||||
|
||||
Protocol::GeneratorSettings SignalgeneratorWidget::getDeviceStatus()
|
||||
VirtualDevice::SGSettings SignalgeneratorWidget::getDeviceStatus()
|
||||
{
|
||||
Protocol::GeneratorSettings s = {};
|
||||
VirtualDevice::SGSettings s = {};
|
||||
if (ui->EnabledSweep->isChecked())
|
||||
s.frequency = ui->current->value();
|
||||
s.freq = ui->current->value();
|
||||
else
|
||||
s.frequency = ui->frequency->value();
|
||||
s.cdbm_level = ui->levelSpin->value() * 100.0;
|
||||
s.freq = ui->frequency->value();
|
||||
s.dBm = ui->levelSpin->value();
|
||||
if(ui->EnablePort1->isChecked()) {
|
||||
s.activePort = 1;
|
||||
s.port = 1;
|
||||
} else if(ui->EnablePort2->isChecked()) {
|
||||
s.activePort = 2;
|
||||
s.port = 2;
|
||||
} else {
|
||||
s.activePort = 0;
|
||||
s.port = 0;
|
||||
}
|
||||
s.applyAmplitudeCorrection = 1;
|
||||
return s;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef SIGNALGENERATOR_H
|
||||
#define SIGNALGENERATOR_H
|
||||
|
||||
#include "Device/device.h"
|
||||
#include "Device/virtualdevice.h".h"
|
||||
#include "savable.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
|
@ -15,10 +15,10 @@ class SignalgeneratorWidget : public QWidget, public Savable
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SignalgeneratorWidget(Device*&dev, QWidget *parent = nullptr);
|
||||
explicit SignalgeneratorWidget(VirtualDevice *dev, QWidget *parent = nullptr);
|
||||
~SignalgeneratorWidget();
|
||||
|
||||
Protocol::GeneratorSettings getDeviceStatus();
|
||||
VirtualDevice::SGSettings getDeviceStatus();
|
||||
virtual nlohmann::json toJSON() override;
|
||||
virtual void fromJSON(nlohmann::json j) override;
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ protected:
|
|||
private:
|
||||
Ui::SignalgeneratorWidget *ui;
|
||||
int m_timerId;
|
||||
Device*&dev;
|
||||
VirtualDevice *dev;
|
||||
};
|
||||
|
||||
#endif // SIGNALGENERATOR_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue