LibreVNA/Software/PC_Application/Calibration/sourcecaldialog.cpp
Kiara Navarro 2fbe6e84be
mode: move responsabilities from mode to modehandler
- Pass the following responsabilities from mode to mode handler:
   - active / deactive target mode
   - get active mode
   - create new modes

- Move back setting averaging mode when settings are
updated using getModes() method instead of handling
logic in mode handler.
2022-07-11 19:33:28 -05:00

48 lines
1.5 KiB
C++

#include "sourcecaldialog.h"
#include <QDebug>
SourceCalDialog::SourceCalDialog(Device *dev, ModeHandler *handler)
: AmplitudeCalDialog(dev, handler)
{
setWindowTitle("Source Calibration Dialog");
LoadFromDevice();
}
void SourceCalDialog::SelectedPoint(double frequency, bool port2)
{
Protocol::PacketInfo p;
p.type = Protocol::PacketType::Generator;
p.generator.frequency = frequency;
p.generator.cdbm_level = excitationAmplitude * 100.0;
if(frequency > 0) {
if(port2) {
p.generator.activePort = 2;
} else {
p.generator.activePort = 1;
}
} else {
// invalid frequency, disable both ports
p.generator.activePort = 0;
}
p.generator.applyAmplitudeCorrection = 0;
dev->SendPacket(p);
}
void SourceCalDialog::AmplitudeChanged(AmplitudeCalDialog::CorrectionPoint &point, bool port2)
{
auto *factor = port2 ? &point.correctionPort2 : &point.correctionPort1;
const auto *amplitude = port2 ? &point.amplitudePort2 : &point.amplitudePort1;
// calculate correction factor by comparing expected with measured amplitude
*factor = (excitationAmplitude - *amplitude) * 100.0;
}
void SourceCalDialog::UpdateAmplitude(AmplitudeCalDialog::CorrectionPoint &point)
{
point.amplitudePort1 = excitationAmplitude - (double) point.correctionPort1 / 100.0;
point.amplitudePort2 = excitationAmplitude - (double) point.correctionPort2 / 100.0;
point.port1set = true;
point.port2set = true;
}