diff --git a/Software/PC_Application/Application b/Software/PC_Application/Application
index 8109389..b26a655 100755
Binary files a/Software/PC_Application/Application and b/Software/PC_Application/Application differ
diff --git a/Software/PC_Application/Generator/generator.cpp b/Software/PC_Application/Generator/generator.cpp
index a1a507b..fa3659d 100644
--- a/Software/PC_Application/Generator/generator.cpp
+++ b/Software/PC_Application/Generator/generator.cpp
@@ -19,7 +19,9 @@ void Generator::updateDevice()
// can't updat if not connected
return;
}
- auto status = central->getDeviceStatus();
// TODO comment in once status is filled with valid values
-// window->getDevice()->SetManual(status);
+ Protocol::PacketInfo p;
+ p.type = Protocol::PacketType::Generator;
+ p.generator = central->getDeviceStatus();
+ window->getDevice()->SendPacket(p);
}
diff --git a/Software/PC_Application/Generator/signalgenwidget.cpp b/Software/PC_Application/Generator/signalgenwidget.cpp
index 5b67e8f..23fa4ea 100644
--- a/Software/PC_Application/Generator/signalgenwidget.cpp
+++ b/Software/PC_Application/Generator/signalgenwidget.cpp
@@ -42,10 +42,18 @@ SignalgeneratorWidget::~SignalgeneratorWidget()
delete ui;
}
-Protocol::ManualControl SignalgeneratorWidget::getDeviceStatus()
+Protocol::GeneratorSettings SignalgeneratorWidget::getDeviceStatus()
{
- // TODO
- Protocol::ManualControl s = {};
+ Protocol::GeneratorSettings s = {};
+ s.frequency = ui->frequency->value();
+ s.cdbm_level = ui->levelSpin->value() * 100.0;
+ if(ui->EnablePort1->isChecked()) {
+ s.activePort = 1;
+ } else if(ui->EnablePort2->isChecked()) {
+ s.activePort = 2;
+ } else {
+ s.activePort = 0;
+ }
return s;
}
diff --git a/Software/PC_Application/Generator/signalgenwidget.h b/Software/PC_Application/Generator/signalgenwidget.h
index 8ef4e05..4e91aff 100644
--- a/Software/PC_Application/Generator/signalgenwidget.h
+++ b/Software/PC_Application/Generator/signalgenwidget.h
@@ -16,7 +16,7 @@ public:
explicit SignalgeneratorWidget(QWidget *parent = nullptr);
~SignalgeneratorWidget();
- Protocol::ManualControl getDeviceStatus();
+ Protocol::GeneratorSettings getDeviceStatus();
signals:
void SettingsChanged();
diff --git a/Software/PC_Application/VNA/vna.cpp b/Software/PC_Application/VNA/vna.cpp
index 0a72c6f..2091fd2 100644
--- a/Software/PC_Application/VNA/vna.cpp
+++ b/Software/PC_Application/VNA/vna.cpp
@@ -126,21 +126,31 @@ VNA::VNA(AppWindow *window)
auto impedanceMatching = toolsMenu->addAction("Impedance Matching");
connect(impedanceMatching, &QAction::triggered, this, &VNA::StartImpedanceMatching);
- connect(window->getUi()->actionAssignDefaultCal, &QAction::triggered, [=](){
+ defaultCalMenu = new QMenu("Default Calibration");
+ assignDefaultCal = defaultCalMenu->addAction("Assign...");
+ removeDefaultCal = defaultCalMenu->addAction("Remove");
+ removeDefaultCal->setEnabled(false);
+ defaultCalMenu->setEnabled(false);
+
+ actions.insert(window->getUi()->menuDevice->addSeparator());
+ window->getUi()->menuDevice->addMenu(defaultCalMenu);
+ actions.insert(defaultCalMenu->menuAction());
+
+ connect(assignDefaultCal, &QAction::triggered, [=](){
if(window->getDevice()) {
auto key = "DefaultCalibration"+window->getDevice()->serial();
QSettings settings;
auto filename = QFileDialog::getOpenFileName(nullptr, "Load calibration data", settings.value(key).toString(), "Calibration files (*.cal)", nullptr, QFileDialog::DontUseNativeDialog);
if(!filename.isEmpty()) {
settings.setValue(key, filename);
- window->getUi()->actionRemoveDefaultCal->setEnabled(true);
+ removeDefaultCal->setEnabled(true);
}
}
});
- connect(window->getUi()->actionRemoveDefaultCal, &QAction::triggered, [=](){
+ connect(removeDefaultCal, &QAction::triggered, [=](){
QSettings settings;
settings.remove("DefaultCalibration"+window->getDevice()->serial());
- window->getUi()->actionRemoveDefaultCal->setEnabled(false);
+ removeDefaultCal->setEnabled(false);
});
@@ -432,6 +442,7 @@ void VNA::deactivate()
void VNA::initializeDevice()
{
+ defaultCalMenu->setEnabled(true);
connect(window->getDevice(), &Device::DatapointReceived, this, &VNA::NewDatapoint, Qt::UniqueConnection);
// Check if default calibration exists and attempt to load it
QSettings s;
@@ -443,15 +454,20 @@ void VNA::initializeDevice()
cal.openFromFile(filename);
ApplyCalibration(cal.getType());
}
- window->getUi()->actionRemoveDefaultCal->setEnabled(true);
+ removeDefaultCal->setEnabled(true);
} else {
qDebug() << "No default calibration file set for this device";
- window->getUi()->actionRemoveDefaultCal->setEnabled(false);
+ removeDefaultCal->setEnabled(false);
}
// Configure initial state of device
window->getDevice()->Configure(settings);
}
+void VNA::deviceDisconnected()
+{
+ defaultCalMenu->setEnabled(false);
+}
+
using namespace std;
void VNA::NewDatapoint(Protocol::Datapoint d)
diff --git a/Software/PC_Application/VNA/vna.h b/Software/PC_Application/VNA/vna.h
index 27066a1..f4d8f08 100644
--- a/Software/PC_Application/VNA/vna.h
+++ b/Software/PC_Application/VNA/vna.h
@@ -15,6 +15,7 @@ public:
void deactivate() override;
void initializeDevice() override;
+ void deviceDisconnected() override;
private slots:
void NewDatapoint(Protocol::Datapoint d);
void StartImpedanceMatching();
@@ -63,6 +64,9 @@ private:
bool calWaitFirst;
QProgressDialog calDialog;
+ QMenu *defaultCalMenu;
+ QAction *assignDefaultCal, *removeDefaultCal;
+
// Status Labels
QLabel *lStart, *lCenter, *lStop, *lSpan, *lPoints, *lBandwidth;
QLabel *lCalibration;
diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp
index c9f46d4..45f6bb2 100644
--- a/Software/PC_Application/appwindow.cpp
+++ b/Software/PC_Application/appwindow.cpp
@@ -168,11 +168,19 @@ void AppWindow::ConnectToDevice(QString serial)
});
ui->actionDisconnect->setEnabled(true);
ui->actionManual_Control->setEnabled(true);
- ui->menuDefault_Calibration->setEnabled(true);
ui->actionFirmware_Update->setEnabled(true);
Mode::getActiveMode()->initializeDevice();
UpdateReference();
+
+ for(auto d : deviceActionGroup->actions()) {
+ if(d->text() == device->serial()) {
+ d->blockSignals(true);
+ d->setChecked(true);
+ d->blockSignals(false);
+ break;
+ }
+ }
} catch (const runtime_error e) {
DisconnectDevice();
UpdateDeviceList();
@@ -187,13 +195,13 @@ void AppWindow::DisconnectDevice()
}
ui->actionDisconnect->setEnabled(false);
ui->actionManual_Control->setEnabled(false);
- ui->menuDefault_Calibration->setEnabled(false);
ui->actionFirmware_Update->setEnabled(false);
if(deviceActionGroup->checkedAction()) {
deviceActionGroup->checkedAction()->setChecked(false);
}
lConnectionStatus.setText("No device connected");
lDeviceInfo.setText("No device information available yet");
+ Mode::getActiveMode()->deviceDisconnected();
}
void AppWindow::DeviceConnectionLost()
diff --git a/Software/PC_Application/main.ui b/Software/PC_Application/main.ui
index deacbc8..e00228d 100644
--- a/Software/PC_Application/main.ui
+++ b/Software/PC_Application/main.ui
@@ -42,22 +42,11 @@
-
-