diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.cpp b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.cpp index 3fd6bd1..86abb04 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.cpp @@ -40,6 +40,11 @@ DeviceConfigurationDialogVFF::DeviceConfigurationDialogVFF(LibreVNADriver &dev, } }); + connect(ui->autogain, &QCheckBox::toggled, this, [=](){ + ui->portgain->setEnabled(!ui->autogain->isChecked()); + ui->refgain->setEnabled(!ui->autogain->isChecked()); + }); + dev.sendWithoutPayload(Protocol::PacketType::RequestDeviceConfiguration); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, [=](){ @@ -66,6 +71,10 @@ void DeviceConfigurationDialogVFF::updateGUI(const Protocol::DeviceConfig &c) ui->mask->setText(mask.toString()); gateway = QHostAddress(qFromBigEndian(c.VFF.gw)); ui->gateway->setText(gateway.toString()); + + ui->autogain->setChecked(c.VFF.autogain); + ui->portgain->setCurrentIndex(c.VFF.portGain); + ui->refgain->setCurrentIndex(c.VFF.refGain); } void DeviceConfigurationDialogVFF::updateDevice() @@ -76,5 +85,9 @@ void DeviceConfigurationDialogVFF::updateDevice() p.deviceConfig.VFF.ip = qToBigEndian(ip.toIPv4Address()); p.deviceConfig.VFF.mask = qToBigEndian(mask.toIPv4Address()); p.deviceConfig.VFF.gw = qToBigEndian(gateway.toIPv4Address()); + + p.deviceConfig.VFF.autogain = ui->autogain->isChecked() ? 1 : 0; + p.deviceConfig.VFF.portGain = ui->portgain->currentIndex(); + p.deviceConfig.VFF.refGain = ui->refgain->currentIndex(); dev.SendPacket(p); } diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.ui b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.ui index 54e3956..f2bc51f 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.ui +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvff.ui @@ -6,8 +6,8 @@ 0 0 - 389 - 224 + 318 + 344 @@ -17,7 +17,7 @@ - Address configuration + Address configuration (permanently stored in device) @@ -69,6 +69,148 @@ + + + + PGA configuration (reset after reboot) + + + + + + Autogain + + + + + + + + + Port gain: + + + + + + + + 1V/V + + + + + 10V/V + + + + + 20V/V + + + + + 30V/V + + + + + 40V/V + + + + + 60V/V + + + + + 80V/V + + + + + 120V/V + + + + + 157V/V + + + + + 0.25V/V + + + + + + + + Reference gain: + + + + + + + + 1V/V + + + + + 10V/V + + + + + 20V/V + + + + + 30V/V + + + + + 40V/V + + + + + 60V/V + + + + + 80V/V + + + + + 120V/V + + + + + 157V/V + + + + + 0.25V/V + + + + + + + + + diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp index 349f9de..54555eb 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp @@ -327,6 +327,9 @@ void DevicePacketLogView::addEntry(const DevicePacketLog::LogEntry &e) addString(VFF, "IP", QHostAddress(qFromBigEndian(sFF.ip)).toString()); addString(VFF, "Mask", QHostAddress(qFromBigEndian(sFF.mask)).toString()); addString(VFF, "Gateway", QHostAddress(qFromBigEndian(sFF.gw)).toString()); + addBool(VFF, "PGA autogain", sFF.autogain); + addInteger(VFF, "Port gain", sFF.portGain); + addInteger(VFF, "Reference gain", sFF.refGain); } break; default: diff --git a/Software/VNA_embedded/Application/Communication/Protocol.hpp b/Software/VNA_embedded/Application/Communication/Protocol.hpp index e5e4cf4..fbcfdcd 100644 --- a/Software/VNA_embedded/Application/Communication/Protocol.hpp +++ b/Software/VNA_embedded/Application/Communication/Protocol.hpp @@ -384,10 +384,13 @@ using DeviceConfig = struct _deviceconfig { uint16_t DFTphaseInc; } V1; struct { - uint32_t ip; - uint32_t mask; - uint32_t gw; - uint8_t dhcp :1; + uint32_t ip; + uint32_t mask; + uint32_t gw; + uint16_t dhcp :1; + uint16_t autogain :1; + uint16_t portGain :4; + uint16_t refGain :4; } VFF; }; };