Dhanya Thattil 1873cc9310
Moench dacs defaults (#788)
* merge fix from 7.0.2: new jungfrau fw versions, incremented binary, hdf5 and json versions

* moench: changed dac names and default values to old moench values

* moench: remove interface clk polarity at start up

* moench: default speed is half speed, default values for adc offset and adc phase for different speeds (only half speed confirmed), adc vref voltage to 2.0 like G1

* moench: connected adc pipeline to client

* moench: receiver- default frames per file is 100k and discard partial frames as default

* moench binary in

* using tostring in gui for dacs

* moved frame discard policy as a parameter to be configured with a default depending on detector

* moench: 300 degrees for adc phase in full speed
2023-07-31 14:02:30 +02:00

134 lines
4.0 KiB
C++

// SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package
#include "qTabDeveloper.h"
#include "qDacWidget.h"
#include "qDefs.h"
namespace sls {
qTabDeveloper::qTabDeveloper(QWidget *parent, Detector *detector)
: QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
LOG(logDEBUG) << "Developer ready";
}
qTabDeveloper::~qTabDeveloper() {}
void qTabDeveloper::SetupWidgetWindow() {
try {
// dacs
auto daclist = det->getDacList();
for (auto it : daclist) {
dacWidgets.push_back(
new qDacWidget(this, det, true, sls::ToString(it), it));
}
// adcs
slsDetectorDefs::detectorType detType = det->getDetectorType().squash();
slsDetectorDefs::dacIndex ind = slsDetectorDefs::DAC_0;
switch (detType) {
case slsDetectorDefs::EIGER:
for (auto it : eiger_adcs) {
adcWidgets.push_back(
new qDacWidget(this, det, false, sls::ToString(it), it));
}
break;
case slsDetectorDefs::GOTTHARD:
ind = slsDetectorDefs::TEMPERATURE_ADC;
adcWidgets.push_back(
new qDacWidget(this, det, false, sls::ToString(ind), ind));
ind = slsDetectorDefs::TEMPERATURE_FPGA;
adcWidgets.push_back(
new qDacWidget(this, det, false, sls::ToString(ind), ind));
break;
case slsDetectorDefs::JUNGFRAU:
ind = slsDetectorDefs::TEMPERATURE_ADC;
adcWidgets.push_back(
new qDacWidget(this, det, false, sls::ToString(ind), ind));
break;
case slsDetectorDefs::GOTTHARD2:
case slsDetectorDefs::MYTHEN3:
case slsDetectorDefs::MOENCH:
ind = slsDetectorDefs::TEMPERATURE_FPGA;
adcWidgets.push_back(
new qDacWidget(this, det, false, sls::ToString(ind), ind));
break;
default:
break;
}
}
CATCH_DISPLAY("Could not get dac/ adc index ",
"qTabDeveloper::SetupWidgetWindow")
for (size_t i = 0; i < dacWidgets.size(); ++i) {
gridlayoutDac->addWidget(dacWidgets[i], i / 2, i % 2);
}
gridlayoutDac->addItem(
new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Expanding),
dacWidgets.size(), 0);
for (size_t i = 0; i < adcWidgets.size(); ++i) {
gridlayoutAdc->addWidget(adcWidgets[i], i / 2, i % 2);
}
gridlayoutAdc->addItem(
new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Expanding),
adcWidgets.size(), 0);
tabWidget->setCurrentIndex(0);
PopulateDetectors();
Initialization();
Refresh();
}
void qTabDeveloper::Initialization() {
connect(comboDetector, SIGNAL(currentIndexChanged(int)), this,
SLOT(setDetectorIndex()));
}
void qTabDeveloper::PopulateDetectors() {
LOG(logDEBUG) << "Populating detectors";
try {
comboDetector->clear();
comboDetector->addItem("All");
auto res = det->getHostname();
if (det->size() > 1) {
for (auto &it : res) {
comboDetector->addItem(QString(it.c_str()));
}
}
comboDetector->setCurrentIndex(0);
setDetectorIndex();
}
CATCH_DISPLAY("Could not populate readouts for dacs/adcs",
"qTabDeveloper::PopulateDetectors")
}
void qTabDeveloper::setDetectorIndex() {
LOG(logDEBUG) << "set detector index";
for (const auto &it : dacWidgets) {
it->SetDetectorIndex(comboDetector->currentIndex() - 1);
}
for (const auto &it : adcWidgets) {
it->SetDetectorIndex(comboDetector->currentIndex() - 1);
}
Refresh();
}
void qTabDeveloper::Refresh() {
LOG(logDEBUG) << "**Updating Developer Tab\n";
for (const auto &it : dacWidgets) {
it->Refresh();
}
for (const auto &it : adcWidgets) {
it->Refresh();
}
LOG(logDEBUG) << "**Updated Developer Tab";
}
} // namespace sls