diff --git a/slsDetectorGui/forms/form_detectormain.ui b/slsDetectorGui/forms/form_detectormain.ui
index 1c61ef42f..3a2005d22 100755
--- a/slsDetectorGui/forms/form_detectormain.ui
+++ b/slsDetectorGui/forms/form_detectormain.ui
@@ -219,39 +219,27 @@
true
-
-
+
+
@@ -477,40 +465,38 @@ p, li { white-space: pre-wrap; }
&About
+
+
+ Load Configuration
+
+
+
+
+ Load Trimbits
+
+
+
+
+ true
+
+
+ Debug
+
+
+
+
+ true
+
+
+ Expert
+
+
true
- D&ockable Windows
-
-
-
-
- &Load &Trimbits
-
-
-
-
- &Save &Trimbits
-
-
-
-
- &Load C&alibration
-
-
-
-
- &Save C&alibration
-
-
-
-
- true
-
-
- &Listen to Gui Client
+ Dockable Windows
diff --git a/slsDetectorGui/forms/form_tab_advanced.ui b/slsDetectorGui/forms/form_tab_advanced.ui
index 858567f9f..315d1cc01 100755
--- a/slsDetectorGui/forms/form_tab_advanced.ui
+++ b/slsDetectorGui/forms/form_tab_advanced.ui
@@ -54,7 +54,7 @@
QTabWidget::North
- 1
+ 2
Qt::ElideLeft
@@ -418,7 +418,7 @@
- Receiver UDP IP:
+ Destination UDP IP:
@@ -799,7 +799,7 @@
- Receiver UDP Port:
+ Destination UDP Port:
@@ -942,7 +942,7 @@
- Readout UDP MAC:
+ Sourceadout UDP MAC:
@@ -987,7 +987,7 @@
- Receiver UDP MAC:
+ Destination UDP MAC:
@@ -1000,7 +1000,7 @@
- Readout UDP IP:
+ Source UDP IP:
diff --git a/slsDetectorGui/forms/form_tab_dataoutput.ui b/slsDetectorGui/forms/form_tab_dataoutput.ui
index 2b0cf9451..ea7f80c65 100755
--- a/slsDetectorGui/forms/form_tab_dataoutput.ui
+++ b/slsDetectorGui/forms/form_tab_dataoutput.ui
@@ -55,6 +55,9 @@
25
+
+ <html><head/><body><p>The file path can be different depending on the Module chosen.</p></body></html>
+
-
@@ -532,31 +535,21 @@ Compression using Root. Available only for Gotthard in Expert Mode.
false
-
-
-
-
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
- 0
- 25
+ 10
+ 20
-
-
- 200
- 16777215
-
-
-
-
-
- Continous
-
-
- -
-
- Store in RAM
-
-
-
+
-
@@ -589,7 +582,7 @@ Compression using Root. Available only for Gotthard in Expert Mode.
- -
+
-
Qt::Horizontal
@@ -618,8 +611,21 @@ Compression using Root. Available only for Gotthard in Expert Mode.
- -
-
+
-
+
+
+
+ 105
+ 16777215
+
+
+
+ Clock Divider:
+
+
+
+ -
+
0
@@ -642,56 +648,6 @@ Compression using Root. Available only for Gotthard in Expert Mode.
Non Parallel
- -
-
- Safe
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 10
- 20
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 10
- 20
-
-
-
-
- -
-
-
-
- 105
- 16777215
-
-
-
- Clock Divider:
-
@@ -730,8 +686,6 @@ Compression using Root. Available only for Gotthard in Expert Mode.
radioCustomDeadtime
spinCustomDeadTime
comboEigerClkDivider
- comboEigerFlags1
- comboEigerFlags2
diff --git a/slsDetectorGui/include/qDacWidget.h b/slsDetectorGui/include/qDacWidget.h
index 26ec0897e..1cf01385a 100755
--- a/slsDetectorGui/include/qDacWidget.h
+++ b/slsDetectorGui/include/qDacWidget.h
@@ -2,7 +2,7 @@
#include "ui_form_dac.h"
-class multiSlsDetector;
+#include "Detector.h"
#include "sls_detector_defs.h"
#include
@@ -11,7 +11,7 @@ class qDacWidget:public QWidget, private Ui::WidgetDacObject {
Q_OBJECT
public:
- qDacWidget(QWidget *parent, multiSlsDetector* detector, bool d, std::string n, slsDetectorDefs::dacIndex i, bool t);
+ qDacWidget(QWidget *parent, sls::Detector* detector, bool d, std::string n, slsDetectorDefs::dacIndex i, bool t);
~qDacWidget();
void SetDetectorIndex(int id);
@@ -25,7 +25,7 @@ private:
void GetAdc();
void Refresh();
- multiSlsDetector *myDet;
+ sls::Detector *det;
bool isDac{true};
slsDetectorDefs::dacIndex index;
bool isMillideg{false};
diff --git a/slsDetectorGui/include/qDefs.h b/slsDetectorGui/include/qDefs.h
index 86e181577..8bb1e7b6f 100755
--- a/slsDetectorGui/include/qDefs.h
+++ b/slsDetectorGui/include/qDefs.h
@@ -1,6 +1,5 @@
#pragma once
-#include "multiSlsDetector.h"
#include "sls_detector_defs.h"
#include
@@ -10,6 +9,15 @@
#include
#include
#include
+#include
+using std::chrono::duration;
+using std::chrono::duration_cast;
+using std::chrono::nanoseconds;
+using std::chrono::microseconds;
+using std::chrono::milliseconds;
+using std::chrono::seconds;
+using std::chrono::minutes;
+using std::chrono::hours;
#define CATCH_DISPLAY(m, s) catch(...) { qDefs::DisplayExceptions(m, s); }
#define CATCH_HANDLE(...) catch(...) { qDefs::HandleExceptions(__VA_ARGS__); }
@@ -145,98 +153,81 @@ class qDefs : public QWidget {
}
};
- /**
- * returns the value in ns to send to server as the
- * server class slsdetector accepts in ns.
- * @param unit unit of time
- * @param value time
- * returns time value in ns
- */
- static double getNSTime(timeUnit unit, double value) {
- double valueNS = value;
- switch (unit) {
+ /** returns the time in a user friendly time unit */
+ static std::pair getUserFriendlyTime(nanoseconds tns) {
+ if (tns < microseconds(1)) {
+ return std::make_pair(tns.count(), NANOSECONDS);
+ }
+ if (tns < milliseconds(1)) {
+ return std::make_pair(
+ duration_cast>(tns).count(),
+ MICROSECONDS);
+ }
+ if (tns < seconds(1)) {
+ return std::make_pair(
+ duration_cast>(tns).count(),
+ MILLISECONDS);
+ }
+ if (tns < minutes(1)) {
+ return std::make_pair(duration_cast>(tns).count(),
+ SECONDS);
+ }
+ if (tns < hours(1)) {
+ return std::make_pair(
+ duration_cast>>(tns).count(),
+ MINUTES);
+ }
+ return std::make_pair(
+ duration_cast>>(tns).count(), HOURS);
+ }
+
+ /** returns the value in ns */
+ static nanoseconds getNSTime(std::pair time) {
+ switch (time.second) {
case HOURS:
- valueNS *= 60;
+ return std::chrono::duration_cast(
+ std::chrono::duration>(time.first));
case MINUTES:
- valueNS *= 60;
+ return std::chrono::duration_cast(
+ std::chrono::duration>(time.first));
case SECONDS:
- valueNS *= 1000;
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
case MILLISECONDS:
- valueNS *= 1000;
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
case MICROSECONDS:
- valueNS *= 1000;
- case NANOSECONDS:
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
default:
- break;
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
}
- return valueNS;
- };
-
- /**
- * returns the value in ms
- * @param unit unit of time
- * @param value time
- * returns time value in ms
- */
- static double getMSTime(timeUnit unit, double value) {
- double valueMS = value;
- switch (unit) {
- case NANOSECONDS:
- valueMS /= 1000;
- case MICROSECONDS:
- valueMS /= 1000;
- return valueMS;
+ }
+ /** returns the value in ms */
+ static milliseconds getMSTime(std::pair time) {
+ switch (time.second) {
case HOURS:
- valueMS *= 60;
+ return std::chrono::duration_cast(
+ std::chrono::duration>(time.first));
case MINUTES:
- valueMS *= 60;
+ return std::chrono::duration_cast(
+ std::chrono::duration>(time.first));
case SECONDS:
- valueMS *= 1000;
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
+ case MILLISECONDS:
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
+ case MICROSECONDS:
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
default:
- break;
+ return std::chrono::duration_cast(
+ std::chrono::duration(time.first));
}
- return valueMS;
- };
-
- /**
- * returns the time in the appropriate time unit
- * @param value time in seconds
- * returns the time in an appropriate time and unit
- */
- static std::pair getCorrectTime(double value) {
- timeUnit unit;
- int intUnit = (int)SECONDS;
-
- /**0 ms*/
- if (!value) {
- unit = MILLISECONDS;
- return std::make_pair(value, unit);
- }
-
- /** hr, min, sec */
- if (value >= 1) {
- double newVal = value;
- while ((newVal >= 1) && (intUnit >= (int)HOURS)) {
- /** value retains the old value */
- value = newVal;
- newVal = value / (double)60;
- intUnit--;
- }
- /** returning the previous value*/
- unit = (timeUnit)(intUnit + 1);
- return std::make_pair(value, unit);
- }
- /** ms, us, ns */
- else {
- while ((value < 1) && (intUnit < (int)NANOSECONDS)) {
- value = value * (double)1000;
- intUnit++;
- }
- unit = (timeUnit)(intUnit);
- return std::make_pair(value, unit);
- }
- };
+ }
/**
* displays an warning,error,info message
diff --git a/slsDetectorGui/include/qDetectorMain.h b/slsDetectorGui/include/qDetectorMain.h
index 05650c389..6aa512cdc 100755
--- a/slsDetectorGui/include/qDetectorMain.h
+++ b/slsDetectorGui/include/qDetectorMain.h
@@ -13,7 +13,7 @@ class qTabDebugging;
class qTabDeveloper;
class qTabMessages;
-class multiSlsDetector;
+#include "Detector.h"
#include
class QResizeEvent;
@@ -70,17 +70,17 @@ class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject {
NumberOfTabs
};
slsDetectorDefs::detectorType detType;
- multiSlsDetector* myDet;
- qDrawPlot* myPlot;
- MyTabWidget* tabs;
- qTabMeasurement* tabMeasurement;
- qTabDataOutput* tabDataOutput;
- qTabPlot* tabPlot;
- qTabSettings* tabSettings;
- qTabAdvanced* tabAdvanced;
- qTabDebugging* tabDebugging;
- qTabDeveloper* tabDeveloper;
- qTabMessages* tabMessages;
+ std::unique_ptr det;
+ std::unique_ptr plot;
+ std::unique_ptr tabs;
+ std::unique_ptr tabMeasurement;
+ std::unique_ptr tabDataOutput;
+ std::unique_ptr tabPlot;
+ std::unique_ptr tabSettings;
+ std::unique_ptr tabAdvanced;
+ std::unique_ptr tabDebugging;
+ std::unique_ptr tabDeveloper;
+ std::unique_ptr tabMessages;
int isDeveloper;
int heightPlotWindow;
int heightCentralWidget;
diff --git a/slsDetectorGui/include/qDrawPlot.h b/slsDetectorGui/include/qDrawPlot.h
index 52ab92a23..053a8c86a 100755
--- a/slsDetectorGui/include/qDrawPlot.h
+++ b/slsDetectorGui/include/qDrawPlot.h
@@ -3,20 +3,24 @@
#include "ui_form_plot.h"
#include "qDefs.h"
-class detectorData;
class SlsQt1DPlot;
class SlsQtH1D;
class SlsQt2DPlot;
class qCloneWidget;
-class QResizeEvent;
+class detectorData;
+#include "Detector.h"
+
+class QResizeEvent;
#include
+#include
+
class qDrawPlot : public QWidget, private Ui::PlotObject {
Q_OBJECT
public:
- qDrawPlot(QWidget *parent, multiSlsDetector *detector);
+ qDrawPlot(QWidget *parent, sls::Detector *detector);
~qDrawPlot();
bool GetIsRunning();
void SetRunning(bool enable);
@@ -88,7 +92,7 @@ class qDrawPlot : public QWidget, private Ui::PlotObject {
void Update2dXYRange();
static const int NUM_PEDESTAL_FRAMES = 20;
- multiSlsDetector *myDet;
+ sls::Detector *det;
slsDetectorDefs::detectorType detType;
SlsQt1DPlot *plot1d{nullptr};
diff --git a/slsDetectorGui/include/qTabAdvanced.h b/slsDetectorGui/include/qTabAdvanced.h
index 62986e7b9..8e83f9a11 100755
--- a/slsDetectorGui/include/qTabAdvanced.h
+++ b/slsDetectorGui/include/qTabAdvanced.h
@@ -2,20 +2,20 @@
#include "ui_form_tab_advanced.h"
-class multiSlsDetector;
+#include "Detector.h"
class qTabAdvanced:public QWidget, private Ui::TabAdvancedObject{
Q_OBJECT
public:
- qTabAdvanced(QWidget *parent, multiSlsDetector* detector);
+ qTabAdvanced(QWidget *parent, sls::Detector* detector);
~qTabAdvanced();
public slots:
void Refresh();
private slots:
- void SetDetector(int index);
+ void SetDetector();
void SetControlPort(int port);
void SetStopPort(int port);
void SetDetectorUDPIP();
@@ -60,7 +60,7 @@ private:
void GetSubExposureTime();
void GetSubDeadTime();
- multiSlsDetector *myDet;
+ sls::Detector *det;
};
diff --git a/slsDetectorGui/include/qTabDataOutput.h b/slsDetectorGui/include/qTabDataOutput.h
index bed06bb6e..50513711d 100755
--- a/slsDetectorGui/include/qTabDataOutput.h
+++ b/slsDetectorGui/include/qTabDataOutput.h
@@ -2,13 +2,13 @@
#include "ui_form_tab_dataoutput.h"
-class multiSlsDetector;
+#include "Detector.h"
class qTabDataOutput:public QWidget, private Ui::TabDataOutputObject{
Q_OBJECT
public:
- qTabDataOutput(QWidget *parent, multiSlsDetector* detector);
+ qTabDataOutput(QWidget *parent, sls::Detector* detector);
~qTabDataOutput();
void Refresh();
@@ -38,7 +38,7 @@ public:
void GetSpeed();
void GetFlags();
- multiSlsDetector *myDet;
+ sls::Detector *det;
// Button group for radiobuttons for rate
QButtonGroup *btnGroupRate;
// enum for the Eiger clock divider
@@ -48,12 +48,7 @@ public:
QUARTERSPEED,
NUMBEROFSPEEDS
};
- // enum for the Eiger readout flags1
- enum {
- CONTINUOUS,
- STOREINRAM
- };
- // enum for the Eiger readout flags2
+ // enum for the Eiger Parallel flag
enum {
PARALLEL,
NONPARALLEL
diff --git a/slsDetectorGui/include/qTabDebugging.h b/slsDetectorGui/include/qTabDebugging.h
index bca729805..df32cd261 100755
--- a/slsDetectorGui/include/qTabDebugging.h
+++ b/slsDetectorGui/include/qTabDebugging.h
@@ -2,7 +2,7 @@
#include "ui_form_tab_debugging.h"
-class multiSlsDetector;
+#include "Detector.h"
class QTreeWidget;
class QTreeWidgetItem;
@@ -11,7 +11,7 @@ class qTabDebugging:public QWidget, private Ui::TabDebuggingObject{
Q_OBJECT
public:
- qTabDebugging(QWidget *parent, multiSlsDetector* detector);
+ qTabDebugging(QWidget *parent, sls::Detector* detector);
~qTabDebugging();
void Refresh();
@@ -26,7 +26,7 @@ private:
void Initialization();
void PopulateDetectors();
- multiSlsDetector *myDet;
+ sls::Detector *det;
/** Tree Widget displaying the detectors, modules */
QTreeWidget *treeDet;
QLabel *lblDetectorHostname;
diff --git a/slsDetectorGui/include/qTabDeveloper.h b/slsDetectorGui/include/qTabDeveloper.h
index 75faa748f..211469978 100755
--- a/slsDetectorGui/include/qTabDeveloper.h
+++ b/slsDetectorGui/include/qTabDeveloper.h
@@ -3,7 +3,7 @@
#include "ui_form_tab_developer.h"
class qDacWidget;
-class multiSlsDetector;
+#include "Detector.h"
#include "sls_detector_defs.h"
#include
@@ -13,7 +13,7 @@ class qTabDeveloper:public QWidget, private Ui::TabDeveloperObject {
Q_OBJECT
public:
- qTabDeveloper(QWidget *parent, multiSlsDetector* detector);
+ qTabDeveloper(QWidget *parent, sls::Detector* detector);
~qTabDeveloper();
public slots:
@@ -29,7 +29,7 @@ private:
void GetHighVoltage();
slsDetectorDefs::dacIndex getSLSIndex(slsDetectorDefs::detectorType detType, int index);
- multiSlsDetector *myDet;
+ sls::Detector *det;
std::vector dacWidgets;
std::vector adcWidgets;
diff --git a/slsDetectorGui/include/qTabMeasurement.h b/slsDetectorGui/include/qTabMeasurement.h
index 7da464d2e..e82da6fd9 100755
--- a/slsDetectorGui/include/qTabMeasurement.h
+++ b/slsDetectorGui/include/qTabMeasurement.h
@@ -4,7 +4,7 @@
class qDrawPlot;
-class multiSlsDetector;
+#include "Detector.h"
class QStandardItemModel;
@@ -12,7 +12,7 @@ class qTabMeasurement:public QWidget, private Ui::TabMeasurementObject{
Q_OBJECT
public:
- qTabMeasurement(QWidget *parent, multiSlsDetector* detector, qDrawPlot* plot);
+ qTabMeasurement(QWidget *parent, sls::Detector* detector, qDrawPlot* p);
~qTabMeasurement();
void Refresh();
@@ -66,8 +66,8 @@ signals:
void EnableTabsSignal(bool);
void FileNameChangedSignal(QString);
private:
- multiSlsDetector *myDet;
- qDrawPlot *myPlot;
+ sls::Detector *det;
+ qDrawPlot *plot;
// enum for the timing mode
enum{
AUTO,
diff --git a/slsDetectorGui/include/qTabPlot.h b/slsDetectorGui/include/qTabPlot.h
index c332812ba..4281760f5 100755
--- a/slsDetectorGui/include/qTabPlot.h
+++ b/slsDetectorGui/include/qTabPlot.h
@@ -4,7 +4,7 @@
class qDrawPlot;
-class multiSlsDetector;
+#include "Detector.h"
class QButtonGroup;
@@ -12,7 +12,7 @@ class qTabPlot:public QWidget, private Ui::TabPlotObject{
Q_OBJECT
public:
- qTabPlot(QWidget *parent,multiSlsDetector* detector, qDrawPlot* plot);
+ qTabPlot(QWidget *parent, sls::Detector* detector, qDrawPlot* p);
~qTabPlot();
void SetScanArgument();
void Refresh();
@@ -45,8 +45,8 @@ private:
void SetXYRange();
void MaintainAspectRatio(int dimension);
- multiSlsDetector *myDet;
- qDrawPlot *myPlot;
+ sls::Detector *det;
+ qDrawPlot *plot;
bool is1d;
QButtonGroup *btnGroupPlotType{nullptr};
diff --git a/slsDetectorGui/include/qTabSettings.h b/slsDetectorGui/include/qTabSettings.h
index 7e981e3ea..a8076eda0 100755
--- a/slsDetectorGui/include/qTabSettings.h
+++ b/slsDetectorGui/include/qTabSettings.h
@@ -2,13 +2,13 @@
#include "ui_form_tab_settings.h"
-class multiSlsDetector;
+#include "Detector.h"
class qTabSettings: public QWidget, private Ui::TabSettingsObject{
Q_OBJECT
public:
- qTabSettings(QWidget *parent, multiSlsDetector* detector);
+ qTabSettings(QWidget *parent, sls::Detector* detector);
~qTabSettings();
void Refresh();
@@ -26,7 +26,7 @@ private:
void GetDynamicRange();
void GetThresholdEnergy();
- multiSlsDetector *myDet;
+ sls::Detector *det;
enum {
STANDARD,
FAST,
diff --git a/slsDetectorGui/src/qDacWidget.cpp b/slsDetectorGui/src/qDacWidget.cpp
index f8a694387..03120f8ac 100755
--- a/slsDetectorGui/src/qDacWidget.cpp
+++ b/slsDetectorGui/src/qDacWidget.cpp
@@ -3,8 +3,8 @@
#include
-qDacWidget::qDacWidget(QWidget *parent, multiSlsDetector *detector, bool d, std::string n, slsDetectorDefs::dacIndex i, bool t) :
- QWidget(parent), myDet(detector), isDac(d), index(i), isMillideg(t) {
+qDacWidget::qDacWidget(QWidget *parent, sls::Detector *detector, bool d, std::string n, slsDetectorDefs::dacIndex i, bool t) :
+ QWidget(parent), det(detector), isDac(d), index(i), isMillideg(t) {
setupUi(this);
SetupWidgetWindow(n);
}
@@ -43,10 +43,10 @@ void qDacWidget::GetDac() {
disconnect(spinDac, SIGNAL(editingFinished()), this, SLOT(SetDac()));
try {
// dac units
- auto retval = myDet->setDAC(-1, index, 0, detectorIndex);
+ auto retval = det->getDAC(index, 0, {detectorIndex}).squash(-1);
spinDac->setValue(retval);
// mv
- retval = myDet->setDAC(-1, index, 1, detectorIndex);
+ retval = det->getDAC(index, 1, {detectorIndex}).squash(-1);
lblDacmV->setText(QString("%1mV").arg(retval -10));
} CATCH_DISPLAY(std::string("Could not get dac ") + std::to_string(index), "qDacWidget::GetDac")
@@ -59,7 +59,7 @@ void qDacWidget::SetDac() {
FILE_LOG(logINFO) << "Setting dac:" << lblDac->text().toAscii().data() << " : " << val;
try {
- myDet->setDAC(val, index, 0, detectorIndex);
+ det->setDAC(val, index, 0, {detectorIndex});
} CATCH_DISPLAY (std::string("Could not set dac ") + std::to_string(index), "qDacWidget::SetDac")
// update mV anyway
@@ -70,7 +70,7 @@ void qDacWidget::GetAdc() {
FILE_LOG(logDEBUG) << "Getting ADC " << index;
try {
- auto retval = myDet->getADC(index, detectorIndex);
+ auto retval = det->getTemperature(index, {detectorIndex}).squash(-1);
if (retval == -1 && detectorIndex == -1) {
spinDac->setValue(-1);
} else {
diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp
index 15fd0681b..1252fbca0 100755
--- a/slsDetectorGui/src/qDetectorMain.cpp
+++ b/slsDetectorGui/src/qDetectorMain.cpp
@@ -115,51 +115,28 @@ qDetectorMain::qDetectorMain(int argc, char **argv, QApplication *app,
SetUpWidgetWindow();
}
-qDetectorMain::~qDetectorMain() {
- if (myDet)
- delete myDet;
- if (myPlot)
- delete myPlot;
- if (tabs)
- delete tabs;
- if (tabMeasurement)
- delete tabMeasurement;
- if (tabDataOutput)
- delete tabDataOutput;
- if (tabPlot)
- delete tabPlot;
- if (tabSettings)
- delete tabSettings;
- if (tabAdvanced)
- delete tabAdvanced;
- if (tabDebugging)
- delete tabDebugging;
- if (tabDeveloper)
- delete tabDeveloper;
- if (tabMessages)
- delete tabMessages;
-}
+qDetectorMain::~qDetectorMain() {}
void qDetectorMain::SetUpWidgetWindow() {
setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
// plot setup
- myPlot = new qDrawPlot(dockWidgetPlot, myDet);
+ plot = sls::make_unique(dockWidgetPlot, det.get());
FILE_LOG(logDEBUG) << "DockPlot ready";
- dockWidgetPlot->setWidget(myPlot);
+ dockWidgetPlot->setWidget(plot.get());
// tabs setup
- tabs = new MyTabWidget(this);
- layoutTabs->addWidget(tabs);
+ tabs = sls::make_unique(this);
+ layoutTabs->addWidget(tabs.get());
// creating all the other tab widgets
- tabMeasurement = new qTabMeasurement(this, myDet, myPlot);
- tabDataOutput = new qTabDataOutput(this, myDet);
- tabPlot = new qTabPlot(this, myDet, myPlot);
- tabSettings = new qTabSettings(this, myDet);
- tabAdvanced = new qTabAdvanced(this, myDet);
- tabDebugging = new qTabDebugging(this, myDet);
- tabDeveloper = new qTabDeveloper(this, myDet);
+ tabMeasurement = sls::make_unique(this, det.get(), plot.get());
+ tabDataOutput = sls::make_unique(this, det.get());
+ tabPlot = sls::make_unique(this, det.get(), plot.get());
+ tabSettings = sls::make_unique(this, det.get());
+ tabAdvanced = sls::make_unique(this, det.get());
+ tabDebugging = sls::make_unique(this, det.get());
+ tabDeveloper = sls::make_unique(this, det.get());
// creating the scroll area widgets for the tabs
QScrollArea *scroll[NumberOfTabs];
@@ -168,13 +145,13 @@ void qDetectorMain::SetUpWidgetWindow() {
scroll[i]->setFrameShape(QFrame::NoFrame);
}
// setting the tab widgets to the scrollareas
- scroll[MEASUREMENT]->setWidget(tabMeasurement);
- scroll[DATAOUTPUT]->setWidget(tabDataOutput);
- scroll[PLOT]->setWidget(tabPlot);
- scroll[SETTINGS]->setWidget(tabSettings);
- scroll[ADVANCED]->setWidget(tabAdvanced);
- scroll[DEBUGGING]->setWidget(tabDebugging);
- scroll[DEVELOPER]->setWidget(tabDeveloper);
+ scroll[MEASUREMENT]->setWidget(tabMeasurement.get());
+ scroll[DATAOUTPUT]->setWidget(tabDataOutput.get());
+ scroll[PLOT]->setWidget(tabPlot.get());
+ scroll[SETTINGS]->setWidget(tabSettings.get());
+ scroll[ADVANCED]->setWidget(tabAdvanced.get());
+ scroll[DEBUGGING]->setWidget(tabDebugging.get());
+ scroll[DEVELOPER]->setWidget(tabDeveloper.get());
// inserting all the tabs
tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT], "Measurement");
tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT], "Data Output");
@@ -184,17 +161,17 @@ void qDetectorMain::SetUpWidgetWindow() {
tabs->insertTab(DEBUGGING, scroll[DEBUGGING], "Debugging");
tabs->insertTab(DEVELOPER, scroll[DEVELOPER], "Developer");
// no scroll buttons this way
- tabs->insertTab(MESSAGES, tabMessages, "Terminal");
+ tabs->insertTab(MESSAGES, tabMessages.get(), "Terminal");
// swap tabs so that messages is last tab
- tabs->tabBar()->moveTab(tabs->indexOf(tabMeasurement), MEASUREMENT);
- tabs->tabBar()->moveTab(tabs->indexOf(tabSettings), SETTINGS);
- tabs->tabBar()->moveTab(tabs->indexOf(tabDataOutput), DATAOUTPUT);
- tabs->tabBar()->moveTab(tabs->indexOf(tabPlot), PLOT);
- tabs->tabBar()->moveTab(tabs->indexOf(tabAdvanced), ADVANCED);
- tabs->tabBar()->moveTab(tabs->indexOf(tabDebugging), DEBUGGING);
- tabs->tabBar()->moveTab(tabs->indexOf(tabDeveloper), DEVELOPER);
- tabs->tabBar()->moveTab(tabs->indexOf(tabMessages), MESSAGES);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabMeasurement.get()), MEASUREMENT);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabSettings.get()), SETTINGS);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabDataOutput.get()), DATAOUTPUT);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabPlot.get()), PLOT);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabAdvanced.get()), ADVANCED);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabDebugging.get()), DEBUGGING);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabDeveloper.get()), DEVELOPER);
+ tabs->tabBar()->moveTab(tabs->indexOf(tabMessages.get()), MESSAGES);
tabs->setCurrentIndex(MEASUREMENT);
// other tab properties
@@ -213,8 +190,7 @@ void qDetectorMain::SetUpWidgetWindow() {
tabs->setTabEnabled(DEBUGGING, false);
tabs->setTabEnabled(ADVANCED, false);
tabs->setTabEnabled(DEVELOPER, isDeveloper);
- actionLoadTrimbits->setVisible(false);
- actionSaveTrimbits->setVisible(false);
+ actionTrimbitsLoad->setVisible(false);
dockWidgetPlot->setFloating(false);
dockWidgetPlot->setFeatures(QDockWidget::NoDockWidgetFeatures);
@@ -232,40 +208,37 @@ void qDetectorMain::SetUpWidgetWindow() {
void qDetectorMain::SetUpDetector(const std::string fName, int multiID) {
// instantiate detector and set window title
- myDet = new multiSlsDetector(multiID);
+ det = sls::make_unique(multiID);
// create messages tab to capture config file loading logs
- tabMessages = new qTabMessages(this);
+ tabMessages = sls::make_unique(this);
// loads the config file at startup
if (!fName.empty())
LoadConfigFile(fName);
// validate detector type (for GUI) and update menu
- detType = myDet->getDetectorTypeAsEnum();
+ detType = det->getDetectorType().tsquash("Different detector type for all modules.");
+ actionTrimbitsLoad->setEnabled(false);
switch (detType) {
case slsDetectorDefs::EIGER:
+ actionTrimbitsLoad->setEnabled(true);
break;
case slsDetectorDefs::GOTTHARD:
case slsDetectorDefs::JUNGFRAU:
- actionLoadTrimbits->setText("Load Settings");
- actionSaveTrimbits->setText("Save Settings");
- break;
case slsDetectorDefs::MOENCH:
- actionLoadTrimbits->setEnabled(false);
- actionSaveTrimbits->setEnabled(false);
- break;
+ break;
default:
std::string errorMess =
- myDet->getHostname() + std::string(" has ") +
- myDet->getDetectorTypeAsString() + std::string(" detector type (") +
- std::to_string(detType) + std::string("). Exiting GUI.");
+ sls::ToString(det->getHostname(), ',') + " has " +
+ slsDetectorDefs::detectorTypeToString(det->getDetectorType().squash()) + " detector type (" +
+ std::to_string(detType) + "). Exiting GUI.";
throw sls::RuntimeError(errorMess.c_str());
}
std::string title =
- "SLS Detector GUI : " + myDet->getDetectorTypeAsString() + " - " +
- myDet->getHostname();
+ "SLS Detector GUI : " + slsDetectorDefs::detectorTypeToString(det->getDetectorType().squash()) + " - " +
+ sls::ToString(det->getHostname(), ',');
FILE_LOG(logINFO) << title;
setWindowTitle(QString(title.c_str()));
}
@@ -274,16 +247,16 @@ void qDetectorMain::Initialization() {
// Dockable Plot
connect(dockWidgetPlot, SIGNAL(topLevelChanged(bool)), this, SLOT(ResizeMainWindow(bool)));
// tabs
- connect(tabs,SIGNAL(currentChanged(int)), this, SLOT(Refresh(int)));//( QWidget*)));
+ connect(tabs.get(),SIGNAL(currentChanged(int)), this, SLOT(Refresh(int)));//( QWidget*)));
// Measurement tab
- connect(tabMeasurement, SIGNAL(EnableTabsSignal(bool)), this, SLOT(EnableTabs(bool)));
- connect(tabMeasurement, SIGNAL(FileNameChangedSignal(QString)), myPlot, SLOT(SetSaveFileName(QString)));
+ connect(tabMeasurement.get(), SIGNAL(EnableTabsSignal(bool)), this, SLOT(EnableTabs(bool)));
+ connect(tabMeasurement.get(), SIGNAL(FileNameChangedSignal(QString)), plot.get(), SLOT(SetSaveFileName(QString)));
// Plot tab
- connect(tabPlot, SIGNAL(DisableZoomSignal(bool)), this, SLOT(SetZoomToolTip(bool)));
+ connect(tabPlot.get(), SIGNAL(DisableZoomSignal(bool)), this, SLOT(SetZoomToolTip(bool)));
// Plotting
- connect(myPlot, SIGNAL(AcquireFinishedSignal()), tabMeasurement, SLOT(AcquireFinished()));
- connect(myPlot, SIGNAL(AbortSignal()), tabMeasurement, SLOT(AbortAcquire()));
+ connect(plot.get(), SIGNAL(AcquireFinishedSignal()), tabMeasurement.get(), SLOT(AcquireFinished()));
+ connect(plot.get(), SIGNAL(AbortSignal()), tabMeasurement.get(), SLOT(AbortAcquire()));
// menubar
// Modes Menu
@@ -324,7 +297,7 @@ void qDetectorMain::LoadConfigFile(const std::string fName) {
FILE_LOG(logWARNING) << "File not recognized";
} else {
try {
- myDet->readConfigurationFile(fName);
+ det->loadConfig(fName);
} CATCH_DISPLAY ("Could not load config file.", "qDetectorMain::LoadConfigFile")
}
}
@@ -346,8 +319,7 @@ void qDetectorMain::EnableModes(QAction *action) {
enable = actionExpert->isChecked();
tabs->setTabEnabled(ADVANCED, enable);
- actionLoadTrimbits->setVisible(enable && detType != slsDetectorDefs::MOENCH);
- actionSaveTrimbits->setVisible(enable && detType != slsDetectorDefs::MOENCH);
+ actionTrimbitsLoad->setVisible(enable && detType == slsDetectorDefs::EIGER);
FILE_LOG(logINFO) << "Expert Mode: "
<< slsDetectorDefs::stringEnable(enable);
}
@@ -369,53 +341,17 @@ void qDetectorMain::EnableModes(QAction *action) {
void qDetectorMain::ExecuteUtilities(QAction *action) {
bool refreshTabs = false;
try {
- if (action == actionOpenSetup) {
- FILE_LOG(logDEBUG) << "Loading Setup";
- QString fName = QString(myDet->getFilePath().c_str());
- fName = QFileDialog::getOpenFileName(
- this, tr("Load Detector Setup"), fName,
- tr("Detector Setup files (*.det);;All Files(*)"));
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- refreshTabs = true;
- myDet->retrieveDetectorSetup(
- std::string(fName.toAscii().constData()));
- qDefs::Message(
- qDefs::INFORMATION,
- "The Setup Parameters have been loaded successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Setup Parameters loaded successfully";
- }
- }
- else if (action == actionSaveSetup) {
- FILE_LOG(logDEBUG) << "Saving Setup";
- QString fName = QString(myDet->getFilePath().c_str());
- fName = QFileDialog::getSaveFileName(
- this, tr("Save Current Detector Setup"), fName,
- tr("Detector Setup files (*.det);;All Files(*) "));
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- myDet->dumpDetectorSetup(
- std::string(fName.toAscii().constData()));
- qDefs::Message(
- qDefs::INFORMATION,
- "The Setup Parameters have been saved successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Setup Parameters saved successfully";
- }
- }
-
- else if (action == actionOpenConfiguration) {
+ if (action == actionConfigurationLoad) {
FILE_LOG(logDEBUG) << "Loading Configuration";
- QString fName = QString(myDet->getFilePath().c_str());
+ QString fName = QString(det->getFilePath().squash("/tmp/").c_str());
fName = QFileDialog::getOpenFileName(
this, tr("Load Detector Configuration"), fName,
tr("Configuration files (*.config);;All Files(*)"));
// Gets called when cancelled as well
if (!fName.isEmpty()) {
refreshTabs = true;
- myDet->readConfigurationFile(
+ det->loadConfig(
std::string(fName.toAscii().constData()));
qDefs::Message(qDefs::INFORMATION,
"The Configuration Parameters have been "
@@ -426,107 +362,30 @@ void qDetectorMain::ExecuteUtilities(QAction *action) {
}
}
- else if (action == actionSaveConfiguration) {
- FILE_LOG(logDEBUG) << "Saving Configuration";
- QString fName = QString(myDet->getFilePath().c_str());
- fName = QFileDialog::getSaveFileName(
- this, tr("Save Current Detector Configuration"), fName,
- tr("Configuration files (*.config) ;;All Files(*)"));
+ else if (action == actionTrimbitsLoad) {
+ QString fName = QString((det->getSettingsDir().squash("/tmp/")).c_str());
+ FILE_LOG(logDEBUG) << "Loading Trimbits";
+ // so that even nonexisting files can be selected
+ QFileDialog *fileDialog = new QFileDialog(
+ this, tr("Load Detector Trimbits"), fName,
+ tr("Trimbit files (*.trim noise.sn*);;All Files(*)"));
+ fileDialog->setFileMode(QFileDialog::AnyFile);
+ if (fileDialog->exec() == QDialog::Accepted)
+ fName = fileDialog->selectedFiles()[0];
+
// Gets called when cancelled as well
if (!fName.isEmpty()) {
- myDet->writeConfigurationFile(
+ det->loadTrimbits(
std::string(fName.toAscii().constData()));
- qDefs::Message(qDefs::INFORMATION,
- "The Configuration Parameters have been saved "
- "successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO)
- << "Configuration Parameters saved successfully";
+ qDefs::Message(
+ qDefs::INFORMATION,
+ "The Trimbits have been loaded successfully.",
+ "qDetectorMain::ExecuteUtilities");
+ FILE_LOG(logINFO) << "Trimbits loaded successfully";
}
+
}
- else if (action == actionLoadTrimbits) {
- QString fName = QString((myDet->getSettingsDir()).c_str());
- // gotthard
- if (actionLoadTrimbits->text().contains("Settings")) {
- FILE_LOG(logDEBUG) << "Loading Settings";
- fName = QFileDialog::getOpenFileName(
- this, tr("Load Detector Settings"), fName,
- tr("Settings files (*.settings settings.sn*);;All "
- "Files(*)"));
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- myDet->loadSettingsFile(
- std::string(fName.toAscii().constData()), -1);
- qDefs::Message(
- qDefs::INFORMATION,
- "The Settings have been loaded successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Settings loaded successfully";
- }
-
- } // mythen and eiger
- else {
- FILE_LOG(logDEBUG) << "Loading Trimbits";
- // so that even nonexisting files can be selected
- QFileDialog *fileDialog = new QFileDialog(
- this, tr("Load Detector Trimbits"), fName,
- tr("Trimbit files (*.trim noise.sn*);;All Files(*)"));
- fileDialog->setFileMode(QFileDialog::AnyFile);
- if (fileDialog->exec() == QDialog::Accepted)
- fName = fileDialog->selectedFiles()[0];
-
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- myDet->loadSettingsFile(
- std::string(fName.toAscii().constData()), -1);
- qDefs::Message(
- qDefs::INFORMATION,
- "The Trimbits have been loaded successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Trimbits loaded successfully";
- }
- }
- }
-
- else if (action == actionSaveTrimbits) {
- // gotthard
- if (actionLoadTrimbits->text().contains("Settings")) {
- FILE_LOG(logDEBUG) << "Saving Settings";
- // different output directory so as not to overwrite
- QString fName = QString((myDet->getSettingsDir()).c_str());
- fName = QFileDialog::getSaveFileName(
- this, tr("Save Current Detector Settings"), fName,
- tr("Settings files (*.settings settings.sn*);;All "
- "Files(*) "));
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- myDet->saveSettingsFile(
- std::string(fName.toAscii().constData()), -1);
- qDefs::Message(qDefs::INFORMATION,
- "The Settings have been saved successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Settings saved successfully";
- }
- } // mythen and eiger
- else {
- FILE_LOG(logDEBUG) << "Saving Trimbits";
- // different output directory so as not to overwrite
- QString fName = QString((myDet->getSettingsDir()).c_str());
- fName = QFileDialog::getSaveFileName(
- this, tr("Save Current Detector Trimbits"), fName,
- tr("Trimbit files (*.trim noise.sn*) ;;All Files(*)"));
- // Gets called when cancelled as well
- if (!fName.isEmpty()) {
- myDet->saveSettingsFile(
- std::string(fName.toAscii().constData()), -1);
- qDefs::Message(qDefs::INFORMATION,
- "The Trimbits have been saved successfully.",
- "qDetectorMain::ExecuteUtilities");
- FILE_LOG(logINFO) << "Trimbits saved successfully";
- }
- }
- }
} CATCH_DISPLAY ("Could not execute utilities.", "qDetectorMain::ExecuteUtilities")
Refresh(tabs->currentIndex());
@@ -552,7 +411,7 @@ void qDetectorMain::ExecuteHelp(QAction *action) {
std::string guiVersion = std::to_string(APIGUI);
std::string clientVersion = "unknown";
try {
- clientVersion = std::to_string(myDet->getId(slsDetectorDefs::THIS_SOFTWARE_VERSION));
+ clientVersion = std::to_string(det->getClientVersion());
} CATCH_DISPLAY ("Could not get client version.", "qDetectorMain::ExecuteHelp")
qDefs::Message(qDefs::INFORMATION,
@@ -660,10 +519,7 @@ void qDetectorMain::EnableTabs(bool enable) {
tabs->setTabEnabled(MESSAGES, enable);
// actions check
- actionOpenSetup->setEnabled(enable);
- actionSaveSetup->setEnabled(enable);
- actionOpenConfiguration->setEnabled(enable);
- actionSaveConfiguration->setEnabled(enable);
+ actionConfigurationLoad->setEnabled(enable);
actionDebug->setEnabled(enable);
actionExpert->setEnabled(enable);
@@ -673,8 +529,7 @@ void qDetectorMain::EnableTabs(bool enable) {
// expert
bool expertTab = enable && (actionExpert->isChecked());
tabs->setTabEnabled(ADVANCED, expertTab);
- actionLoadTrimbits->setVisible(expertTab && detType != slsDetectorDefs::MOENCH);
- actionSaveTrimbits->setVisible(expertTab && detType != slsDetectorDefs::MOENCH);
+ actionTrimbitsLoad->setVisible(expertTab && detType == slsDetectorDefs::EIGER);
// moved to here, so that its all in order, instead of signals and different
// threads
@@ -690,7 +545,7 @@ void qDetectorMain::EnableTabs(bool enable) {
tabDeveloper->Refresh();
tabPlot->Refresh();
- myPlot->StartAcquisition();
+ plot->StartAcquisition();
} else { // to enable scan box
tabPlot->Refresh();
// to start adc timer
diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp
index b6b6606b9..9fd26c670 100755
--- a/slsDetectorGui/src/qDrawPlot.cpp
+++ b/slsDetectorGui/src/qDrawPlot.cpp
@@ -5,13 +5,15 @@
#include "detectorData.h"
#include "qCloneWidget.h"
+#include "detectorData.h"
+
#include
#include
#include
#include
-qDrawPlot::qDrawPlot(QWidget *parent, multiSlsDetector *detector) : QWidget(parent), myDet(detector) {
+qDrawPlot::qDrawPlot(QWidget *parent, sls::Detector *detector) : QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logINFO) << "Plots ready";
@@ -48,12 +50,12 @@ qDrawPlot::~qDrawPlot() {
}
void qDrawPlot::SetupWidgetWindow() {
- detType = myDet->getDetectorTypeAsEnum();
+ detType = det->getDetectorType().squash();
// save
try {
- std::string temp = myDet->getFilePath();
+ std::string temp = det->getFilePath().squash("/tmp/");
fileSavePath = QString(temp.c_str());
- temp = myDet->getFileName();
+ temp = det->getFileNamePrefix().squash("xxx");
fileSaveName = QString(temp.c_str());
} catch (const std::exception &e) {
qDefs::ExceptionMessage("Could not get file path or file name.", e.what(), "qDrawPlot::SetupWidgetWindow");
@@ -63,7 +65,7 @@ void qDrawPlot::SetupWidgetWindow() {
SetupPlots();
SetDataCallBack(true);
- myDet->registerAcquisitionFinishedCallback(&(GetAcquisitionFinishedCallBack), this);
+ det->registerAcquisitionFinishedCallback(&(GetAcquisitionFinishedCallBack), this);
// future watcher to watch result of AcquireThread only because it uses signals/slots to handle acquire exception
acqResultWatcher = new QFutureWatcher();
@@ -79,23 +81,27 @@ void qDrawPlot::SetupPlots() {
setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
// default image size
- slsDetectorDefs::xy res = myDet->getNumberOfChannels();
+ slsDetectorDefs::xy res = det->getDetectorSize();
nPixelsX = res.x;
nPixelsY = res.y;
switch(detType) {
case slsDetectorDefs::MOENCH:
- npixelsy_jctb = (myDet->setTimer(slsDetectorDefs::ANALOG_SAMPLES, -1) * 2)/25;// for moench 03
- nPixelsX = npixelsx_jctb;
- nPixelsY = npixelsy_jctb;
+ try{
+ npixelsy_jctb = (det->getNumberOfAnalogSamples().tsquash("Inconsistent values for number of analog samples") * 2)/25;// for moench 03
+ nPixelsX = npixelsx_jctb;
+ nPixelsY = npixelsy_jctb;
+ } CATCH_DISPLAY ("Could not get number of analog samples.", "qDrawPlot::SetupPlots")
break;
case slsDetectorDefs::EIGER:
- if (myDet->getQuad()) {
- nPixelsX /= 2;
- nPixelsY *= 2;
- if (nPixelsX != nPixelsY) {
- --nPixelsX;
+ try{
+ if (det->getQuad().tsquash("Inconsistent values for quad type")) {
+ nPixelsX /= 2;
+ nPixelsY *= 2;
+ if (nPixelsX != nPixelsY) {
+ --nPixelsX;
+ }
}
- }
+ } CATCH_DISPLAY ("Could not get quad.", "qDrawPlot::SetupPlots")
break;
default:
break;
@@ -310,10 +316,10 @@ void qDrawPlot::SetDataCallBack(bool enable) {
FILE_LOG(logINFO) << "Setting data call back to " << std::boolalpha << enable << std::noboolalpha;
if (enable) {
isPlot = true;
- myDet->registerDataCallback(&(GetDataCallBack), this);
+ det->registerDataCallback(&(GetDataCallBack), this);
} else {
isPlot = false;
- myDet->registerDataCallback(nullptr, this);
+ det->registerDataCallback(nullptr, this);
}
}
@@ -527,25 +533,13 @@ void qDrawPlot::StartAcquisition() {
progress = 0;
currentFrame = 0;
boxPlot->setTitle("Old Plot");
- // check acquiring flag (from previous exit) or if running
- try{
- if (myDet->getAcquiringFlag()) {
- if (myDet->getRunStatus() != slsDetectorDefs::IDLE) {
- qDefs::Message(qDefs::WARNING, "Could not start acquisition as it is already in progress.\nClick start when finished.", "qDrawPlot::StartAcquisition");
- emit AbortSignal();
- return;
- } else {
- myDet->setAcquiringFlag(false);
- }
+ det->clearAcquiringFlag(); // (from previous exit) or if running
- }
- } CATCH_DISPLAY("Could not get detector stats.", "qDrawPlot::StartAcquisition");
-
// ensure data streaming in receiver (if plot enabled)
if (isPlot) {
try {
- if (myDet->enableDataStreamingFromReceiver() != 1) {
- myDet->enableDataStreamingFromReceiver(1);
+ if (!det->getRxZmqDataStream().squash(false)) {
+ det->setRxZmqDataStream(true);
}
} CATCH_DISPLAY("Could not enable data streaming in Receiver.", "qDrawPlot::StartAcquisition");
}
@@ -571,8 +565,7 @@ void qDrawPlot::AcquireFinished() {
FILE_LOG(logERROR) << "Acquisition Finished with an exception: " << mess;
qDefs::ExceptionMessage("Acquire unsuccessful.", mess, "qDrawPlot::AcquireFinished");
try{
- myDet->stopAcquisition();
- myDet->stopReceiver();
+ det->stopAcquisition();
} CATCH_DISPLAY("Could not stop acquisition and receiver.", "qDrawPlot::AcquireFinished");
emit AbortSignal();
}
@@ -582,7 +575,7 @@ void qDrawPlot::AcquireFinished() {
std::string qDrawPlot::AcquireThread() {
FILE_LOG(logDEBUG) << "Acquire Thread";
try {
- myDet->acquire();
+ det->acquire();
} catch (const std::exception &e) {
return std::string(e.what());
}
diff --git a/slsDetectorGui/src/qTabAdvanced.cpp b/slsDetectorGui/src/qTabAdvanced.cpp
index 811fd8217..4504dd41c 100755
--- a/slsDetectorGui/src/qTabAdvanced.cpp
+++ b/slsDetectorGui/src/qTabAdvanced.cpp
@@ -1,10 +1,11 @@
#include "qTabAdvanced.h"
#include "qDefs.h"
+#include "network_utils.h"
#include
-qTabAdvanced::qTabAdvanced(QWidget *parent, multiSlsDetector *detector)
- : QWidget(parent), myDet(detector) {
+qTabAdvanced::qTabAdvanced(QWidget *parent, sls::Detector *detector)
+ : QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "Advanced ready";
@@ -14,7 +15,7 @@ qTabAdvanced::~qTabAdvanced() {}
void qTabAdvanced::SetupWidgetWindow() {
// enabling according to det type
- switch (myDet->getDetectorTypeAsEnum()) {
+ switch (det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
tab_trimming->setEnabled(true);
lblSubExpTime->setEnabled(true);
@@ -55,7 +56,7 @@ void qTabAdvanced::Initialization() {
// network
connect(comboDetector, SIGNAL(currentIndexChanged(int)), this,
- SLOT(SetDetector(int)));
+ SLOT(SetDetector()));
connect(spinControlPort, SIGNAL(valueChanged(int)), this,
SLOT(SetControlPort(int)));
connect(spinStopPort, SIGNAL(valueChanged(int)), this,
@@ -109,20 +110,21 @@ void qTabAdvanced::Initialization() {
void qTabAdvanced::PopulateDetectors() {
FILE_LOG(logDEBUG) << "Populating detectors";
disconnect(comboDetector, SIGNAL(currentIndexChanged(int)), this,
- SLOT(SetDetector(int)));
+ SLOT(SetDetector()));
disconnect(comboReadout, SIGNAL(currentIndexChanged(int)), this, SLOT(GetROI()));
comboDetector->clear();
comboReadout->clear();
- for (unsigned int i = 0; i < myDet->size(); ++i) {
- comboDetector->addItem(QString(myDet->getHostname(i).c_str()));
- comboReadout->addItem(QString(myDet->getHostname(i).c_str()));
+ auto res = det->getHostname();
+ for (auto &it : res) {
+ comboDetector->addItem(QString(it.c_str()));
+ comboReadout->addItem(QString(it.c_str()));
}
comboDetector->setCurrentIndex(0);
comboReadout->setCurrentIndex(0);
connect(comboDetector, SIGNAL(currentIndexChanged(int)), this,
- SLOT(SetDetector(int)));
+ SLOT(SetDetector()));
connect(comboReadout, SIGNAL(currentIndexChanged(int)), this, SLOT(GetROI()));
}
@@ -132,7 +134,7 @@ void qTabAdvanced::GetControlPort() {
SLOT(SetControlPort(int)));
try {
- int retval = myDet->setControlPort(-1, comboDetector->currentIndex());
+ int retval = det->getControlPort({comboDetector->currentIndex()})[0];
spinControlPort->setValue(retval);
} CATCH_DISPLAY ("Could not get detector control port.", "qTabAdvanced::GetControlPort")
@@ -146,7 +148,7 @@ void qTabAdvanced::GetStopPort() {
SLOT(SetStopPort(int)));
try {
- int retval = myDet->setStopPort(-1, comboDetector->currentIndex());
+ int retval = det->getStopPort({comboDetector->currentIndex()})[0];
spinStopPort->setValue(retval);
} CATCH_DISPLAY ("Could not get detector stop port.", "qTabAdvanced::GetStopPort")
@@ -160,7 +162,7 @@ void qTabAdvanced::GetDetectorUDPIP() {
SLOT(SetDetectorUDPIP()));
try {
- auto retval = myDet->getDetectorIP(comboDetector->currentIndex());
+ auto retval = det->getSourceUDPIP({comboDetector->currentIndex()})[0].str();
dispDetectorUDPIP->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get detector UDP IP.", "qTabAdvanced::GetDetectorUDPIP")
@@ -174,7 +176,7 @@ void qTabAdvanced::GetDetectorUDPMAC() {
SLOT(SetDetectorUDPMAC()));
try {
- auto retval = myDet->getDetectorMAC(comboDetector->currentIndex());
+ auto retval = det->getSourceUDPMAC({comboDetector->currentIndex()})[0].str();
dispDetectorUDPMAC->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get detector UDP MAC.", "qTabAdvanced::GetDetectorUDPMAC")
@@ -189,7 +191,7 @@ void qTabAdvanced::GetCltZMQPort() {
try {
int retval =
- myDet->getClientStreamingPort(comboDetector->currentIndex());
+ det->getClientZmqPort({comboDetector->currentIndex()})[0];
spinZMQPort->setValue(retval);
} CATCH_DISPLAY ("Could not get client zmq port.", "qTabAdvanced::GetCltZMQPort")
@@ -203,7 +205,7 @@ void qTabAdvanced::GetCltZMQIP() {
try {
auto retval =
- myDet->getClientStreamingIP(comboDetector->currentIndex());
+ det->getClientZmqIp({comboDetector->currentIndex()})[0];
dispZMQIP->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get client zmq ip.", "qTabAdvanced::GetCltZMQIP")
@@ -216,7 +218,7 @@ void qTabAdvanced::GetRxrHostname() {
SLOT(SetRxrHostname()));
try {
- auto retval = myDet->getReceiverHostname(comboDetector->currentIndex());
+ auto retval = det->getRxHostname({comboDetector->currentIndex()})[0];
dispRxrHostname->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get receiver hostname.", "qTabAdvanced::GetRxrHostname")
@@ -230,7 +232,7 @@ void qTabAdvanced::GetRxrTCPPort() {
SLOT(SetRxrTCPPort(int)));
try {
- int retval = myDet->getReceiverPort(comboDetector->currentIndex());
+ int retval = det->getRxPort({comboDetector->currentIndex()})[0];
spinRxrTCPPort->setValue(retval);
} CATCH_DISPLAY ("Could not get receiver tcp port.", "qTabAdvanced::GetRxrTCPPort")
@@ -244,7 +246,7 @@ void qTabAdvanced::GetRxrUDPPort() {
SLOT(SetRxrUDPPort(int)));
try {
- int retval = myDet->getReceiverUDPPort(comboDetector->currentIndex());
+ int retval = det->getDestinationUDPPort({comboDetector->currentIndex()})[0];
spinRxrUDPPort->setValue(retval);
} CATCH_DISPLAY ("Could not get receiver udp port.", "qTabAdvanced::GetRxrUDPPort")
@@ -258,7 +260,7 @@ void qTabAdvanced::GetRxrUDPIP() {
SLOT(SetRxrUDPIP()));
try {
- auto retval = myDet->getReceiverUDPIP(comboDetector->currentIndex());
+ auto retval = det->getDestinationUDPIP({comboDetector->currentIndex()})[0].str();
dispRxrUDPIP->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get receiver udp ip.", "qTabAdvanced::GetRxrUDPIP")
@@ -271,7 +273,7 @@ void qTabAdvanced::GetRxrUDPMAC() {
SLOT(SetRxrUDPMAC()));
try {
- auto retval = myDet->getReceiverUDPMAC(comboDetector->currentIndex());
+ auto retval = det->getDestinationUDPMAC({comboDetector->currentIndex()})[0].str();
dispRxrUDPMAC->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get receiver udp mac.", "qTabAdvanced::GetRxrUDPMAC")
@@ -286,7 +288,7 @@ void qTabAdvanced::GetRxrZMQPort() {
try {
int retval =
- myDet->getReceiverStreamingPort(comboDetector->currentIndex());
+ det->getRxZmqPort({comboDetector->currentIndex()})[0];
spinRxrZMQPort->setValue(retval);
} CATCH_DISPLAY ("Could not get receiver zmq port.", "qTabAdvanced::GetRxrZMQPort")
@@ -301,14 +303,14 @@ void qTabAdvanced::GetRxrZMQIP() {
try {
auto retval =
- myDet->getReceiverStreamingIP(comboDetector->currentIndex());
+ det->getRxZmqIP({comboDetector->currentIndex()})[0];
dispRxrZMQIP->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get receiver zmq ip.", "qTabAdvanced::GetRxrZMQIP")
connect(dispRxrZMQIP, SIGNAL(editingFinished()), this, SLOT(SetRxrZMQIP()));
}
-void qTabAdvanced::SetDetector(int index) {
+void qTabAdvanced::SetDetector() {
FILE_LOG(logDEBUG) << "Set Detector: "
<< comboDetector->currentText().toAscii().data();
@@ -326,13 +328,13 @@ void qTabAdvanced::SetDetector(int index) {
GetRxrZMQPort();
GetRxrZMQIP();
- FILE_LOG(logDEBUG) << myDet->printReceiverConfiguration();
+ FILE_LOG(logDEBUG) << det->printRxConfiguration();
}
void qTabAdvanced::SetControlPort(int port) {
FILE_LOG(logINFO) << "Setting Control Port:" << port;
try {
- myDet->setControlPort(port, comboDetector->currentIndex());
+ det->setControlPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE("Could not set control port.", "qTabAdvanced::SetControlPort",
this, &qTabAdvanced::GetControlPort)
}
@@ -340,7 +342,7 @@ void qTabAdvanced::SetControlPort(int port) {
void qTabAdvanced::SetStopPort(int port) {
FILE_LOG(logINFO) << "Setting Stop Port:" << port;
try {
- myDet->setStopPort(port, comboDetector->currentIndex());
+ det->setStopPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set stop port.", "qTabAdvanced::SetStopPort", this,
&qTabAdvanced::GetStopPort)
}
@@ -349,7 +351,7 @@ void qTabAdvanced::SetDetectorUDPIP() {
std::string s = dispDetectorUDPIP->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Detector UDP IP:" << s;
try {
- myDet->setDetectorIP(s, comboDetector->currentIndex());
+ det->setSourceUDPIP(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Detector UDP IP.",
"qTabAdvanced::SetDetectorUDPIP", this,
&qTabAdvanced::GetDetectorUDPIP)
@@ -359,7 +361,7 @@ void qTabAdvanced::SetDetectorUDPMAC() {
std::string s = dispDetectorUDPMAC->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Detector UDP MAC:" << s;
try {
- myDet->setDetectorMAC(s, comboDetector->currentIndex());
+ det->setSourceUDPMAC(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Detector UDP MAC.",
"qTabAdvanced::SetDetectorUDPMAC", this,
&qTabAdvanced::GetDetectorUDPMAC)
@@ -368,8 +370,7 @@ void qTabAdvanced::SetDetectorUDPMAC() {
void qTabAdvanced::SetCltZMQPort(int port) {
FILE_LOG(logINFO) << "Setting Client ZMQ Port:" << port;
try {
- myDet->setClientDataStreamingInPort(port,
- comboDetector->currentIndex());
+ det->setClientZmqPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Client ZMQ port.",
"qTabAdvanced::SetCltZMQPort", this,
&qTabAdvanced::GetCltZMQPort)
@@ -379,7 +380,7 @@ void qTabAdvanced::SetCltZMQIP() {
std::string s = dispZMQIP->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Client ZMQ IP:" << s;
try {
- myDet->setClientDataStreamingInIP(s, comboDetector->currentIndex());
+ det->setClientZmqIp(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Client ZMQ IP.",
"qTabAdvanced::SetCltZMQIP", this,
&qTabAdvanced::GetCltZMQIP)
@@ -389,19 +390,19 @@ void qTabAdvanced::SetRxrHostname() {
std::string s = dispZMQIP->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Receiver Hostname:" << s;
try {
- myDet->setReceiverHostname(s, comboDetector->currentIndex());
+ det->setRxHostname(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Client ZMQ IP.",
"qTabAdvanced::SetRxrHostname", this,
&qTabAdvanced::GetRxrHostname)
// update all network widgets (receiver mainly)
- SetDetector(comboDetector->currentIndex());
+ SetDetector();
}
void qTabAdvanced::SetRxrTCPPort(int port) {
FILE_LOG(logINFO) << "Setting Receiver TCP Port:" << port;
try {
- myDet->setReceiverPort(port, comboDetector->currentIndex());
+ det->setRxPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver TCP port.",
"qTabAdvanced::SetRxrTCPPort", this,
&qTabAdvanced::GetRxrTCPPort)
@@ -410,7 +411,7 @@ void qTabAdvanced::SetRxrTCPPort(int port) {
void qTabAdvanced::SetRxrUDPPort(int port) {
FILE_LOG(logINFO) << "Setting Receiver UDP Port:" << port;
try {
- myDet->setReceiverUDPPort(port, comboDetector->currentIndex());
+ det->setRxPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver UDP port.",
"qTabAdvanced::SetRxrUDPPort", this,
&qTabAdvanced::GetRxrUDPPort)
@@ -420,7 +421,7 @@ void qTabAdvanced::SetRxrUDPIP() {
std::string s = dispRxrUDPIP->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Receiver UDP IP:" << s;
try {
- myDet->setReceiverUDPIP(s, comboDetector->currentIndex());
+ det->setDestinationUDPIP(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver UDP IP.",
"qTabAdvanced::SetRxrUDPIP", this,
&qTabAdvanced::GetRxrUDPIP)
@@ -430,7 +431,7 @@ void qTabAdvanced::SetRxrUDPMAC() {
std::string s = dispRxrUDPMAC->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Receiver UDP MAC:" << s;
try {
- myDet->setReceiverUDPMAC(s, comboDetector->currentIndex());
+ det->setDestinationUDPMAC(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver UDP MAC.",
"qTabAdvanced::SetRxrUDPMAC", this,
&qTabAdvanced::GetRxrUDPMAC)
@@ -439,8 +440,7 @@ void qTabAdvanced::SetRxrUDPMAC() {
void qTabAdvanced::SetRxrZMQPort(int port) {
FILE_LOG(logINFO) << "Setting Receiver ZMQ Port:" << port;
try {
- myDet->setReceiverDataStreamingOutPort(port,
- comboDetector->currentIndex());
+ det->setRxZmqPort(port, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver ZMQ port.",
"qTabAdvanced::SetRxrZMQPort", this,
&qTabAdvanced::GetRxrZMQPort)
@@ -450,7 +450,7 @@ void qTabAdvanced::SetRxrZMQIP() {
std::string s = dispRxrZMQIP->text().toAscii().constData();
FILE_LOG(logINFO) << "Setting Receiver ZMQ IP:" << s;
try {
- myDet->setReceiverDataStreamingOutIP(s, comboDetector->currentIndex());
+ det->setRxZmqIP(s, {comboDetector->currentIndex()});
} CATCH_HANDLE ("Could not set Receiver ZMQ IP.",
"qTabAdvanced::SetRxrZMQIP", this,
&qTabAdvanced::GetRxrZMQIP)
@@ -459,7 +459,7 @@ void qTabAdvanced::SetRxrZMQIP() {
void qTabAdvanced::GetROI() {
FILE_LOG(logDEBUG) << "Getting ROI";
try {
- slsDetectorDefs::ROI roi = myDet->getROI(comboReadout->currentIndex());
+ slsDetectorDefs::ROI roi = det->getROI({comboReadout->currentIndex()})[0];
spinXmin->setValue(roi.xmin);
spinXmax->setValue(roi.xmax);
} CATCH_DISPLAY ("Could not get ROI.", "qTabAdvanced::GetROI")
@@ -482,7 +482,7 @@ void qTabAdvanced::SetROI() {
// set roi
FILE_LOG(logINFO) << "Setting ROI: [" << roi.xmin << ", " << roi.xmax << "]";
try {
- myDet->setROI(roi, comboReadout->currentIndex());
+ det->setROI(roi, {comboReadout->currentIndex()});
} CATCH_DISPLAY ("Could not set these ROIs.",
"qTabAdvanced::SetROI")
@@ -496,7 +496,7 @@ void qTabAdvanced::GetAllTrimbits() {
SLOT(SetAllTrimbits()));
try {
- int retval = myDet->setAllTrimbits(-1);
+ int retval = det->getAllTrimbits().squash(-1);
spinSetAllTrimbits->setValue(retval);
} CATCH_DISPLAY ("Could not get all trimbits.", "qTabAdvanced::GetAllTrimbits")
@@ -509,7 +509,7 @@ void qTabAdvanced::SetAllTrimbits() {
FILE_LOG(logINFO) << "Setting all trimbits:" << value;
try {
- myDet->setAllTrimbits(value);
+ det->setAllTrimbits(value);
} CATCH_HANDLE("Could not set all trimbits.", "qTabAdvanced::SetAllTrimbits",
this, &qTabAdvanced::GetAllTrimbits)
}
@@ -520,7 +520,7 @@ void qTabAdvanced::GetNumStoragecells() {
SLOT(SetNumStoragecells(int)));
try {
- auto retval = myDet->setTimer(slsDetectorDefs::STORAGE_CELL_NUMBER);
+ auto retval = det->getNumberOfAdditionalStorageCells().tsquash("Inconsistent values for number of addditional storage cells.");
spinNumStoragecells->setValue(retval);
} CATCH_DISPLAY (
"Could not get number of additional storage cells.",
@@ -534,7 +534,7 @@ void qTabAdvanced::SetNumStoragecells(int value) {
FILE_LOG(logINFO) << "Setting number of additional stoarge cells: "
<< value;
try {
- myDet->setTimer(slsDetectorDefs::STORAGE_CELL_NUMBER, value, -1);
+ det->setNumberOfAdditionalStorageCells(value);
} CATCH_HANDLE (
"Could not set number of additional storage cells.",
"qTabAdvanced::SetNumStoragecells", this,
@@ -547,24 +547,14 @@ void qTabAdvanced::GetSubExposureTime() {
SLOT(SetSubExposureTime()));
disconnect(comboSubExpTimeUnit, SIGNAL(currentIndexChanged(int)), this,
SLOT(SetSubExposureTime()));
-
try {
- int64_t retval =
- myDet->setTimer(slsDetectorDefs::SUBFRAME_ACQUISITION_TIME);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING,
- "Subexptime is inconsistent for all detectors.",
- "qTabAdvanced::GetSubExposureTime");
- spinSubExpTime->setValue(-1);
- } else {
- double value = (double)(retval * (1E-9));
- auto time = qDefs::getCorrectTime(value);
- spinSubExpTime->setValue(time.first);
- comboSubExpTimeUnit->setCurrentIndex(static_cast(time.second));
- }
+ auto retval =
+ det->getSubExptime().tsquash("Subexptime is inconsistent for all detectors.");
+ auto time = qDefs::getUserFriendlyTime(retval);
+ spinSubExpTime->setValue(time.first);
+ comboSubExpTimeUnit->setCurrentIndex(static_cast(time.second));
} CATCH_DISPLAY ("Could not get sub exposure time.",
"qTabSettings::GetSubExposureTime")
-
connect(spinSubExpTime, SIGNAL(valueChanged(double)), this,
SLOT(SetSubExposureTime()));
connect(comboSubExpTimeUnit, SIGNAL(currentIndexChanged(int)), this,
@@ -572,17 +562,14 @@ void qTabAdvanced::GetSubExposureTime() {
}
void qTabAdvanced::SetSubExposureTime() {
- double timeNS =
- qDefs::getNSTime((qDefs::timeUnit)comboSubExpTimeUnit->currentIndex(),
- spinSubExpTime->value());
+ auto timeNS = qDefs::getNSTime(std::make_pair(spinSubExpTime->value(), static_cast(comboSubExpTimeUnit->currentIndex())));
FILE_LOG(logINFO)
- << "Setting sub frame acquisition time to " << timeNS << " ns"
+ << "Setting sub frame acquisition time to " << timeNS.count() << " ns"
<< "/" << spinSubExpTime->value()
<< qDefs::getUnitString(
(qDefs::timeUnit)comboSubExpTimeUnit->currentIndex());
try {
- myDet->setTimer(slsDetectorDefs::SUBFRAME_ACQUISITION_TIME,
- (int64_t)timeNS, -1);
+ det->setSubExptime(timeNS);
} CATCH_DISPLAY ("Could not set sub exposure time.",
"qTabAdvanced::SetSubExposureTime")
@@ -595,24 +582,14 @@ void qTabAdvanced::GetSubDeadTime() {
SLOT(SetSubDeadTime()));
disconnect(comboSubDeadTimeUnit, SIGNAL(currentIndexChanged(int)), this,
SLOT(SetSubDeadTime()));
-
try {
- int64_t retval = myDet->setTimer(slsDetectorDefs::SUBFRAME_DEADTIME);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING,
- "Sub dead time is inconsistent for all detectors.",
- "qTabAdvanced::GetSubDeadTime");
- spinSubDeadTime->setValue(-1);
- } else {
- double value = (double)(retval * (1E-9));
- auto time = qDefs::getCorrectTime(value);
- spinSubDeadTime->setValue(time.first);
- comboSubDeadTimeUnit->setCurrentIndex(
- static_cast(time.second));
- }
+ auto retval = det->getSubDeadTime().tsquash("Sub dead time is inconsistent for all detectors.");
+ auto time = qDefs::getUserFriendlyTime(retval);
+ spinSubDeadTime->setValue(time.first);
+ comboSubDeadTimeUnit->setCurrentIndex(
+ static_cast(time.second));
} CATCH_DISPLAY ("Could not get sub dead time.",
"qTabSettings::GetSubDeadTime")
-
connect(spinSubDeadTime, SIGNAL(valueChanged(double)), this,
SLOT(SetSubDeadTime()));
connect(comboSubDeadTimeUnit, SIGNAL(currentIndexChanged(int)), this,
@@ -620,20 +597,17 @@ void qTabAdvanced::GetSubDeadTime() {
}
void qTabAdvanced::SetSubDeadTime() {
- double timeNS =
- qDefs::getNSTime((qDefs::timeUnit)comboSubDeadTimeUnit->currentIndex(),
- spinSubDeadTime->value());
+ auto timeNS = qDefs::getNSTime(std::make_pair(spinSubDeadTime->value(), static_cast(comboSubDeadTimeUnit->currentIndex())));
+
FILE_LOG(logINFO)
- << "Setting sub frame dead time to " << timeNS << " ns"
+ << "Setting sub frame dead time to " << timeNS.count() << " ns"
<< "/" << spinSubDeadTime->value()
<< qDefs::getUnitString(
(qDefs::timeUnit)comboSubDeadTimeUnit->currentIndex());
try {
- myDet->setTimer(slsDetectorDefs::SUBFRAME_DEADTIME, (int64_t)timeNS,
- -1);
+ det->setSubDeadTime(timeNS);
} CATCH_DISPLAY ("Could not set sub dead time.",
"qTabAdvanced::SetSubDeadTime")
-
GetSubDeadTime();
}
@@ -646,7 +620,7 @@ void qTabAdvanced::Refresh() {
}
// update all network widgets
- SetDetector(comboDetector->currentIndex());
+ SetDetector();
// roi
if (tab_roi->isEnabled()) {
diff --git a/slsDetectorGui/src/qTabDataOutput.cpp b/slsDetectorGui/src/qTabDataOutput.cpp
index afe65f3c3..3c27d6255 100755
--- a/slsDetectorGui/src/qTabDataOutput.cpp
+++ b/slsDetectorGui/src/qTabDataOutput.cpp
@@ -10,7 +10,7 @@
#include
-qTabDataOutput::qTabDataOutput(QWidget *parent, multiSlsDetector *detector) : QWidget(parent), myDet(detector), btnGroupRate(nullptr) {
+qTabDataOutput::qTabDataOutput(QWidget *parent, sls::Detector *detector) : QWidget(parent), det(detector), btnGroupRate(nullptr) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "DataOutput ready";
@@ -28,7 +28,7 @@ void qTabDataOutput::SetupWidgetWindow() {
btnGroupRate->addButton(radioCustomDeadtime, 1);
// enabling according to det type
- switch(myDet->getDetectorTypeAsEnum()) {
+ switch(det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
chkTenGiga->setEnabled(true);
chkRate->setEnabled(true);
@@ -70,8 +70,7 @@ void qTabDataOutput::Initialization() {
// flags, speed
if (widgetEiger->isEnabled()) {
connect(comboEigerClkDivider, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSpeed(int)));
- connect(comboEigerFlags1, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
- connect(comboEigerFlags2, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
+ connect(comboEigerParallelFlag, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
}
}
@@ -80,9 +79,11 @@ void qTabDataOutput::PopulateDetectors() {
comboDetector->clear();
comboDetector->addItem("All");
- if (myDet->size() > 1) {
- for (unsigned int i = 0; i < myDet->size(); ++i)
- comboDetector->addItem(QString(myDet->getHostname(i).c_str()));
+ if (det->size() > 1) {
+ auto res = det->getHostname();
+ for (auto &it : res) {
+ comboDetector->addItem(QString(it.c_str()));
+ }
}
}
@@ -90,8 +91,10 @@ void qTabDataOutput::EnableBrowse() {
FILE_LOG(logDEBUG) << "Getting browse enable";
try {
btnOutputBrowse->setEnabled(false); // exception default
- std::string receiverHostname = myDet->getReceiverHostname(comboDetector->currentIndex() - 1);
- if (receiverHostname == "localhost") {
+ std::string rxHostname = det->getRxHostname({comboDetector->currentIndex() - 1}).squash("none");
+ if (rxHostname == "none") {
+ btnOutputBrowse->setEnabled(false);
+ } else if (rxHostname == "localhost") {
btnOutputBrowse->setEnabled(true);
} else {
std::string hostname;
@@ -101,7 +104,7 @@ void qTabDataOutput::EnableBrowse() {
hostname.assign(host);
}
// client pc (hostname) same as reciever hostname
- if (hostname == receiverHostname) {
+ if (hostname == rxHostname) {
btnOutputBrowse->setEnabled(true);
} else {
btnOutputBrowse->setEnabled(false);
@@ -114,34 +117,26 @@ void qTabDataOutput::GetFileWrite() {
FILE_LOG(logDEBUG) << "Getting file write enable";
try {
boxFileWriteEnabled->setEnabled(true); // exception default
- int retval = myDet->getFileWrite();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "File write is inconsistent for all detectors.", "qTabDataOutput::GetFileWrite");
- boxFileWriteEnabled->setEnabled(true);
- } else {
- boxFileWriteEnabled->setEnabled(retval == 0 ? false : true);
- }
+ auto retval = det->getFileWrite().tsquash("File write is inconsistent for all detectors.");
+ boxFileWriteEnabled->setEnabled(retval);
} CATCH_DISPLAY("Could not get file enable.", "qTabDataOutput::GetFileWrite")
}
void qTabDataOutput::GetFileName() {
FILE_LOG(logDEBUG) << "Getting file name";
try {
- auto retval = myDet->getFileName();
+ auto retval = det->getFileNamePrefix().tsquash("File name is inconsistent for all detectors.");
dispFileName->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get file name prefix.", "qTabDataOutput::GetFileName")
}
void qTabDataOutput::GetOutputDir() {
FILE_LOG(logDEBUG) << "Getting file path";
-
disconnect(dispOutputDir, SIGNAL(editingFinished()), this, SLOT(SetOutputDir()));
-
try {
- std::string path = myDet->getFilePath(comboDetector->currentIndex() - 1);
+ std::string path = det->getFilePath({comboDetector->currentIndex() - 1}).tsquash("File path is different for all detectors.");
dispOutputDir->setText(QString(path.c_str()));
} CATCH_DISPLAY ("Could not get file path.", "qTabDataOutput::GetOutputDir")
-
connect(dispOutputDir, SIGNAL(editingFinished()), this, SLOT(SetOutputDir()));
}
@@ -170,7 +165,7 @@ void qTabDataOutput::SetOutputDir() {
}
std::string spath = std::string(path.toAscii().constData());
try {
- myDet->setFilePath(spath, comboDetector->currentIndex() - 1);
+ det->setFilePath(spath, {comboDetector->currentIndex() - 1});
} CATCH_HANDLE ("Could not set output file path.", "qTabDataOutput::SetOutputDir", this, &qTabDataOutput::GetOutputDir)
}
}
@@ -178,44 +173,33 @@ void qTabDataOutput::SetOutputDir() {
void qTabDataOutput::GetFileFormat() {
FILE_LOG(logDEBUG) << "Getting File Format";
disconnect(comboFileFormat, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFileFormat(int)));
-
try {
- auto retval = myDet->getFileFormat();
+ auto retval = det->getFileFormat().tsquash("File format is inconsistent for all detectors.");
switch(retval) {
- case slsDetectorDefs::GET_FILE_FORMAT:
- qDefs::Message(qDefs::WARNING, "File Format is inconsistent for all detectors.", "qTabDataOutput::GetFileFormat");
- break;
case slsDetectorDefs::BINARY:
case slsDetectorDefs::HDF5:
comboFileFormat->setCurrentIndex(static_cast(retval));
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown file format: ") + std::to_string(static_cast(retval)), "qTabDataOutput::GetFileFormat");
- break;
+ throw sls::RuntimeError(std::string("Unknown file format: ") + std::to_string(static_cast(retval)));
}
} CATCH_DISPLAY("Could not get file format.", "qTabDataOutput::GetFileFormat")
-
connect(comboFileFormat, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFileFormat(int)));
}
void qTabDataOutput::SetFileFormat(int format) {
FILE_LOG(logINFO) << "Setting File Format to " << comboFileFormat->currentText().toAscii().data();
try {
- myDet->setFileFormat((slsDetectorDefs::fileFormat)comboFileFormat->currentIndex());
+ det->setFileFormat(static_cast(comboFileFormat->currentIndex()));
} CATCH_HANDLE ("Could not set file format.", "qTabDataOutput::SetFileFormat", this, &qTabDataOutput::GetFileFormat)
}
void qTabDataOutput::GetFileOverwrite() {
FILE_LOG(logDEBUG) << "Getting File Over Write Enable";
disconnect(chkOverwriteEnable, SIGNAL(toggled(bool)), this, SLOT(SetOverwriteEnable(bool)));
-
try {
- int retval = myDet->getFileOverWrite();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "File over write is inconsistent for all detectors.", "qTabDataOutput::GetFileOverwrite");
- } else {
- chkOverwriteEnable->setChecked(retval == 0 ? false : true);
- }
+ auto retval = det->getFileOverWrite().tsquash("File over write is inconsistent for all detectors.");
+ chkOverwriteEnable->setChecked(retval);
} CATCH_DISPLAY ("Could not get file over write enable.", "qTabDataOutput::GetFileOverwrite")
connect(chkOverwriteEnable, SIGNAL(toggled(bool)), this, SLOT(SetOverwriteEnable(bool)));
@@ -223,33 +207,25 @@ void qTabDataOutput::GetFileOverwrite() {
void qTabDataOutput::SetOverwriteEnable(bool enable) {
FILE_LOG(logINFO) << "Setting File Over Write Enable to " << enable;
-
try {
- myDet->setFileOverWrite(enable);
+ det->setFileOverWrite(enable);
} CATCH_HANDLE ("Could not set file over write enable.", "qTabDataOutput::SetOverwriteEnable", this, &qTabDataOutput::GetFileOverwrite)
}
void qTabDataOutput::GetTenGigaEnable() {
FILE_LOG(logDEBUG) << "Getting 10GbE enable";
disconnect(chkTenGiga, SIGNAL(toggled(bool)), this, SLOT(SetTenGigaEnable(bool)));
-
try {
- int retval = myDet->enableTenGigabitEthernet();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "10GbE enable is inconsistent for all detectors.", "qTabDataOutput::GetTenGigaEnable");
- } else {
- chkTenGiga->setChecked(retval == 0 ? false : true);
- }
+ auto retval = det->getTenGiga().tsquash("10GbE enable is inconsistent for all detectors.");
+ chkTenGiga->setChecked(retval);
} CATCH_DISPLAY ("Could not get 10GbE enable.", "qTabDataOutput::GetTenGigaEnable")
-
connect(chkTenGiga, SIGNAL(toggled(bool)), this, SLOT(SetTenGigaEnable(bool)));
}
void qTabDataOutput::SetTenGigaEnable(bool enable) {
FILE_LOG(logINFO) << "Setting 10GbE to " << enable;
-
try {
- myDet->enableTenGigabitEthernet(enable);
+ det->setTenGiga(enable);
} CATCH_HANDLE ("Could not set 10GbE enable.", "qTabDataOutput::SetTenGigaEnable", this, &qTabDataOutput::GetTenGigaEnable)
}
@@ -258,19 +234,13 @@ void qTabDataOutput::GetRateCorrection() {
disconnect(chkRate, SIGNAL(toggled(bool)), this, SLOT(EnableRateCorrection()));
disconnect(btnGroupRate, SIGNAL(buttonClicked(int)), this, SLOT(SetRateCorrection()));
disconnect(spinCustomDeadTime, SIGNAL(editingFinished()), this, SLOT(SetRateCorrection()));
-
try {
- int64_t retval = myDet->getRateCorrection();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Rate correction (enable/tau) is inconsistent for all detectors.", "qTabDataOutput::GetRateCorrection");
- spinCustomDeadTime->setValue(-1);
- } else {
- chkRate->setChecked(retval == 0 ? false : true);
- if (retval != 0)
- spinCustomDeadTime->setValue(retval);
- }
+ spinCustomDeadTime->setValue(-1);
+ int64_t retval = det->getRateCorrection().tsquash("Rate correction (enable/tau) is inconsistent for all detectors.").count();
+ chkRate->setChecked(retval == 0 ? false : true);
+ if (retval != 0)
+ spinCustomDeadTime->setValue(retval);
} CATCH_DISPLAY("Could not get rate correction.", "qTabDataOutput::GetRateCorrection")
-
connect(chkRate, SIGNAL(toggled(bool)), this, SLOT(EnableRateCorrection()));
connect(btnGroupRate, SIGNAL(buttonClicked(int)), this, SLOT(SetRateCorrection()));
connect(spinCustomDeadTime, SIGNAL(editingFinished()), this, SLOT(SetRateCorrection()));
@@ -285,7 +255,7 @@ void qTabDataOutput::EnableRateCorrection() {
FILE_LOG(logINFO) << "Disabling Rate correction";
// disable
try {
- myDet->setRateCorrection(0);
+ det->setRateCorrection(sls::ns(0));
} CATCH_HANDLE ("Could not switch off rate correction.", "qTabDataOutput::EnableRateCorrection", this, &qTabDataOutput::GetRateCorrection)
}
@@ -294,122 +264,69 @@ void qTabDataOutput::SetRateCorrection() {
if (!chkRate->isChecked()) {
return;
}
- // get default or custom value
- int64_t deadtime = -1;
- if (radioCustomDeadtime->isChecked()) {
- deadtime = spinCustomDeadTime->value();
- }
- FILE_LOG(logINFO) << "Setting Rate Correction with dead time: " << deadtime;
-
try {
- myDet->setRateCorrection(deadtime);
+ // custom dead time
+ if (radioCustomDeadtime->isChecked()) {
+ int64_t deadtime = spinCustomDeadTime->value();
+ FILE_LOG(logINFO) << "Setting Rate Correction with custom dead time: " << deadtime;
+ det->setRateCorrection(sls::ns(deadtime));
+ }
+ // default dead time
+ else {
+ FILE_LOG(logINFO) << "Setting Rate Correction with default dead time";
+ det->setDefaultRateCorrection();
+ }
} CATCH_HANDLE ("Could not set rate correction.", "qTabDataOutput::SetRateCorrection", this, &qTabDataOutput::GetRateCorrection)
}
void qTabDataOutput::GetSpeed() {
FILE_LOG(logDEBUG) << "Getting Speed";
disconnect(comboEigerClkDivider, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSpeed(int)));
-
try {
- int retval = myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER);
+ int retval = det->getSpeed().tsquash("Speed is inconsistent for all detectors.");
switch(retval) {
- case -1:
- qDefs::Message(qDefs::WARNING, "Speed is inconsistent for all detectors.", "qTabDataOutput::GetSpeed");
- break;
case FULLSPEED:
case HALFSPEED:
case QUARTERSPEED:
comboEigerClkDivider->setCurrentIndex(retval);
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown speed: ") + std::to_string(retval), "qTabDataOutput::GetFileFormat");
- break;
+ throw sls::RuntimeError(std::string("Unknown speed: ") + std::to_string(retval));
}
} CATCH_DISPLAY ("Could not get speed.", "qTabDataOutput::GetSpeed")
-
connect(comboEigerClkDivider, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSpeed(int)));
}
void qTabDataOutput::SetSpeed(int speed) {
FILE_LOG(logINFO) << "Setting Speed to " << comboEigerClkDivider->currentText().toAscii().data();;
try {
- myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER, speed);
+ det->setSpeed(speed);
} CATCH_HANDLE ("Could not set speed.", "qTabDataOutput::SetSpeed", this, &qTabDataOutput::GetSpeed)
}
void qTabDataOutput::GetFlags() {
FILE_LOG(logDEBUG) << "Getting readout flags";
- disconnect(comboEigerFlags1, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
- disconnect(comboEigerFlags2, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
-
+ disconnect(comboEigerParallelFlag, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
try {
- int retval = myDet->setReadOutFlags(slsDetectorDefs::GET_READOUT_FLAGS);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Readout flags are inconsistent for all detectors.", "qTabDataOutput::GetFlags");
- } else {
- // store in ram or continuous
- if (retval & slsDetectorDefs::STORE_IN_RAM)
- comboEigerFlags1->setCurrentIndex(STOREINRAM);
- else if (retval & slsDetectorDefs::CONTINOUS_RO)
- comboEigerFlags1->setCurrentIndex(CONTINUOUS);
- else {
- qDefs::Message(qDefs::WARNING, std::string("Unknown flag (Not Store in ram or Continous): ") + std::to_string(retval), "qTabDataOutput::GetFlags");
- }
-
- // parallel or non parallel
- if (retval & slsDetectorDefs::PARALLEL)
- comboEigerFlags2->setCurrentIndex(PARALLEL);
- else if (retval & slsDetectorDefs::NONPARALLEL)
- comboEigerFlags2->setCurrentIndex(NONPARALLEL);
- else {
- qDefs::Message(qDefs::WARNING, std::string("Unknown flag (Not Parallel or Non Parallel): ") + std::to_string(retval), "qTabDataOutput::GetFlags");
- }
- }
+ auto retval = det->getParallelMode().tsquash("Parallel Flag is inconsistent for all detectors.");
+ // parallel or non parallel
+ if (retval)
+ comboEigerParallelFlag->setCurrentIndex(PARALLEL);
+ else
+ comboEigerParallelFlag->setCurrentIndex(NONPARALLEL);
} CATCH_DISPLAY ("Could not get speed.", "qTabDataOutput::GetSpeed")
-
- connect(comboEigerFlags1, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
- connect(comboEigerFlags2, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
+ connect(comboEigerParallelFlag, SIGNAL(currentIndexChanged(int)), this, SLOT(SetFlags()));
}
void qTabDataOutput::SetFlags() {
- auto flag1 = slsDetectorDefs::GET_READOUT_FLAGS;
- auto flag2 = slsDetectorDefs::GET_READOUT_FLAGS;
-
- //set to continous or storeinram
- switch (comboEigerFlags1->currentIndex()) {
- case STOREINRAM:
- flag1 = slsDetectorDefs::STORE_IN_RAM;
- break;
- default:
- flag1 = slsDetectorDefs::CONTINOUS_RO;
- break;
- }
-
- //set to parallel or nonparallel
- switch (comboEigerFlags2->currentIndex()) {
- case PARALLEL:
- flag2 = slsDetectorDefs::PARALLEL;
- break;
- default:
- flag2 = slsDetectorDefs::NONPARALLEL;
- break;
- }
-
+ auto mode = comboEigerParallelFlag->currentIndex() == PARALLEL ? true : false;
try {
- FILE_LOG(logINFO) << "Setting Readout Flags to " << comboEigerFlags1->currentText().toAscii().data();
- myDet->setReadOutFlags(flag1);
- FILE_LOG(logINFO) << "Setting Readout Flags to " << comboEigerFlags2->currentText().toAscii().data();
- myDet->setReadOutFlags(flag2);
+ FILE_LOG(logINFO) << "Setting Readout Flags to " << comboEigerParallelFlag->currentText().toAscii().data();
+ det->setParallelMode(mode);
} CATCH_HANDLE ("Could not set readout flags.", "qTabDataOutput::SetFlags", this, &qTabDataOutput::GetFlags)
}
-
-
-
-
-
-
void qTabDataOutput::Refresh() {
FILE_LOG(logDEBUG) << "**Updating DataOutput Tab";
diff --git a/slsDetectorGui/src/qTabDebugging.cpp b/slsDetectorGui/src/qTabDebugging.cpp
index b9666f465..9ae292cb5 100755
--- a/slsDetectorGui/src/qTabDebugging.cpp
+++ b/slsDetectorGui/src/qTabDebugging.cpp
@@ -7,8 +7,8 @@
#include
-qTabDebugging::qTabDebugging(QWidget *parent, multiSlsDetector *detector) :
- QWidget(parent), myDet(detector), treeDet(nullptr), lblDetectorHostname(nullptr), lblDetectorFirmware(nullptr), lblDetectorSoftware(nullptr) {
+qTabDebugging::qTabDebugging(QWidget *parent, sls::Detector *detector) :
+ QWidget(parent), det(detector), treeDet(nullptr), lblDetectorHostname(nullptr), lblDetectorFirmware(nullptr), lblDetectorSoftware(nullptr) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "Debugging ready";
@@ -28,7 +28,7 @@ qTabDebugging::~qTabDebugging() {
void qTabDebugging::SetupWidgetWindow() {
// enabling according to det type
- if (myDet->getDetectorTypeAsEnum() == slsDetectorDefs::EIGER) {
+ if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
lblDetector->setText("Half Module:");
chkDetectorFirmware->setEnabled(false);
chkDetectorBus->setEnabled(false);
@@ -55,8 +55,9 @@ void qTabDebugging::PopulateDetectors() {
FILE_LOG(logDEBUG) << "Populating detectors";
comboDetector->clear();
- for (unsigned int i = 0; i < myDet->size(); ++i) {
- comboDetector->addItem(QString(myDet->getHostname(i).c_str()));
+ auto res = det->getHostname();
+ for (auto &it : res) {
+ comboDetector->addItem(QString(it.c_str()));
}
}
@@ -64,7 +65,7 @@ void qTabDebugging::GetDetectorStatus() {
FILE_LOG(logDEBUG) << "Getting Status";
try {
- std::string status = slsDetectorDefs::runStatusType(myDet->getRunStatus(comboDetector->currentIndex()));
+ std::string status = slsDetectorDefs::runStatusType(det->getDetectorStatus({comboDetector->currentIndex()})[0]);
lblStatus->setText(QString(status.c_str()).toUpper());
} CATCH_DISPLAY ("Could not get detector status.", "qTabDebugging::GetDetectorStatus")
}
@@ -87,9 +88,9 @@ void qTabDebugging::GetInfo() {
//to make sure the size is constant
lblDetectorFirmware->setFixedWidth(100);
layout->addWidget(dispFrame, 0, 1);
- QString detName = QString(myDet->getDetectorTypeAsString().c_str());
+ QString detName = QString(slsDetectorDefs::detectorTypeToString(det->getDetectorType().squash()).c_str());
- switch (myDet->getDetectorTypeAsEnum()) {
+ switch (det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
formLayout->addWidget(new QLabel("Half Module:"), 0, 0);
@@ -148,7 +149,7 @@ void qTabDebugging::GetInfo() {
void qTabDebugging::SetParameters(QTreeWidgetItem *item) {
// eiger: if half module clicked, others: true always
bool ignoreOrHalfModuleClicked = true;
- if (myDet->getDetectorTypeAsEnum() == slsDetectorDefs::EIGER) {
+ if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
if (!(item->text(0).contains("Half Module"))) {
ignoreOrHalfModuleClicked = false;
}
@@ -161,9 +162,9 @@ void qTabDebugging::SetParameters(QTreeWidgetItem *item) {
break;
}
try {
- auto retval = std::string("0x") + std::to_string((unsigned long)myDet->getId(slsDetectorDefs::DETECTOR_FIRMWARE_VERSION, comboDetector->currentIndex()));
+ auto retval = std::string("0x") + std::to_string((unsigned long)det->getFirmwareVersion({comboDetector->currentIndex()})[0]);
lblDetectorFirmware->setText(QString(retval.c_str()));
- retval = std::string("0x") + std::to_string((unsigned long)myDet->getId(slsDetectorDefs::DETECTOR_SOFTWARE_VERSION, comboDetector->currentIndex()));
+ retval = std::string("0x") + std::to_string((unsigned long)det->getDetectorServerVersion({comboDetector->currentIndex()})[0]);
lblDetectorSoftware->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get versions.", "qTabDebugging::SetParameters")
}
@@ -174,7 +175,7 @@ void qTabDebugging::TestDetector() {
try {
QString moduleName = "Module";
- if (myDet->getDetectorTypeAsEnum() == slsDetectorDefs::EIGER) {
+ if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
moduleName = "Half Module";
}
@@ -183,7 +184,7 @@ void qTabDebugging::TestDetector() {
//detector firmware
if (chkDetectorFirmware->isChecked()) {
- auto retval = myDet->digitalTest(slsDetectorDefs::DETECTOR_FIRMWARE_TEST, comboDetector->currentIndex());
+ auto retval = det->executeFirmwareTest({comboDetector->currentIndex()})[0];
if (retval == slsDetectorDefs::FAIL) {
message.append(QString("%1 Firmware: FAIL
").arg(moduleName));
FILE_LOG(logERROR) << "Firmware fail";
@@ -195,7 +196,7 @@ void qTabDebugging::TestDetector() {
//detector CPU-FPGA bus
if (chkDetectorBus->isChecked()) {
- auto retval = myDet->digitalTest(slsDetectorDefs::DETECTOR_BUS_TEST, comboDetector->currentIndex());
+ auto retval = det->executeBusTest({comboDetector->currentIndex()})[0];
if (retval == slsDetectorDefs::FAIL) {
message.append(QString("%1 Bus: FAIL
").arg(moduleName));
FILE_LOG(logERROR) << "Bus Test fail";
diff --git a/slsDetectorGui/src/qTabDeveloper.cpp b/slsDetectorGui/src/qTabDeveloper.cpp
index 122c4daf0..f8f47978c 100755
--- a/slsDetectorGui/src/qTabDeveloper.cpp
+++ b/slsDetectorGui/src/qTabDeveloper.cpp
@@ -4,7 +4,7 @@
#include
-qTabDeveloper::qTabDeveloper(QWidget *parent, multiSlsDetector *detector) : QWidget(parent), myDet(detector) {
+qTabDeveloper::qTabDeveloper(QWidget *parent, sls::Detector *detector) : QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "Developer ready";
@@ -21,74 +21,74 @@ void qTabDeveloper::SetupWidgetWindow() {
spinHV->hide();
try{
- slsDetectorDefs::detectorType detType = myDet->getDetectorTypeAsEnum();
+ slsDetectorDefs::detectorType detType = det->getDetectorType().squash();
switch (detType) {
case slsDetectorDefs::EIGER:
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v SvP: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v SvN ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vrf: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vrs: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vtr: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vtgstv: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v cal: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcp ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcn: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vis: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v rxb_lb: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v rxb_rb: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcmp_ll: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcmp_lr: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcmp_rl: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Vcmp_rr: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v threshold: ", getSLSIndex(detType, tempid++), false));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature FPGA Ext: ", getSLSIndex(detType, tempid++), true));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature 10GE: ", getSLSIndex(detType, tempid++), true));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature DCDC: ", getSLSIndex(detType, tempid++), true));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature SODL: ", getSLSIndex(detType, tempid++), true));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature SODR: ", getSLSIndex(detType, tempid++), true));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature FPGA: ", getSLSIndex(detType, tempid++), true));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v SvP: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v SvN ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vrf: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vrs: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vtr: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vtgstv: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v cal: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcp ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcn: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vis: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v rxb_lb: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v rxb_rb: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcmp_ll: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcmp_lr: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcmp_rl: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Vcmp_rr: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v threshold: ", getSLSIndex(detType, tempid++), false));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature FPGA Ext: ", getSLSIndex(detType, tempid++), true));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature 10GE: ", getSLSIndex(detType, tempid++), true));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature DCDC: ", getSLSIndex(detType, tempid++), true));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature SODL: ", getSLSIndex(detType, tempid++), true));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature SODR: ", getSLSIndex(detType, tempid++), true));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature FPGA: ", getSLSIndex(detType, tempid++), true));
break;
case slsDetectorDefs::GOTTHARD:
comboHV->show();
lblComboHV->show();
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Reference: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Cascode n: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Cascode p: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Comp. Output: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Cascode out ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Comp. Input: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Comp. Ref: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "i Base Test: ", getSLSIndex(detType, tempid++), false));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature ADC: ", getSLSIndex(detType, tempid++), false));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature FPGA: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Reference: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Cascode n: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Cascode p: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Comp. Output: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Cascode out ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Comp. Input: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Comp. Ref: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "i Base Test: ", getSLSIndex(detType, tempid++), false));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature ADC: ", getSLSIndex(detType, tempid++), false));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature FPGA: ", getSLSIndex(detType, tempid++), false));
break;
case slsDetectorDefs::JUNGFRAU:
lblSpinHV->show();
spinHV->show();
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vb comp: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vdd prot: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vin com: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vref prech: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vb pixbuf: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vb ds: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v vref ds: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "i vref comp: ", getSLSIndex(detType, tempid++), false));
- adcWidgets.push_back(new qDacWidget(this, myDet, false, "Temperature ADC/FPGA: ", getSLSIndex(detType, tempid++), true));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vb comp: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vdd prot: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vin com: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vref prech: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vb pixbuf: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vb ds: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v vref ds: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "i vref comp: ", getSLSIndex(detType, tempid++), false));
+ adcWidgets.push_back(new qDacWidget(this, det, false, "Temperature ADC/FPGA: ", getSLSIndex(detType, tempid++), true));
break;
case slsDetectorDefs::MOENCH:
lblSpinHV->show();
spinHV->show();
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 0: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 1: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 2: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 3: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 4: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 5: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "v Dac 6: ", getSLSIndex(detType, tempid++), false));
- dacWidgets.push_back(new qDacWidget(this, myDet, true, "i Dac 7: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 0: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 1: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 2: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 3: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 4: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 5: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "v Dac 6: ", getSLSIndex(detType, tempid++), false));
+ dacWidgets.push_back(new qDacWidget(this, det, true, "i Dac 7: ", getSLSIndex(detType, tempid++), false));
break;
default:
@@ -124,9 +124,11 @@ void qTabDeveloper::PopulateDetectors() {
comboDetector->clear();
comboDetector->addItem("All");
- if (myDet->size() > 1) {
- for (unsigned int i = 0; i < myDet->size(); ++i)
- comboDetector->addItem(QString(myDet->getHostname(i).c_str()));
+ auto res = det->getHostname();
+ if (det->size() > 1) {
+ for (auto &it : res) {
+ comboDetector->addItem(QString(it.c_str()));
+ }
}
comboDetector->setCurrentIndex(0);
}
@@ -135,25 +137,22 @@ void qTabDeveloper::GetHighVoltage() {
// not enabled for eiger
if (!comboHV->isVisible() && !spinHV->isVisible())
return;
-
FILE_LOG(logDEBUG) << "Getting High Voltage";
disconnect(spinHV, SIGNAL(editingFinished()), this, SLOT(SetHighVoltage()));
disconnect(comboHV, SIGNAL(currentIndexChanged(int)), this, SLOT(SetHighVoltage()));
-
try {
// dac units
- auto retval = myDet->setDAC(-1, slsDetectorDefs::HIGH_VOLTAGE, 0, comboDetector->currentIndex() - 1);
+ auto retval = det->getHighVoltage({comboDetector->currentIndex() - 1}).tsquash("Inconsistent values for high voltage.");
+ //spinHV
if (spinHV->isVisible()) {
- if (retval != 0 && retval != -1 && retval < HV_MIN && retval > HV_MAX) {
- qDefs::Message(qDefs::WARNING, std::string("Unknown High Voltage: ") + std::to_string(retval), "qTabDeveloper::GetHighVoltage");
- } else{
- spinHV->setValue(retval);
- }
- } else {
+ if (retval != 0 && retval < HV_MIN && retval > HV_MAX) {
+ throw sls::RuntimeError(std::string("Unknown High Voltage: ") + std::to_string(retval));
+ }
+ spinHV->setValue(retval);
+ }
+ // combo HV
+ else {
switch (retval) {
- case -1:
- qDefs::Message(qDefs::WARNING, "Different values for high voltage.", "qTabDeveloper::GetHighVoltage");
- break;
case 0:
comboHV->setCurrentIndex(HV_0);
break;
@@ -176,13 +175,10 @@ void qTabDeveloper::GetHighVoltage() {
comboHV->setCurrentIndex(HV_200);
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown High Voltage: ") + std::to_string(retval), "qTabDeveloper::GetHighVoltage");
- break;
+ throw sls::RuntimeError(std::string("Unknown High Voltage: ") + std::to_string(retval));
}
}
-
} CATCH_DISPLAY ("Could not get high voltage.", "qTabDeveloper::GetHighVoltage")
-
connect(spinHV, SIGNAL(editingFinished()), this, SLOT(SetHighVoltage()));
connect(comboHV, SIGNAL(currentIndexChanged(int)), this, SLOT(SetHighVoltage()));
}
@@ -192,7 +188,7 @@ void qTabDeveloper::SetHighVoltage() {
FILE_LOG(logINFO) << "Setting high voltage:" << val;
try {
- myDet->setDAC(val, slsDetectorDefs::HIGH_VOLTAGE, 0, comboDetector->currentIndex() - 1);
+ det->setHighVoltage({comboDetector->currentIndex() - 1});
} CATCH_HANDLE ("Could not set high voltage.", "qTabDeveloper::SetHighVoltage",
this, &qTabDeveloper::GetHighVoltage)
}
diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp
index 679fc1d2d..b6ea70fef 100755
--- a/slsDetectorGui/src/qTabMeasurement.cpp
+++ b/slsDetectorGui/src/qTabMeasurement.cpp
@@ -10,7 +10,7 @@
#include
#include
-qTabMeasurement::qTabMeasurement(QWidget *parent, multiSlsDetector *detector, qDrawPlot *plot) : QWidget(parent), myDet(detector), myPlot(plot),
+qTabMeasurement::qTabMeasurement(QWidget *parent, sls::Detector *detector, qDrawPlot *p) : QWidget(parent), det(detector), plot(p),
progressTimer(nullptr) {
setupUi(this);
SetupWidgetWindow();
@@ -43,7 +43,7 @@ void qTabMeasurement::SetupWidgetWindow() {
spinDelay->setEnabled(true);
comboDelayUnit->setEnabled(true);
// enabling according to det type
- switch(myDet->getDetectorTypeAsEnum()) {
+ switch(det->getDetectorType().squash()) {
case slsDetectorDefs::MOENCH:
lblNumSamples->setEnabled(true);
spinNumSamples->setEnabled(true);
@@ -111,7 +111,7 @@ void qTabMeasurement::SetupTimingMode() {
item[i] = model->itemFromIndex(index[i]);
}
- if (myDet->getDetectorTypeAsEnum() != slsDetectorDefs::EIGER) {
+ if (det->getDetectorType().squash() != slsDetectorDefs::EIGER) {
item[(int)GATED]->setEnabled(false);
item[(int)BURST_TRIGGER]->setEnabled(false);
}
@@ -156,7 +156,7 @@ void qTabMeasurement::EnableWidgetsforTimingMode() {
lblExpTime->setEnabled(true);
spinExpTime->setEnabled(true);
comboExpUnit->setEnabled(true);
- if (myDet->getDetectorTypeAsEnum() == slsDetectorDefs::EIGER) {
+ if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
spinNumFrames->setValue(1);
} else {
// #frames, period, delay
@@ -198,14 +198,10 @@ void qTabMeasurement::EnableWidgetsforTimingMode() {
void qTabMeasurement::GetTimingMode() {
FILE_LOG(logDEBUG) << "Getting timing mode";
connect(comboTimingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(SetTimingMode(int)));
-
try {
auto oldMode = comboTimingMode->currentIndex();
- auto retval = myDet->setTimingMode();
+ auto retval = det->getTimingMode().tsquash("Inconsistent timing mode for all detectors.");
switch(retval) {
- case slsDetectorDefs::GET_TIMING_MODE:
- qDefs::Message(qDefs::WARNING, "Timing Mode is inconsistent for all detectors.", "qTabMeasurement::GetTimingMode");
- break;
case slsDetectorDefs::AUTO_TIMING:
case slsDetectorDefs::TRIGGER_EXPOSURE:
case slsDetectorDefs::GATED:
@@ -217,19 +213,16 @@ void qTabMeasurement::GetTimingMode() {
}
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown timing mode: ")+ std::to_string(retval), "qTabMeasurement::GetTimingMode");
- break;
+ throw sls::RuntimeError(std::string("Unknown timing mode: ")+ std::to_string(retval));
}
} CATCH_DISPLAY("Could not get timing mode.", "qTabMeasurement::GetTimingMode")
-
disconnect(comboTimingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(SetTimingMode(int)));
}
void qTabMeasurement::SetTimingMode(int val) {
FILE_LOG(logINFO) << "Setting timing mode:" << comboTimingMode->currentText().toAscii().data();
-
try {
- myDet->setTimingMode(static_cast(val));
+ det->setTimingMode(static_cast(val));
EnableWidgetsforTimingMode();
} CATCH_HANDLE("Could not set timing mode.", "qTabMeasurement::SetTimingMode", this, &qTabMeasurement::GetTimingMode)
}
@@ -242,74 +235,51 @@ void qTabMeasurement::SetNumMeasurements(int val) {
void qTabMeasurement::GetNumFrames() {
FILE_LOG(logDEBUG) << "Getting number of frames";
disconnect(spinNumFrames, SIGNAL(valueChanged(int)), this, SLOT(SetNumFrames(int)));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::FRAME_NUMBER);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Number of frames is inconsistent for all detectors.", "qTabMeasurement::GetNumFrames");
- }
+ auto retval = det->getNumberOfFrames().tsquash("Inconsistent number of frames for all detectors.");
spinNumFrames->setValue(retval);
} CATCH_DISPLAY ("Could not get number of frames.", "qTabMeasurement::GetNumFrames")
-
connect(spinNumFrames, SIGNAL(valueChanged(int)), this, SLOT(SetNumFrames(int)));
}
void qTabMeasurement::SetNumFrames(int val) {
FILE_LOG(logINFO) << "Setting number of frames to " << val;
-
try {
- myDet->setTimer(slsDetectorDefs::FRAME_NUMBER, val);
+ det->setNumberOfFrames(val);
} CATCH_HANDLE("Could not set number of frames.", "qTabMeasurement::SetNumFrames", this, &qTabMeasurement::GetNumFrames)
}
void qTabMeasurement::GetNumTriggers() {
FILE_LOG(logDEBUG) << "Getting number of triggers";
disconnect(spinNumTriggers, SIGNAL(valueChanged(int)), this, SLOT(SetNumTriggers(int)));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Number of triggers is inconsistent for all detectors.", "qTabMeasurement::GetNumTriggers");
- }
+ auto retval = det->getNumberOfTriggers().tsquash("Inconsistent number of triggers for all detectors.");
spinNumTriggers->setValue(retval);
} CATCH_DISPLAY ("Could not get number of frames.", "qTabMeasurement::GetNumTriggers")
-
connect(spinNumTriggers, SIGNAL(valueChanged(int)), this, SLOT(SetNumTriggers(int)));
}
void qTabMeasurement::SetNumTriggers(int val) {
FILE_LOG(logINFO) << "Setting number of triggers to " << val;
-
try {
- myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER, val);
+ det->setNumberOfTriggers(val);
} CATCH_HANDLE("Could not set number of triggers.", "qTabMeasurement::SetNumTriggers", this, &qTabMeasurement::GetNumTriggers)
}
void qTabMeasurement::GetNumSamples() {
FILE_LOG(logDEBUG) << "Getting number of samples";
disconnect(spinNumSamples, SIGNAL(valueChanged(int)), this, SLOT(SetNumSamples(int)));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::ANALOG_SAMPLES);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Number of analog samples is inconsistent for all detectors.", "qTabMeasurement::GetNumSamples");
- }
- retval = myDet->setTimer(slsDetectorDefs::DIGITAL_SAMPLES);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Number of digital samples is inconsistent for all detectors.", "qTabMeasurement::GetNumSamples");
- }
+ auto retval = det->getNumberOfAnalogSamples().tsquash("Inconsistent number of analog samples for all detectors.");
spinNumSamples->setValue(retval);
} CATCH_DISPLAY ("Could not get number of samples.", "qTabMeasurement::GetNumSamples")
-
connect(spinNumSamples, SIGNAL(valueChanged(int)), this, SLOT(SetNumSamples(int)));
}
void qTabMeasurement::SetNumSamples(int val) {
FILE_LOG(logINFO) << "Setting number of samples to " << val;
-
try {
- myDet->setTimer(slsDetectorDefs::ANALOG_SAMPLES, val);
- myDet->setTimer(slsDetectorDefs::DIGITAL_SAMPLES, val);
+ det->setNumberOfAnalogSamples(val);
} CATCH_HANDLE("Could not set number of samples.", "qTabMeasurement::SetNumSamples", this, &qTabMeasurement::GetNumSamples)
}
@@ -317,21 +287,14 @@ void qTabMeasurement::GetExposureTime() {
FILE_LOG(logDEBUG) << "Getting exposure time";
disconnect(spinExpTime, SIGNAL(valueChanged(double)), this, SLOT(SetExposureTime()));
disconnect(comboExpUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetExposureTime()));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Exposure Time is inconsistent for all detectors.", "qTabMeasurement::GetExposureTime");
- spinExpTime->setValue(-1);
- } else {
- auto time = qDefs::getCorrectTime(static_cast(retval) * (1E-9));
- spinExpTime->setValue(time.first);
- comboExpUnit->setCurrentIndex(static_cast(time.second));
-
- CheckAcqPeriodGreaterThanExp();
- }
+ spinExpTime->setValue(-1);
+ auto retval = det->getExptime().tsquash("Inconsistent exposure time for all detectors.");
+ auto time = qDefs::getUserFriendlyTime(retval);
+ spinExpTime->setValue(time.first);
+ comboExpUnit->setCurrentIndex(static_cast(time.second));
+ CheckAcqPeriodGreaterThanExp();
} CATCH_DISPLAY ("Could not get exposure time.", "qTabMeasurement::GetExposureTime")
-
connect(spinExpTime, SIGNAL(valueChanged(double)), this, SLOT(SetExposureTime()));
connect(comboExpUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetExposureTime()));
}
@@ -340,10 +303,9 @@ void qTabMeasurement::SetExposureTime() {
auto val = spinExpTime->value();
auto unit = static_cast(comboExpUnit->currentIndex());
FILE_LOG(logINFO) << "Setting exposure time to " << val << " " << qDefs::getUnitString(unit);
-
try {
- double timeNS = qDefs::getNSTime(unit, val);
- myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME, std::lround(timeNS));
+ auto timeNS = qDefs::getNSTime(std::make_pair(val, unit));
+ det->setExptime(timeNS);
CheckAcqPeriodGreaterThanExp();
} CATCH_HANDLE("Could not set exposure time.", "qTabMeasurement::SetExposureTime", this, &qTabMeasurement::GetExposureTime)
}
@@ -352,21 +314,14 @@ void qTabMeasurement::GetAcquisitionPeriod() {
FILE_LOG(logDEBUG) << "Getting acquisition period";
disconnect(spinPeriod, SIGNAL(valueChanged(double)), this, SLOT(SetAcquisitionPeriod()));
disconnect(comboPeriodUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetAcquisitionPeriod()));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::FRAME_PERIOD);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Acquisition Period is inconsistent for all detectors.", "qTabMeasurement::GetAcquisitionPeriod");
- spinPeriod->setValue(-1);
- } else {
- auto time = qDefs::getCorrectTime(static_cast(retval) * (1E-9));
- spinPeriod->setValue(time.first);
- comboPeriodUnit->setCurrentIndex(static_cast(time.second));
-
- CheckAcqPeriodGreaterThanExp();
- }
+ spinPeriod->setValue(-1);
+ auto retval = det->getPeriod().tsquash("Inconsistent acquisition period for all detectors.");
+ auto time = qDefs::getUserFriendlyTime(retval);
+ spinPeriod->setValue(time.first);
+ comboPeriodUnit->setCurrentIndex(static_cast(time.second));
+ CheckAcqPeriodGreaterThanExp();
} CATCH_DISPLAY ("Could not get acquisition period.", "qTabMeasurement::GetAcquisitionPeriod")
-
connect(spinPeriod, SIGNAL(valueChanged(double)), this, SLOT(SetAcquisitionPeriod()));
connect(comboPeriodUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetAcquisitionPeriod()));
}
@@ -375,10 +330,9 @@ void qTabMeasurement::SetAcquisitionPeriod() {
auto val = spinPeriod->value();
auto unit = static_cast(comboPeriodUnit->currentIndex());
FILE_LOG(logINFO) << "Setting acquisition period to " << val << " " << qDefs::getUnitString(unit);
-
try {
- double timeNS = qDefs::getNSTime(unit, val);
- myDet->setTimer(slsDetectorDefs::FRAME_PERIOD, std::lround(timeNS));
+ auto timeNS = qDefs::getNSTime(std::make_pair(val, unit));
+ det->setPeriod(timeNS);
CheckAcqPeriodGreaterThanExp();
} CATCH_HANDLE("Could not set acquisition period.", "qTabMeasurement::SetAcquisitionPeriod", this, &qTabMeasurement::GetAcquisitionPeriod)
}
@@ -387,8 +341,8 @@ void qTabMeasurement::CheckAcqPeriodGreaterThanExp() {
FILE_LOG(logDEBUG) << "Checking period >= exptime";
bool error = false;
if (lblPeriod->isEnabled()) {
- double exptimeNS = qDefs::getNSTime(static_cast(comboExpUnit->currentIndex()), spinExpTime->value());
- double acqtimeNS = qDefs::getNSTime(static_cast(comboPeriodUnit->currentIndex()), spinPeriod->value());
+ auto exptimeNS = qDefs::getNSTime(std::make_pair(spinExpTime->value(), static_cast(comboExpUnit->currentIndex())));
+ auto acqtimeNS = qDefs::getNSTime(std::make_pair(spinPeriod->value(), static_cast(comboPeriodUnit->currentIndex())));
if (exptimeNS > acqtimeNS) {
error = true;
spinPeriod->setToolTip(errPeriodTip);
@@ -410,21 +364,13 @@ void qTabMeasurement::GetDelay() {
FILE_LOG(logDEBUG) << "Getting delay";
disconnect(spinDelay, SIGNAL(valueChanged(double)), this, SLOT(SetDelay()));
disconnect(comboDelayUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetDelay()));
-
try {
- auto retval = myDet->setTimer(slsDetectorDefs::DELAY_AFTER_TRIGGER);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Delay is inconsistent for all detectors.", "qTabMeasurement::GetDelay");
- spinDelay->setValue(-1);
- } else {
- auto time = qDefs::getCorrectTime(static_cast(retval) * (1E-9));
- spinDelay->setValue(time.first);
- comboDelayUnit->setCurrentIndex(static_cast(time.second));
-
- CheckAcqPeriodGreaterThanExp();
- }
+ spinDelay->setValue(-1);
+ auto retval = det->getDelayAfterTrigger().tsquash("Inconsistent delay for all detectors.");
+ auto time = qDefs::getUserFriendlyTime(retval);
+ spinDelay->setValue(time.first);
+ comboDelayUnit->setCurrentIndex(static_cast(time.second));
} CATCH_DISPLAY ("Could not get delay.", "qTabMeasurement::GetDelay")
-
connect(spinDelay, SIGNAL(valueChanged(double)), this, SLOT(SetDelay()));
connect(comboDelayUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetDelay()));
}
@@ -433,61 +379,45 @@ void qTabMeasurement::SetDelay() {
auto val = spinDelay->value();
auto unit = static_cast(comboDelayUnit->currentIndex());
FILE_LOG(logINFO) << "Setting delay to " << val << " " << qDefs::getUnitString(unit);
-
try {
- double timeNS = qDefs::getNSTime(unit, val);
- myDet->setTimer(slsDetectorDefs::DELAY_AFTER_TRIGGER, std::lround(timeNS));
- CheckAcqPeriodGreaterThanExp();
+ auto timeNS = qDefs::getNSTime(std::make_pair(val, unit));
+ det->setDelayAfterTrigger(timeNS);
} CATCH_HANDLE("Could not set delay.", "qTabMeasurement::SetDelay", this, &qTabMeasurement::GetDelay)
}
void qTabMeasurement::GetFileWrite() {
FILE_LOG(logDEBUG) << "Getting File Write Enable";
disconnect(chkFile, SIGNAL(toggled(bool)), this, SLOT(SetFileWrite(bool)));
-
try {
dispFileName->setEnabled(true); // default, even when exception
lblIndex->setEnabled(true);
spinIndex->setEnabled(true);
- int retval = myDet->getFileWrite();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "File write is inconsistent for all detectors.", "qTabMeasurement::GetFileWrite");
- dispFileName->setEnabled(true);
- lblIndex->setEnabled(true);
- spinIndex->setEnabled(true);
- } else {
- bool enable = (retval == 0 ? false : true);
- chkFile->setChecked(enable);
- dispFileName->setEnabled(enable);
- lblIndex->setEnabled(enable);
- spinIndex->setEnabled(enable);
- }
+ auto retval = det->getFileWrite().tsquash("Inconsistent file write for all detectors.");
+ chkFile->setChecked(retval);
+ dispFileName->setEnabled(retval);
+ lblIndex->setEnabled(retval);
+ spinIndex->setEnabled(retval);
} CATCH_DISPLAY ("Could not get file over write enable.", "qTabMeasurement::GetFileWrite")
-
connect(chkFile, SIGNAL(toggled(bool)), this, SLOT(SetFileWrite(bool)));
}
void qTabMeasurement::SetFileWrite(bool val) {
FILE_LOG(logINFO) << "Set File Write to " << val;
-
try {
- myDet->setFileWrite(val);
- bool enable = chkFile->isChecked();
- dispFileName->setEnabled(enable);
- lblIndex->setEnabled(enable);
- spinIndex->setEnabled(enable);
+ det->setFileWrite(val);
+ dispFileName->setEnabled(val);
+ lblIndex->setEnabled(val);
+ spinIndex->setEnabled(val);
} CATCH_HANDLE("Could not set file write enable.", "qTabMeasurement::SetFileWrite", this, &qTabMeasurement::GetFileWrite)
}
void qTabMeasurement::GetFileName() {
FILE_LOG(logDEBUG) << "Getting file name prefix";
disconnect(dispFileName, SIGNAL(editingFinished()), this, SLOT(SetFileName()));
-
try {
- auto retval = myDet->getFileName();
+ auto retval = det->getFileNamePrefix().tsquash("Inconsistent file name prefix for all detectors.");
dispFileName->setText(QString(retval.c_str()));
} CATCH_DISPLAY ("Could not get file name prefix.", "qTabMeasurement::GetFileName")
-
connect(dispFileName, SIGNAL(editingFinished()), this, SLOT(SetFileName()));
}
@@ -495,7 +425,7 @@ void qTabMeasurement::SetFileName() {
std::string val = std::string(dispFileName->text().toAscii().constData());
FILE_LOG(logINFO) << "Setting File Name Prefix:" << val;
try {
- myDet->setFileName(val);
+ det->setFileNamePrefix(val);
} CATCH_HANDLE("Could not set file name prefix.", "qTabMeasurement::SetFileName", this, &qTabMeasurement::GetFileName)
emit FileNameChangedSignal(dispFileName->text());
@@ -504,43 +434,34 @@ void qTabMeasurement::SetFileName() {
void qTabMeasurement::GetRunIndex() {
FILE_LOG(logDEBUG) << "Getting Acquisition File index";
disconnect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(SetRunIndex(int)));
-
try {
- auto retval = myDet->getFileIndex();
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Acquisition File Index is inconsistent for all detectors.", "qTabMeasurement::GetRunIndex");
- }
+ auto retval = det->getAcquisitonIndex().tsquash("Inconsistent file index for all detectors.");
spinIndex->setValue(retval);
} CATCH_DISPLAY ("Could not get acquisition file index.", "qTabMeasurement::GetRunIndex")
-
connect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(SetRunIndex(int)));
}
void qTabMeasurement::SetRunIndex(int val) {
FILE_LOG(logINFO) << "Setting Acquisition File Index to " << val;
-
try {
- myDet->setFileIndex(val);
+ det->setAcquisitionIndex(val);
} CATCH_HANDLE("Could not set acquisition file index.", "qTabMeasurement::SetRunIndex", this, &qTabMeasurement::GetRunIndex)
}
void qTabMeasurement::GetStartingFrameNumber() {
FILE_LOG(logDEBUG) << "Getting Starting Frame Number";
disconnect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this, SLOT(SetStartingFrameNumber(int)));
-
try {
- auto retval = myDet->getStartingFrameNumber();
+ auto retval = det->getStartingFrameNumber().tsquash("Inconsistent starting frame number for all detectors.");
spinStartingFrameNumber->setValue(retval);
} CATCH_DISPLAY ("Could not get starting frame number.", "qTabMeasurement::GetStartingFrameNumber")
-
connect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this, SLOT(SetStartingFrameNumber(int)));
}
void qTabMeasurement::SetStartingFrameNumber(int val) {
FILE_LOG(logINFO) << "Setting Starting frame number to " << val;
-
try {
- myDet->setStartingFrameNumber(val);
+ det->setStartingFrameNumber(val);
} CATCH_HANDLE("Could not set starting frame number.", "qTabMeasurement::SetStartingFrameNumber", this, &qTabMeasurement::GetStartingFrameNumber)
}
@@ -553,28 +474,19 @@ void qTabMeasurement::ResetProgress() {
void qTabMeasurement::UpdateProgress() {
FILE_LOG(logDEBUG) << "Updating progress";
- progressBar->setValue(myPlot->GetProgress());
- lblCurrentFrame->setText(QString::number(myPlot->GetCurrentFrameIndex()));
+ progressBar->setValue(plot->GetProgress());
+ lblCurrentFrame->setText(QString::number(plot->GetCurrentFrameIndex()));
lblCurrentMeasurement->setText(QString::number(currentMeasurement));
}
int qTabMeasurement::VerifyOutputDirectoryError() {
try {
- auto retval = myDet->getFilePath();
- // multi
- if (retval.find('+') == std::string::npos) {
- myDet->setFilePath(retval);
- }
- //single
- else {
- const auto &paths = sls::split(retval, '+');
- for (size_t det = 0; det < paths.size(); ++det) {
- myDet->setFilePath(paths[det], det);
- }
+ auto retval = det->getFilePath();
+ for (auto &it : retval) {
+ det->setFilePath(it);
}
return slsDetectorDefs::OK;
} CATCH_DISPLAY ("Could not set path.", "qTabMeasurement::VerifyOutputDirectoryError")
-
return slsDetectorDefs::FAIL; // for exception
}
@@ -597,7 +509,7 @@ void qTabMeasurement::StartAcquisition() {
}
FILE_LOG(logINFOBLUE) << "Starting Acquisition";
- myPlot->SetRunning(true);
+ plot->SetRunning(true);
isAcquisitionStopped = false;
currentMeasurement = 0;
ResetProgress();
@@ -612,7 +524,7 @@ void qTabMeasurement::StopAcquisition() {
FILE_LOG(logINFORED) << "Stopping Acquisition";
try{
isAcquisitionStopped = true;
- myDet->stopAcquisition();
+ det->stopAcquisition();
} CATCH_DISPLAY("Could not stop acquisition.", "qTabMeasurement::StopAcquisition")
}
@@ -629,13 +541,13 @@ void qTabMeasurement::AcquireFinished() {
// next measurement if acq is not stopped
if (!isAcquisitionStopped && ((currentMeasurement + 1) < numMeasurements)) {
++currentMeasurement;
- myPlot->StartAcquisition();
+ plot->StartAcquisition();
}
// end of acquisition
else {
progressTimer->stop();
Enable(1);
- myPlot->SetRunning(false);
+ plot->SetRunning(false);
btnStart->setEnabled(true);
emit EnableTabsSignal(true);
}
@@ -659,7 +571,7 @@ void qTabMeasurement::Enable(bool enable) {
void qTabMeasurement::Refresh() {
FILE_LOG(logDEBUG) << "**Updating Measurement Tab";
- if (!myPlot->GetIsRunning()) {
+ if (!plot->GetIsRunning()) {
GetTimingMode();
GetNumFrames();
GetExposureTime();
diff --git a/slsDetectorGui/src/qTabPlot.cpp b/slsDetectorGui/src/qTabPlot.cpp
index 0f9bddcc7..85a0b150e 100755
--- a/slsDetectorGui/src/qTabPlot.cpp
+++ b/slsDetectorGui/src/qTabPlot.cpp
@@ -19,8 +19,8 @@ QString qTabPlot::defaultImageYAxisTitle("Pixel");
QString qTabPlot::defaultImageZAxisTitle("Intensity");
-qTabPlot::qTabPlot(QWidget *parent, multiSlsDetector *detector, qDrawPlot *plot) :
- QWidget(parent), myDet(detector), myPlot(plot), is1d(false) {
+qTabPlot::qTabPlot(QWidget *parent, sls::Detector *detector, qDrawPlot *p) :
+ QWidget(parent), det(detector), plot(p), is1d(false) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "Plot ready";
@@ -57,7 +57,7 @@ void qTabPlot::SetupWidgetWindow() {
// enabling according to det type
is1d = false;
- switch(myDet->getDetectorTypeAsEnum()) {
+ switch(det->getDetectorType().squash()) {
case slsDetectorDefs::GOTTHARD:
is1d = true;
break;
@@ -95,27 +95,27 @@ void qTabPlot::Initialization() {
// 1D options
connect(chkSuperimpose, SIGNAL(toggled(bool)), this, SLOT(EnablePersistency(bool)));
- connect(spinPersistency, SIGNAL(valueChanged(int)), myPlot, SLOT(SetPersistency(int)));
- connect(chkPoints, SIGNAL(toggled(bool)), myPlot, SLOT(SetMarkers(bool)));
- connect(chkLines, SIGNAL(toggled(bool)), myPlot, SLOT(SetLines(bool)));
- connect(chk1DLog, SIGNAL(toggled(bool)), myPlot, SLOT(Set1dLogY(bool)));
- connect(chkStatistics, SIGNAL(toggled(bool)), myPlot, SLOT(DisplayStatistics(bool)));
+ connect(spinPersistency, SIGNAL(valueChanged(int)), plot, SLOT(SetPersistency(int)));
+ connect(chkPoints, SIGNAL(toggled(bool)), plot, SLOT(SetMarkers(bool)));
+ connect(chkLines, SIGNAL(toggled(bool)), plot, SLOT(SetLines(bool)));
+ connect(chk1DLog, SIGNAL(toggled(bool)), plot, SLOT(Set1dLogY(bool)));
+ connect(chkStatistics, SIGNAL(toggled(bool)), plot, SLOT(DisplayStatistics(bool)));
// 2D Plot box
- connect(chkInterpolate, SIGNAL(toggled(bool)), myPlot, SLOT(SetInterpolate(bool)));
- connect(chkContour, SIGNAL(toggled(bool)), myPlot, SLOT(SetContour(bool)));
- connect(chkLogz, SIGNAL(toggled(bool)), myPlot, SLOT(SetLogz(bool)));
- connect(chkStatistics_2, SIGNAL(toggled(bool)), myPlot, SLOT(DisplayStatistics(bool)));
+ connect(chkInterpolate, SIGNAL(toggled(bool)), plot, SLOT(SetInterpolate(bool)));
+ connect(chkContour, SIGNAL(toggled(bool)), plot, SLOT(SetContour(bool)));
+ connect(chkLogz, SIGNAL(toggled(bool)), plot, SLOT(SetLogz(bool)));
+ connect(chkStatistics_2, SIGNAL(toggled(bool)), plot, SLOT(DisplayStatistics(bool)));
//pedstal
- connect(chkPedestal, SIGNAL(toggled(bool)), myPlot, SLOT(SetPedestal(bool)));
- connect(btnRecalPedestal, SIGNAL(clicked()), myPlot, SLOT(RecalculatePedestal()));
- connect(chkPedestal_2, SIGNAL(toggled(bool)), myPlot, SLOT(SetPedestal(bool)));
- connect(btnRecalPedestal_2, SIGNAL(clicked()), myPlot, SLOT(RecalculatePedestal()));
+ connect(chkPedestal, SIGNAL(toggled(bool)), plot, SLOT(SetPedestal(bool)));
+ connect(btnRecalPedestal, SIGNAL(clicked()), plot, SLOT(RecalculatePedestal()));
+ connect(chkPedestal_2, SIGNAL(toggled(bool)), plot, SLOT(SetPedestal(bool)));
+ connect(btnRecalPedestal_2, SIGNAL(clicked()), plot, SLOT(RecalculatePedestal()));
//accumulate
- connect(chkAccumulate, SIGNAL(toggled(bool)), myPlot, SLOT(SetAccumulate(bool)));
- connect(btnResetAccumulate, SIGNAL(clicked()), myPlot, SLOT(ResetAccumulate()));
- connect(chkAccumulate_2, SIGNAL(toggled(bool)), myPlot, SLOT(SetAccumulate(bool)));
- connect(btnResetAccumulate_2, SIGNAL(clicked()), myPlot, SLOT(ResetAccumulate()));
+ connect(chkAccumulate, SIGNAL(toggled(bool)), plot, SLOT(SetAccumulate(bool)));
+ connect(btnResetAccumulate, SIGNAL(clicked()), plot, SLOT(ResetAccumulate()));
+ connect(chkAccumulate_2, SIGNAL(toggled(bool)), plot, SLOT(SetAccumulate(bool)));
+ connect(btnResetAccumulate_2, SIGNAL(clicked()), plot, SLOT(ResetAccumulate()));
//binary
connect(chkBinary, SIGNAL(toggled(bool)), this, SLOT(SetBinary()));
connect(chkBinary_2, SIGNAL(toggled(bool)), this, SLOT(SetBinary()));
@@ -125,14 +125,14 @@ void qTabPlot::Initialization() {
connect(spinTo_2, SIGNAL(valueChanged(int)), this, SLOT(SetBinary()));
//gainplot
if (chkGainPlot->isEnabled())
- connect(chkGainPlot, SIGNAL(toggled(bool)), myPlot, SLOT(EnableGainPlot(bool)));
+ connect(chkGainPlot, SIGNAL(toggled(bool)), plot, SLOT(EnableGainPlot(bool)));
// gap pixels
if (chkGapPixels->isEnabled())
connect(chkGapPixels, SIGNAL(toggled(bool)), this, SLOT(SetGapPixels(bool)));
// Save, clone
- connect(btnSave, SIGNAL(clicked()), myPlot, SLOT(SavePlot()));
- connect(btnClone, SIGNAL(clicked()), myPlot, SLOT(ClonePlot()));
+ connect(btnSave, SIGNAL(clicked()), plot, SLOT(SavePlot()));
+ connect(btnClone, SIGNAL(clicked()), plot, SLOT(ClonePlot()));
// Plot Axis
connect(chkTitle, SIGNAL(toggled(bool)), this, SLOT(SetTitles()));
@@ -171,7 +171,7 @@ void qTabPlot::Select1DPlot(bool enable) {
chkZMax->setEnabled(!enable);
dispZMin->setEnabled(!enable);
dispZMax->setEnabled(!enable);
- myPlot->Select1dPlot(enable);
+ plot->Select1dPlot(enable);
SetTitles();
SetXYRange();
if (!is1d) {
@@ -201,7 +201,7 @@ void qTabPlot::SetPlot() {
}
}
- myPlot->SetDataCallBack(plotEnable);
+ plot->SetDataCallBack(plotEnable);
}
void qTabPlot::Set1DPlotOptionsRight() {
@@ -249,9 +249,9 @@ void qTabPlot::EnablePersistency(bool enable) {
lblPersistency->setEnabled(enable);
spinPersistency->setEnabled(enable);
if (enable)
- myPlot->SetPersistency(spinPersistency->value());
+ plot->SetPersistency(spinPersistency->value());
else
- myPlot->SetPersistency(0);
+ plot->SetPersistency(0);
}
void qTabPlot::SetBinary() {
@@ -263,38 +263,31 @@ void qTabPlot::SetBinary() {
lblTo->setEnabled(binary1D);
spinFrom->setEnabled(binary1D);
spinTo->setEnabled(binary1D);
- myPlot->SetBinary(binary1D, spinFrom->value(), spinTo->value());
+ plot->SetBinary(binary1D, spinFrom->value(), spinTo->value());
} else {
FILE_LOG(logINFO) << "Binary Plot " << (binary2D ? "enabled" : "disabled");
lblFrom_2->setEnabled(binary2D);
lblTo_2->setEnabled(binary2D);
spinFrom_2->setEnabled(binary2D);
spinTo_2->setEnabled(binary2D);
- myPlot->SetBinary(binary2D, spinFrom_2->value(), spinTo_2->value());
+ plot->SetBinary(binary2D, spinFrom_2->value(), spinTo_2->value());
}
}
void qTabPlot::GetGapPixels() {
FILE_LOG(logDEBUG) << "Getting gap pixels";
disconnect(chkGapPixels, SIGNAL(toggled(bool)), this, SLOT(SetGapPixels(bool)));
-
try {
- auto retval = myDet->enableGapPixels(-1);
- if (retval == -1) {
- qDefs::Message(qDefs::WARNING, "Gap pixels enable is inconsistent for all detectors.", "qTabPlot::GetGapPixels");
- } else {
- chkGapPixels->setChecked(retval == 0 ? false : true);
- }
+ auto retval = det->getRxAddGapPixels().tsquash("Inconsistent gap pixels enabled for all detectors.");
+ chkGapPixels->setChecked(retval);
} CATCH_DISPLAY ("Could not get gap pixels enable.", "qTabPlot::GetGapPixels")
-
connect(chkGapPixels, SIGNAL(toggled(bool)), this, SLOT(SetGapPixels(bool)));
}
void qTabPlot::SetGapPixels(bool enable) {
FILE_LOG(logINFO) << "Setting Gap Pixels Enable to " << enable;
-
try {
- myDet->enableGapPixels(enable);
+ det->setRxAddGapPixels(enable);
} CATCH_HANDLE("Could not set gap pixels enable.", "qTabPlot::SetGapPixels", this, &qTabPlot::GetGapPixels)
}
@@ -311,31 +304,31 @@ void qTabPlot::SetTitles() {
// title
if (!chkTitle->isChecked() || dispTitle->text().isEmpty()) {
- myPlot->SetPlotTitlePrefix("");
+ plot->SetPlotTitlePrefix("");
dispTitle->setText("");
} else {
- myPlot->SetPlotTitlePrefix(dispTitle->text());
+ plot->SetPlotTitlePrefix(dispTitle->text());
}
// x
if (!chkXAxis->isChecked() || dispXAxis->text().isEmpty()) {
dispXAxis->setText(is1d ? defaultHistXAxisTitle : defaultImageXAxisTitle);
- myPlot->SetXAxisTitle(is1d ? defaultHistXAxisTitle : defaultImageXAxisTitle);
+ plot->SetXAxisTitle(is1d ? defaultHistXAxisTitle : defaultImageXAxisTitle);
} else {
- myPlot->SetXAxisTitle(dispXAxis->text());
+ plot->SetXAxisTitle(dispXAxis->text());
}
// y
if (!chkYAxis->isChecked() || dispYAxis->text().isEmpty()) {
dispYAxis->setText(is1d ? defaultHistYAxisTitle : defaultImageYAxisTitle);
- myPlot->SetYAxisTitle(is1d ? defaultHistYAxisTitle : defaultImageYAxisTitle);
+ plot->SetYAxisTitle(is1d ? defaultHistYAxisTitle : defaultImageYAxisTitle);
} else {
- myPlot->SetYAxisTitle(dispYAxis->text());
+ plot->SetYAxisTitle(dispYAxis->text());
}
// z
if (!chkZAxis->isChecked() || dispZAxis->text().isEmpty()) {
- myPlot->SetZAxisTitle(defaultImageZAxisTitle);
+ plot->SetZAxisTitle(defaultImageZAxisTitle);
dispZAxis->setText(defaultImageZAxisTitle);
} else {
- myPlot->SetZAxisTitle(dispZAxis->text());
+ plot->SetZAxisTitle(dispZAxis->text());
}
connect(chkTitle, SIGNAL(toggled(bool)), this, SLOT(SetTitles()));
@@ -395,7 +388,7 @@ void qTabPlot::SetXYRange() {
}
}
- myPlot->SetXYRangeChanged(disablezoom, xyRange, isRange);
+ plot->SetXYRangeChanged(disablezoom, xyRange, isRange);
emit DisableZoomSignal(disablezoom);
}
@@ -417,20 +410,20 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
chkYMin->setChecked(true);
chkYMax->setChecked(true);
if (dispXMin->text().isEmpty())
- dispXMin->setText(QString::number(myPlot->GetXMinimum()));
+ dispXMin->setText(QString::number(plot->GetXMinimum()));
if (dispXMax->text().isEmpty())
- dispXMax->setText(QString::number(myPlot->GetXMaximum()));
+ dispXMax->setText(QString::number(plot->GetXMaximum()));
if (dispYMin->text().isEmpty())
- dispYMin->setText(QString::number(myPlot->GetYMinimum()));
+ dispYMin->setText(QString::number(plot->GetYMinimum()));
if (dispYMax->text().isEmpty())
- dispYMax->setText(QString::number(myPlot->GetYMaximum()));
+ dispYMax->setText(QString::number(plot->GetYMaximum()));
// calculate ideal aspect ratio with previous limits
double ranges[4];
- ranges[qDefs::XMIN] = myPlot->GetXMinimum();
- ranges[qDefs::XMAX] = myPlot->GetXMaximum();
- ranges[qDefs::YMIN] = myPlot->GetYMinimum();
- ranges[qDefs::YMAX] = myPlot->GetYMaximum();
+ ranges[qDefs::XMIN] = plot->GetXMinimum();
+ ranges[qDefs::XMAX] = plot->GetXMaximum();
+ ranges[qDefs::YMIN] = plot->GetYMinimum();
+ ranges[qDefs::YMAX] = plot->GetYMaximum();
double idealAspectratio = (ranges[qDefs::XMAX] - ranges[qDefs::XMIN]) / (ranges[qDefs::YMAX] - ranges[qDefs::YMIN]);
FILE_LOG(logDEBUG) << "Ideal Aspect ratio: " << idealAspectratio << " for x(" << ranges[qDefs::XMIN] << " - " << ranges[qDefs::XMAX] << "), y(" << ranges[qDefs::YMIN] << " - " << ranges[qDefs::YMAX] << ")";
@@ -454,7 +447,7 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
double newval = 0;
if (dimension == static_cast(slsDetectorDefs::X)) {
newval = idealAspectratio * (ranges[qDefs::YMAX] - ranges[qDefs::YMIN]) + ranges[qDefs::XMIN];
- if (newval <= myPlot->GetXMaximum()) {
+ if (newval <= plot->GetXMaximum()) {
ranges[qDefs::XMAX] = newval;
dispXMax->setText(QString::number(newval));
FILE_LOG(logDEBUG) << "New XMax: " << newval;
@@ -468,7 +461,7 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
// adjust y
else {
newval = ((ranges[qDefs::XMAX] - ranges[qDefs::XMIN]) / idealAspectratio) + ranges[qDefs::YMIN];
- if (newval <= myPlot->GetYMaximum()) {
+ if (newval <= plot->GetYMaximum()) {
ranges[qDefs::YMAX] = newval;
dispYMax->setText(QString::number(newval));
FILE_LOG(logDEBUG) << "New YMax: " << newval;
@@ -491,7 +484,7 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
bool isRange[4] {true, true, true, true};
- myPlot->SetXYRangeChanged(true, ranges, isRange);
+ plot->SetXYRangeChanged(true, ranges, isRange);
emit DisableZoomSignal(true);
}
@@ -509,7 +502,7 @@ void qTabPlot::SetZRange() {
FILE_LOG(logDEBUG) << "Setting zmax to " << val;
zRange[1] = val;
}
- myPlot->SetZRange(zRange, isZRange);
+ plot->SetZRange(zRange, isZRange);
}
void qTabPlot::GetStreamingFrequency() {
@@ -518,26 +511,18 @@ void qTabPlot::GetStreamingFrequency() {
disconnect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetStreamingFrequency()));
disconnect(spinTimeGap, SIGNAL(editingFinished()), this, SLOT(SetStreamingFrequency()));
disconnect(spinNthFrame, SIGNAL(editingFinished()), this, SLOT(SetStreamingFrequency()));
-
try {
- int freq = myDet->setReceiverStreamingFrequency(-1);
- if (freq < 0) {
- qDefs::Message(qDefs::WARNING, "Streaming frequency is inconsistent for all detectors.", "qTabPlot::GetStreamingFrequency");
- }
+ int freq = det->getRxZmqFrequency().tsquash("Inconsistent receiver zmq streaming frequency for all detectors.");
// time interval
- else if (freq == 0) {
+ if (freq == 0) {
comboFrequency->setCurrentIndex(0);
stackedTimeInterval->setCurrentIndex(0);
try {
- int timeMs = myDet->setReceiverStreamingTimer(-1);
- if (freq < 0) {
- qDefs::Message(qDefs::WARNING, "Streaming timer is inconsistent for all detectors.", "qTabPlot::GetStreamingFrequency");
- } else {
- double timeS = static_cast(timeMs) / 1000.00;
- auto time = qDefs::getCorrectTime(timeS);
- spinTimeGap->setValue(time.first);
- comboTimeGapUnit->setCurrentIndex(static_cast(time.second));
- }
+ int timeMs = det->getRxZmqTimer().tsquash("Inconsistent receiver zmq streaming timer for all detectors.");
+ auto timeNS = qDefs::getNSTime(std::make_pair(static_cast(timeMs), qDefs::MILLISECONDS));
+ auto time = qDefs::getUserFriendlyTime(timeNS);
+ spinTimeGap->setValue(time.first);
+ comboTimeGapUnit->setCurrentIndex(static_cast(time.second));
} CATCH_DISPLAY ("Could not get streaming timer.", "qTabPlot::GetStreamingFrequency")
}
// every nth frame
@@ -547,12 +532,10 @@ void qTabPlot::GetStreamingFrequency() {
spinNthFrame->setValue(freq);
}
} CATCH_DISPLAY ("Could not get streaming frequency.", "qTabPlot::GetStreamingFrequency")
-
connect(comboFrequency, SIGNAL(currentIndexChanged(int)), this, SLOT(SetStreamingFrequency()));
connect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetStreamingFrequency()));
connect(spinTimeGap, SIGNAL(editingFinished()), this, SLOT(SetStreamingFrequency()));
connect(spinNthFrame, SIGNAL(editingFinished()), this, SLOT(SetStreamingFrequency()));
-
}
void qTabPlot::SetStreamingFrequency() {
@@ -564,11 +547,11 @@ void qTabPlot::SetStreamingFrequency() {
try {
if (frequency) {
FILE_LOG(logINFO) << "Setting Streaming Frequency to " << freqVal;
- myDet->setReceiverStreamingFrequency(freqVal);
+ det->setRxZmqFrequency(freqVal);
} else {
FILE_LOG(logINFO) << "Setting Streaming Timer to " << timeVal << " " << qDefs::getUnitString(timeUnit);
- double timeMS = qDefs::getMSTime(timeUnit, timeVal);
- myDet->setReceiverStreamingTimer(timeMS);
+ auto timeMS = qDefs::getMSTime(std::make_pair(timeVal, timeUnit));
+ det->setRxZmqTimer(timeMS.count());
}
} CATCH_HANDLE("Could not set streaming frequency/ timer.", "qTabPlot::SetStreamingFrequency", this, &qTabPlot::GetStreamingFrequency)
}
@@ -576,7 +559,7 @@ void qTabPlot::SetStreamingFrequency() {
void qTabPlot::Refresh() {
FILE_LOG(logDEBUG) << "**Updating Plot Tab";
- if (!myPlot->GetIsRunning()) {
+ if (!plot->GetIsRunning()) {
boxPlotType->setEnabled(true);
// streaming frequency
@@ -585,7 +568,7 @@ void qTabPlot::Refresh() {
}
GetStreamingFrequency();
// gain plot, gap pixels enable
- switch(myDet->getDetectorTypeAsEnum()) {
+ switch(det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
chkGapPixels->setEnabled(true);
GetGapPixels();
diff --git a/slsDetectorGui/src/qTabSettings.cpp b/slsDetectorGui/src/qTabSettings.cpp
index 7adc4ad87..6e6eb5d1f 100755
--- a/slsDetectorGui/src/qTabSettings.cpp
+++ b/slsDetectorGui/src/qTabSettings.cpp
@@ -6,7 +6,7 @@
#include
#include
-qTabSettings::qTabSettings(QWidget *parent, multiSlsDetector *detector): QWidget(parent), myDet(detector) {
+qTabSettings::qTabSettings(QWidget *parent, sls::Detector *detector): QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
FILE_LOG(logDEBUG) << "Settings ready";
@@ -17,7 +17,7 @@ qTabSettings::~qTabSettings() {}
void qTabSettings::SetupWidgetWindow() {
// enabling according to det type
- switch(myDet->getDetectorTypeAsEnum()) {
+ switch(det->getDetectorType().squash()) {
case slsDetectorDefs::MOENCH:
lblSettings->setEnabled(false);
comboSettings->setEnabled(false);
@@ -57,7 +57,7 @@ void qTabSettings::SetupDetectorSettings() {
item[i] = model->itemFromIndex(index[i]);
item[i]->setEnabled(false);
}
- switch (myDet->getDetectorTypeAsEnum()) {
+ switch (det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
item[(int)STANDARD]->setEnabled(true);
item[(int)HIGHGAIN]->setEnabled(true);
@@ -106,13 +106,9 @@ void qTabSettings::Initialization() {
void qTabSettings::GetSettings() {
FILE_LOG(logDEBUG) << "Getting settings";
disconnect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSettings(int)));
-
try{
- auto retval = myDet->getSettings(-1);
+ auto retval = det->getSettings().tsquash("Inconsistent settings for all detectors.");
switch (retval) {
- case -1:
- qDefs::Message(qDefs::WARNING, "Settings are inconsistent for all detectors.", "qTabSettings::GetSettings");
- break;
case slsDetectorDefs::UNDEFINED:
comboSettings->setCurrentIndex(UNDEFINED);
break;
@@ -121,26 +117,22 @@ void qTabSettings::GetSettings() {
break;
default:
if ((int)retval < -1 || (int)retval >= NUMSETTINGS) {
- qDefs::Message(qDefs::WARNING, std::string("Unknown settings: ") + std::to_string(retval), "qTabSettings::GetSettings");
- } else {
- comboSettings->setCurrentIndex(retval);
+ throw sls::RuntimeError(std::string("Unknown settings: ") + std::to_string(retval));
}
+ comboSettings->setCurrentIndex(retval);
break;
}
} CATCH_DISPLAY ("Could not get settings.", "qTabSettings::GetSettings")
-
connect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSettings(int)));
}
void qTabSettings::SetSettings(int index) {
// settings
auto val = static_cast(index);
- FILE_LOG(logINFO) << "Setting Settings to " << myDet->slsDetectorDefs::getDetectorSettings(val);
-
+ FILE_LOG(logINFO) << "Setting Settings to " << slsDetectorDefs::getDetectorSettings(val);
try {
- myDet->setSettings(val);
+ det->setSettings(val);
} CATCH_HANDLE ("Could not set settings.", "qTabSettings::SetSettings", this, &qTabSettings::GetSettings)
-
// threshold
if (spinThreshold->isEnabled()) {
SetThresholdEnergy(spinThreshold->value());
@@ -150,15 +142,10 @@ void qTabSettings::SetSettings(int index) {
void qTabSettings::GetDynamicRange() {
FILE_LOG(logDEBUG) << "Getting dynamic range";
disconnect(comboDynamicRange, SIGNAL(activated(int)), this, SLOT(SetDynamicRange(int)));
-
- try {
- auto retval = myDet->setDynamicRange(-1);
-
+ try {
+ auto retval = det->getDynamicRange().tsquash("Inconsistent dynamic range for all detectors.");
// set the final value on gui
switch (retval) {
- case -1:
- qDefs::Message(qDefs::WARNING, "Dynamic Range is inconsistent for all detectors.", "qTabSettings::GetDynamicRange");
- break;
case 32:
comboDynamicRange->setCurrentIndex(DYNAMICRANGE_32);
break;
@@ -172,11 +159,9 @@ void qTabSettings::GetDynamicRange() {
comboDynamicRange->setCurrentIndex(DYNAMICRANGE_4);
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown dynamic range: ") + std::to_string(retval), "qTabSettings::GetDynamicRange");
- break;
+ throw sls::RuntimeError(std::string("Unknown dynamic range: ") + std::to_string(retval));
}
} CATCH_DISPLAY ("Could not get dynamic range.", "qTabSettings::GetDynamicRange")
-
connect(comboDynamicRange, SIGNAL(activated(int)), this,SLOT(SetDynamicRange(int)));
}
@@ -185,20 +170,19 @@ void qTabSettings::SetDynamicRange(int index) {
try {
switch (index) {
case DYNAMICRANGE_32:
- myDet->setDynamicRange(32);
+ det->setDynamicRange(32);
break;
case DYNAMICRANGE_16:
- myDet->setDynamicRange(16);
+ det->setDynamicRange(16);
break;
case DYNAMICRANGE_8:
- myDet->setDynamicRange(8);
+ det->setDynamicRange(8);
break;
case DYNAMICRANGE_4:
- myDet->setDynamicRange(4);
+ det->setDynamicRange(4);
break;
default:
- qDefs::Message(qDefs::WARNING, std::string("Unknown dynamic range: ") + std::to_string(index), "qTabSettings::SetDynamicRange");
- break;
+ throw sls::RuntimeError(std::string("Unknown dynamic range: ") + std::to_string(index));
}
} CATCH_HANDLE ("Could not set dynamic range.", "qTabSettings::SetDynamicRange", this, &qTabSettings::GetDynamicRange)
}
@@ -206,27 +190,18 @@ void qTabSettings::SetDynamicRange(int index) {
void qTabSettings::GetThresholdEnergy() {
FILE_LOG(logDEBUG) << "Getting theshold energy";
disconnect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetThresholdEnergy(int)));
-
try {
- auto retval = myDet->getThresholdEnergy();
- /*if (retval == -1) { commenting out as default is -1, handle this when API changes
- qDefs::Message(qDefs::WARNING, "Threshold Energy is inconsistent for all detectors.", "qTabDataOutput::GetThresholdEnergy");
- spinThreshold->setValue(-1);
- } else {
- spinThreshold->setValue(retval);
- }*/
+ auto retval = det->getThresholdEnergy().tsquash("Inconsistent threhsold energy for all detectors.");
spinThreshold->setValue(retval);
} CATCH_DISPLAY ("Could not get threshold energy.", "qTabDataOutput::GetThresholdEnergy")
-
connect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetThresholdEnergy(int)));
}
void qTabSettings::SetThresholdEnergy(int index) {
FILE_LOG(logINFO) << "Setting Threshold Energy to " << index << " eV";
try {
- myDet->setThresholdEnergy(index);
+ det->setThresholdEnergy(index);
} CATCH_DISPLAY ("Could not get threshold energy.", "qTabSettings::SetThresholdEnergy")
-
// set the right value anyway (due to tolerance)
GetThresholdEnergy();
}
diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h
index e74a07ed6..8f2b761d1 100644
--- a/slsDetectorSoftware/include/Detector.h
+++ b/slsDetectorSoftware/include/Detector.h
@@ -61,7 +61,7 @@ class Detector {
Result getReceiverVersion(Positions pos = {}) const;
Result getDetectorType(Positions pos = {}) const;
-
+
/** Gets the total number of detectors */
int size() const;
@@ -233,7 +233,7 @@ class Detector {
*/
void stopAcquisition();
- /**
+ /** TODO: initially was getting acq flag, if set, check if detctor idle, then set, else exception & abort
* Clears the acquiring flag. This has to be done manually
* after an acquisition was aborted.
*/
@@ -249,7 +249,7 @@ class Detector {
Result getStartingFrameNumber(Positions pos = {}) const;
/** [Eiger][Jungfrau] */
- void setStartingFrameNumber(uint64_t value, Positions pos);
+ void setStartingFrameNumber(uint64_t value, Positions pos = {});
/** [Eiger] Sends an internal software trigger to the detector */
void sendSoftwareTrigger(Positions pos = {});
@@ -655,10 +655,12 @@ class Detector {
/** [Eiger] deadtime in ns, 0 = disabled */
Result getRateCorrection(Positions pos = {}) const;
+ /** [Eiger] Sets default rate correction from trimbit file */
+ void setDefaultRateCorrection(Positions pos = {});
+
/** //TODO: default, get, set
* [Eiger] Set Rate correction
- * 0 disable correction, < 0: default dead time from trimbit file, > 0
- * custom deadtime (advanced)
+ * 0 disable correction, > 0 custom deadtime, cannot be -1
*/
void setRateCorrection(ns dead_time, Positions pos = {});
diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h
index f486d0010..c19242091 100755
--- a/slsDetectorSoftware/include/multiSlsDetector.h
+++ b/slsDetectorSoftware/include/multiSlsDetector.h
@@ -1552,11 +1552,16 @@ class multiSlsDetector : public virtual slsDetectorDefs {
*/
int setAutoComparatorDisableMode(int ival = -1, int detPos = -1); //
+ /**
+ * Set Default Rate correction from trimbit file ( Eiger)
+ * @param detPos -1 for all detectors in list or specific detector position
+ */
+ void setDefaultRateCorrection(int detPos = -1); //
+
/**
* Set Rate correction ( Eiger)
* @param t dead time in ns - if 0 disable correction,
- * if >0 set dead time to t, if < 0 set deadtime to default dead time
- * for current settings
+ * if >0 set dead time to t, cannot be < 0
* @param detPos -1 for all detectors in list or specific detector position
*/
void setRateCorrection(int64_t t = 0, int detPos = -1); //
diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h
index 1afa9bf99..89031e58b 100755
--- a/slsDetectorSoftware/include/slsDetector.h
+++ b/slsDetectorSoftware/include/slsDetector.h
@@ -1280,10 +1280,15 @@ class slsDetector : public virtual slsDetectorDefs {
*/
sls_detector_module getModule();
+ /**
+ * Set Default Rate correction from trimbit file(Eiger)
+ */
+ void setDefaultRateCorrection();
+
/**
* Set Rate correction (Eiger)
* @param t dead time in ns - if 0 disable correction,
- * if >0 set dead time to t, if < 0 set deadtime to default dead time
+ * if >0 set dead time to t, cannot be < 0
* for current settings
*/
void setRateCorrection(int64_t t = 0);
diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp
index 440d055db..981ca48bd 100644
--- a/slsDetectorSoftware/src/Detector.cpp
+++ b/slsDetectorSoftware/src/Detector.cpp
@@ -250,14 +250,14 @@ void Detector::setTimingMode(defs::timingMode value, Positions pos) {
void Detector::acquire() { pimpl->acquire(); }
void Detector::startAcquisition() {
- if (getUseReceiverFlag({}).squash())
+ if (getUseReceiverFlag().squash(true))
pimpl->Parallel(&slsDetector::startReceiver, {});
pimpl->Parallel(&slsDetector::startAcquisition, {});
}
void Detector::stopAcquisition() {
pimpl->Parallel(&slsDetector::stopAcquisition, {});
- if (getUseReceiverFlag({}).squash()) // TODO: problem for acquire()
+ if (getUseReceiverFlag().squash(true))
pimpl->Parallel(&slsDetector::stopReceiver, {});
}
@@ -768,9 +768,9 @@ void Detector::setRxAddGapPixels(bool enable) {
Result Detector::getParallelMode(Positions pos) const {
auto res = pimpl->Parallel(&slsDetector::setReadOutFlags, pos,
defs::GET_READOUT_FLAGS);
- Result booleanRes;
- for (unsigned int i = 0; i < res.size(); ++i) {
- booleanRes[i] = (res[i] & defs::PARALLEL) ? true : false;
+ Result booleanRes(res.size());
+ for (size_t i = 0; i < res.size(); ++i) {
+ booleanRes[i] = res[i] & defs::PARALLEL;
}
return booleanRes;
}
@@ -783,9 +783,9 @@ void Detector::setParallelMode(bool value, Positions pos) {
Result Detector::getOverFlowMode(Positions pos) const {
auto res = pimpl->Parallel(&slsDetector::setReadOutFlags, pos,
defs::GET_READOUT_FLAGS);
- Result booleanRes;
- for (unsigned int i = 0; i < res.size(); ++i) {
- booleanRes[i] = (res[i] & defs::SHOW_OVERFLOW) ? true : false;
+ Result booleanRes(res.size());
+ for (size_t i = 0; i < res.size(); ++i) {
+ booleanRes[i] = res[i] & defs::SHOW_OVERFLOW;
}
return booleanRes;
}
@@ -824,6 +824,10 @@ Result Detector::getRateCorrection(Positions pos) const {
return pimpl->Parallel(&slsDetector::getRateCorrection, pos);
}
+void Detector::setDefaultRateCorrection(Positions pos) {
+ pimpl->Parallel(&slsDetector::setDefaultRateCorrection, pos);
+}
+
void Detector::setRateCorrection(ns dead_time, Positions pos) {
pimpl->Parallel(&slsDetector::setRateCorrection, pos, dead_time.count());
}
diff --git a/slsDetectorSoftware/src/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp
index 2183dcec7..8454bfaf7 100755
--- a/slsDetectorSoftware/src/multiSlsDetector.cpp
+++ b/slsDetectorSoftware/src/multiSlsDetector.cpp
@@ -2358,7 +2358,20 @@ int multiSlsDetector::setAutoComparatorDisableMode(int ival, int detPos) {
return sls::minusOneIfDifferent(r);
}
+void multiSlsDetector::setDefaultRateCorrection(int detPos) {
+ // single
+ if (detPos >= 0) {
+ detectors[detPos]->setDefaultRateCorrection();
+ }
+
+ // multi
+ parallelCall(&slsDetector::setDefaultRateCorrection);
+}
+
void multiSlsDetector::setRateCorrection(int64_t t, int detPos) {
+ if (t < 0) {
+ throw sls::RuntimeError("Dead time has to be greater or equal to 0");
+ }
// single
if (detPos >= 0) {
detectors[detPos]->setRateCorrection(t);
diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp
index d21636c59..94c151342 100755
--- a/slsDetectorSoftware/src/slsDetector.cpp
+++ b/slsDetectorSoftware/src/slsDetector.cpp
@@ -2719,6 +2719,13 @@ sls_detector_module slsDetector::getModule() {
return myMod;
}
+void slsDetector::setDefaultRateCorrection() {
+ FILE_LOG(logDEBUG1) << "Setting Default Rate Correction";
+ int64_t arg = -1;
+ sendToDetector(F_SET_RATE_CORRECT, arg, nullptr);
+ shm()->deadTime = -1;
+}
+
void slsDetector::setRateCorrection(int64_t t) {
FILE_LOG(logDEBUG1) << "Setting Rate Correction to " << t;
sendToDetector(F_SET_RATE_CORRECT, t, nullptr);
diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h
index cc57630a4..41cded13f 100644
--- a/slsSupportLib/include/versionAPI.h
+++ b/slsSupportLib/include/versionAPI.h
@@ -7,7 +7,6 @@
#define APICTB 0x190821
#define APIGOTTHARD 0x190821
#define APIJUNGFRAU 0x190821
-#define APIEIGER 0x190821
#define APIMYTHEN3 0x190822
-
+#define APIEIGER 0x190823
#define APIGOTTHARD2 0x190826