From 64791e6d4e626f74174b0e86a92ae2f3ced568a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sat, 15 Nov 2025 19:22:15 +0100 Subject: [PATCH] option to restore default values of device configuration --- .../LibreVNA/deviceconfigurationdialogv1.cpp | 16 ++++++++++++++++ .../LibreVNA/deviceconfigurationdialogv1.h | 1 + .../LibreVNA/deviceconfigurationdialogv1.ui | 2 +- Software/VNA_embedded/Application/App.cpp | 4 ++++ .../Application/Communication/Protocol.cpp | 1 + .../Application/Communication/Protocol.hpp | 1 + 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp index 65832af..e1ef8bd 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp @@ -1,6 +1,9 @@ #include "deviceconfigurationdialogv1.h" #include "ui_deviceconfigurationdialogv1.h" +#include +#include "CustomWidgets/informationbox.h" + DeviceConfigurationDialogV1::DeviceConfigurationDialogV1(LibreVNADriver &dev, QWidget *parent) : QDialog(parent), ui(new Ui::DeviceConfigurationDialogV1), @@ -56,6 +59,10 @@ DeviceConfigurationDialogV1::DeviceConfigurationDialogV1(LibreVNADriver &dev, QW connect(ui->buttonBox, &QDialogButtonBox::rejected, this, [=](){ reject(); }); + connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, [=](){ + resetDevice(); + this->dev.sendWithoutPayload(Protocol::PacketType::RequestDeviceConfiguration); + }); } DeviceConfigurationDialogV1::~DeviceConfigurationDialogV1() @@ -84,3 +91,12 @@ void DeviceConfigurationDialogV1::updateDevice() p.deviceConfig.V1.PLLSettlingDelay = ui->PLLSettlingDelay->value(); dev.SendPacket(p); } + +void DeviceConfigurationDialogV1::resetDevice() +{ + dev.sendWithoutPayload(Protocol::PacketType::ResetDeviceConfiguration, [=](LibreVNADriver::TransmissionResult res){ + if(res != LibreVNADriver::TransmissionResult::Ack) { + InformationBox::ShowError("Error", "Failed to reset device configuration"); + } + }); +} diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h index cf47d0e..6c75856 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h @@ -20,6 +20,7 @@ public: private: void updateGUI(const Protocol::DeviceConfig &c); void updateDevice(); + void resetDevice(); Ui::DeviceConfigurationDialogV1 *ui; LibreVNADriver &dev; diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.ui b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.ui index 8a8a8fb..c717637 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.ui +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.ui @@ -164,7 +164,7 @@ - QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok|QDialogButtonBox::StandardButton::RestoreDefaults diff --git a/Software/VNA_embedded/Application/App.cpp b/Software/VNA_embedded/Application/App.cpp index be2cb3b..0a5d278 100644 --- a/Software/VNA_embedded/Application/App.cpp +++ b/Software/VNA_embedded/Application/App.cpp @@ -276,6 +276,10 @@ inline void App_Process() { HW::setDeviceConfig(recv_packet.deviceConfig); Communication::SendWithoutPayload(Protocol::PacketType::Ack); break; + case Protocol::PacketType::ResetDeviceConfiguration: + HW::SetDefaultDeviceConfig(); + Communication::SendWithoutPayload(Protocol::PacketType::Ack); + break; case Protocol::PacketType::SetTrigger: if(Trigger::GetMode() == Trigger::Mode::USB_GUI) { Trigger::SetInput(true); diff --git a/Software/VNA_embedded/Application/Communication/Protocol.cpp b/Software/VNA_embedded/Application/Communication/Protocol.cpp index aa06218..38db2ba 100644 --- a/Software/VNA_embedded/Application/Communication/Protocol.cpp +++ b/Software/VNA_embedded/Application/Communication/Protocol.cpp @@ -127,6 +127,7 @@ uint16_t Protocol::EncodePacket(const PacketInfo &packet, uint8_t *dest, uint16_ case PacketType::StopStatusUpdates: case PacketType::StartStatusUpdates: case PacketType::InitiateSweep: + case PacketType::ResetDeviceConfiguration: // no payload break; case PacketType::VNADatapoint: payload_size = packet.VNAdatapoint->requiredBufferSize(); break; diff --git a/Software/VNA_embedded/Application/Communication/Protocol.hpp b/Software/VNA_embedded/Application/Communication/Protocol.hpp index 1409b02..38b4d7e 100644 --- a/Software/VNA_embedded/Application/Communication/Protocol.hpp +++ b/Software/VNA_embedded/Application/Communication/Protocol.hpp @@ -605,6 +605,7 @@ enum class PacketType : uint8_t { StartStatusUpdates = 31, InitiateSweep = 32, PerformAction = 33, + ResetDeviceConfiguration = 34, }; using PacketInfo = struct _packetinfo {