mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-07 23:43:42 +00:00
Move project, add simple test
This commit is contained in:
parent
a58b705f08
commit
8d66770acf
751 changed files with 249345 additions and 0 deletions
110
Software/PC_Application/LibreVNA-GUI/Generator/generator.cpp
Normal file
110
Software/PC_Application/LibreVNA-GUI/Generator/generator.cpp
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
#include "generator.h"
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
Generator::Generator(AppWindow *window, QString name)
|
||||
: Mode(window, name, "GENerator")
|
||||
{
|
||||
central = new SignalgeneratorWidget(window, window);
|
||||
|
||||
auto pref = Preferences::getInstance();
|
||||
|
||||
// set initial values
|
||||
if(pref.Startup.RememberSweepSettings) {
|
||||
QSettings s;
|
||||
central->setFrequency(s.value("GeneratorFrequency", pref.Startup.Generator.frequency).toDouble());
|
||||
central->setLevel(s.value("GeneratorLevel", pref.Startup.Generator.level).toDouble());
|
||||
} else {
|
||||
central->setFrequency(pref.Startup.Generator.frequency);
|
||||
central->setLevel(pref.Startup.Generator.level);
|
||||
}
|
||||
|
||||
setupSCPI();
|
||||
|
||||
finalize(central);
|
||||
connect(central, &SignalgeneratorWidget::SettingsChanged, this, &Generator::updateDevice);
|
||||
}
|
||||
|
||||
void Generator::deactivate()
|
||||
{
|
||||
// store current settings
|
||||
QSettings s;
|
||||
auto settings = central->getDeviceStatus();
|
||||
s.setValue("GeneratorFrequency", static_cast<unsigned long long>(settings.freq));
|
||||
s.setValue("GeneratorLevel", static_cast<unsigned long long>((double) settings.dBm));
|
||||
Mode::deactivate();
|
||||
}
|
||||
|
||||
void Generator::initializeDevice()
|
||||
{
|
||||
updateDevice();
|
||||
}
|
||||
|
||||
nlohmann::json Generator::toJSON()
|
||||
{
|
||||
return central->toJSON();
|
||||
}
|
||||
|
||||
void Generator::fromJSON(nlohmann::json j)
|
||||
{
|
||||
if(j.is_null()) {
|
||||
return;
|
||||
}
|
||||
central->fromJSON(j);
|
||||
}
|
||||
|
||||
void Generator::preset()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Generator::deviceInfoUpdated()
|
||||
{
|
||||
central->deviceInfoUpdated();
|
||||
}
|
||||
|
||||
void Generator::updateDevice()
|
||||
{
|
||||
if(!window->getDevice() || isActive != true) {
|
||||
// can't update if not connected
|
||||
return;
|
||||
}
|
||||
window->getDevice()->setSG(central->getDeviceStatus());
|
||||
}
|
||||
|
||||
void Generator::setupSCPI()
|
||||
{
|
||||
add(new SCPICommand("FREQuency", [=](QStringList params) -> QString {
|
||||
unsigned long long newval;
|
||||
if(!SCPI::paramToULongLong(params, 0, newval)) {
|
||||
return SCPI::getResultName(SCPI::Result::Error);
|
||||
} else {
|
||||
central->setFrequency(newval);
|
||||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().freq);
|
||||
}));
|
||||
add(new SCPICommand("LVL", [=](QStringList params) -> QString {
|
||||
double newval;
|
||||
if(!SCPI::paramToDouble(params, 0, newval)) {
|
||||
return SCPI::getResultName(SCPI::Result::Error);
|
||||
} else {
|
||||
central->setLevel(newval);
|
||||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().dBm);
|
||||
}));
|
||||
add(new SCPICommand("PORT", [=](QStringList params) -> QString {
|
||||
unsigned long long newval;
|
||||
if(!SCPI::paramToULongLong(params, 0, newval) || newval > VirtualDevice::getInfo(window->getDevice()).ports) {
|
||||
return SCPI::getResultName(SCPI::Result::Error);
|
||||
} else {
|
||||
central->setPort(newval);
|
||||
return SCPI::getResultName(SCPI::Result::Empty);
|
||||
}
|
||||
}, [=](QStringList) -> QString {
|
||||
return QString::number(central->getDeviceStatus().port);
|
||||
}));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue