mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
exposing receiver thread ids to client (#102)
* exposing receiver thread ids to client Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
This commit is contained in:
@ -12,6 +12,7 @@ target_link_libraries(_slsdet PUBLIC
|
||||
slsDetectorShared
|
||||
slsReceiverShared
|
||||
slsSupportLib
|
||||
${ZeroMQ_LIBRARIES}
|
||||
)
|
||||
|
||||
|
||||
|
@ -639,7 +639,7 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@property
|
||||
def vthreshold(self):
|
||||
return element_if_equal(self.getDAC(dacIndex.THRESHOLD))
|
||||
return element_if_equal(self.getDAC(dacIndex.VTHRESHOLD, False))
|
||||
|
||||
@property
|
||||
def type(self):
|
||||
|
@ -60,22 +60,22 @@ class EigerDacs(DetectorDacs):
|
||||
"""
|
||||
Eiger specific dacs
|
||||
"""
|
||||
_dacs = [('vsvp', dacIndex.SVP,0, 4000, 0),
|
||||
('vtr', dacIndex.VTR,0, 4000, 2500),
|
||||
('vrf', dacIndex.VRF,0, 4000, 3300),
|
||||
('vrs', dacIndex.VRS,0, 4000, 1400),
|
||||
('vsvn', dacIndex.SVN,0, 4000, 4000),
|
||||
_dacs = [('vsvp', dacIndex.VSVP,0, 4000, 0),
|
||||
('vtrim', dacIndex.VTRIM,0, 4000, 2500),
|
||||
('vrpreamp', dacIndex.VRPREAMP,0, 4000, 3300),
|
||||
('vrshaper', dacIndex.VRSHAPER,0, 4000, 1400),
|
||||
('vsvn', dacIndex.VSVN,0, 4000, 4000),
|
||||
('vtgstv', dacIndex.VTGSTV,0, 4000, 2556),
|
||||
('vcmp_ll', dacIndex.VCMP_LL,0, 4000, 1500),
|
||||
('vcmp_lr', dacIndex.VCMP_LR,0, 4000, 1500),
|
||||
('vcall', dacIndex.CAL,0, 4000, 4000),
|
||||
('vcal', dacIndex.VCAL,0, 4000, 4000),
|
||||
('vcmp_rl', dacIndex.VCMP_RL,0, 4000, 1500),
|
||||
('rxb_rb', dacIndex.RXB_RB,0, 4000, 1100),
|
||||
('rxb_lb', dacIndex.RXB_LB,0, 4000, 1100),
|
||||
('vcmp_rr', dacIndex.VCMP_RR,0, 4000, 1500),
|
||||
('vcp', dacIndex.VCP,0, 4000, 200),
|
||||
('vcn', dacIndex.VCN,0, 4000, 2000),
|
||||
('vis', dacIndex.VIS,0, 4000, 1550),
|
||||
('vishaper', dacIndex.VISHAPER,0, 4000, 1550),
|
||||
('iodelay', dacIndex.IO_DELAY,0, 4000, 660)]
|
||||
_dacnames = [_d[0] for _d in _dacs]
|
||||
|
||||
|
@ -13,49 +13,32 @@ import _slsdet
|
||||
dacIndex = _slsdet.slsDetectorDefs.dacIndex
|
||||
from .detector_property import DetectorProperty
|
||||
|
||||
# vcassh 1200,
|
||||
# vth2 2800,
|
||||
# vshaper 1280,
|
||||
# vshaperneg 2800,
|
||||
# vipre_out 1220,
|
||||
# vth3 2800,
|
||||
# vth1 2800,
|
||||
# vicin 1708,
|
||||
# vcas 1800,
|
||||
# vpreamp 1100,
|
||||
# vpl 1100,
|
||||
# vipre 2624,
|
||||
# viinsh 1708,
|
||||
# vph 1712,
|
||||
# vtrim 2800,
|
||||
# vdcsh 800
|
||||
|
||||
|
||||
# @freeze
|
||||
class Mythen3Dacs(DetectorDacs):
|
||||
"""
|
||||
Jungfrau specific DACs
|
||||
"""
|
||||
_dacs = [('vcassh', dacIndex.CASSH, 0, 4000, 1220),
|
||||
_dacs = [('vcassh', dacIndex.VCASSH, 0, 4000, 1220),
|
||||
('vth2', dacIndex.VTH2, 0, 4000, 2800),
|
||||
('vshaper', dacIndex.SHAPER1, 0, 4000, 1280),
|
||||
('vshaperneg', dacIndex.SHAPER2, 0, 4000, 2800),
|
||||
('vrshaper', dacIndex.VRSHAPER, 0, 4000, 1280),
|
||||
('vrshaper_n', dacIndex.VRSHAPER_N, 0, 4000, 2800),
|
||||
('vipre_out', dacIndex.VIPRE_OUT, 0, 4000, 1220),
|
||||
('vth3', dacIndex.VTH3, 0, 4000, 2800),
|
||||
('vth1', dacIndex.THRESHOLD, 0, 4000, 2800),
|
||||
('vth1', dacIndex.VTH1, 0, 4000, 2800),
|
||||
('vicin', dacIndex.VICIN, 0, 4000, 1708),
|
||||
('vcas', dacIndex.CAS, 0, 4000, 1800),
|
||||
('vpreamp', dacIndex.PREAMP, 0, 4000, 1100),
|
||||
('vpl', dacIndex.VPL, 0, 4000, 1100),
|
||||
('vcas', dacIndex.VCAS, 0, 4000, 1800),
|
||||
('vrpreamp', dacIndex.VRPREAMP, 0, 4000, 1100),
|
||||
('vcal_n', dacIndex.VCAL_N, 0, 4000, 1100),
|
||||
('vipre', dacIndex.VIPRE, 0, 4000, 2624),
|
||||
('viinsh', dacIndex.VIINSH, 0, 4000, 1708),
|
||||
('vph', dacIndex.CALIBRATION_PULSE, 0, 4000, 1712),
|
||||
('vtrim', dacIndex.TRIMBIT_SIZE, 0, 4000, 2800),
|
||||
('vishaper', dacIndex.VISHAPER, 0, 4000, 1708),
|
||||
('vcal_p', dacIndex.VCAL_P, 0, 4000, 1712),
|
||||
('vtrim', dacIndex.VTRIM, 0, 4000, 2800),
|
||||
('vdcsh', dacIndex.VDCSH, 0, 4000, 800),
|
||||
]
|
||||
_dacnames = [_d[0] for _d in _dacs]
|
||||
|
||||
|
||||
#vthreshold??
|
||||
|
||||
|
||||
@freeze
|
||||
|
@ -86,6 +86,9 @@ void init_det(py::module &m) {
|
||||
.def("setDetectorSize",
|
||||
(void (Detector::*)(const defs::xy)) & Detector::setDetectorSize,
|
||||
py::arg())
|
||||
.def("getSettingsList",
|
||||
(std::vector<defs::detectorSettings>(Detector::*)() const) &
|
||||
Detector::getSettingsList)
|
||||
.def("getSettings",
|
||||
(Result<defs::detectorSettings>(Detector::*)(sls::Positions)
|
||||
const) &
|
||||
@ -107,6 +110,12 @@ void init_det(py::module &m) {
|
||||
(void (Detector::*)(int, sls::Positions)) &
|
||||
Detector::setAllTrimbits,
|
||||
py::arg(), py::arg() = Positions{})
|
||||
.def("getGapPixelsinCallback",
|
||||
(bool (Detector::*)() const) & Detector::getGapPixelsinCallback)
|
||||
.def("setGapPixelsinCallback",
|
||||
(void (Detector::*)(const bool)) &
|
||||
Detector::setGapPixelsinCallback,
|
||||
py::arg())
|
||||
.def("registerAcquisitionFinishedCallback",
|
||||
(void (Detector::*)(void (*)(double, int, void *), void *)) &
|
||||
Detector::registerAcquisitionFinishedCallback,
|
||||
@ -117,12 +126,6 @@ void init_det(py::module &m) {
|
||||
void (*)(detectorData *, uint64_t, uint32_t, void *), void *)) &
|
||||
Detector::registerDataCallback,
|
||||
py::arg(), py::arg())
|
||||
.def("getGapPixelsinCallback",
|
||||
(bool (Detector::*)() const) & Detector::getGapPixelsinCallback)
|
||||
.def("setGapPixelsinCallback",
|
||||
(void (Detector::*)(const bool)) &
|
||||
Detector::setGapPixelsinCallback,
|
||||
py::arg())
|
||||
.def("getNumberOfFrames",
|
||||
(Result<int64_t>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getNumberOfFrames,
|
||||
@ -295,6 +298,8 @@ void init_det(py::module &m) {
|
||||
(Result<int>(Detector::*)(defs::dacIndex, sls::Positions) const) &
|
||||
Detector::getTemperature,
|
||||
py::arg(), py::arg() = Positions{})
|
||||
.def("getDacList", (std::vector<defs::dacIndex>(Detector::*)() const) &
|
||||
Detector::getDacList)
|
||||
.def("getDAC",
|
||||
(Result<int>(Detector::*)(defs::dacIndex, bool, sls::Positions)
|
||||
const) &
|
||||
@ -563,6 +568,10 @@ void init_det(py::module &m) {
|
||||
(Result<sls::IpAddr>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getRxLastClientIP,
|
||||
py::arg() = Positions{})
|
||||
.def("getRxThreadIds",
|
||||
(Result<std::array<pid_t, 8>>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getRxThreadIds,
|
||||
py::arg() = Positions{})
|
||||
.def("getFileFormat",
|
||||
(Result<defs::fileFormat>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getFileFormat,
|
||||
@ -1136,7 +1145,7 @@ void init_det(py::module &m) {
|
||||
Detector::setExternalSamplingSource,
|
||||
py::arg(), py::arg() = Positions{})
|
||||
.def("getExternalSampling",
|
||||
(Result<int>(Detector::*)(sls::Positions) const) &
|
||||
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||
Detector::getExternalSampling,
|
||||
py::arg() = Positions{})
|
||||
.def("setExternalSampling",
|
||||
|
@ -88,15 +88,42 @@ void init_enums(py::module &m) {
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::dacIndex>(Defs, "dacIndex")
|
||||
.value("THRESHOLD", slsDetectorDefs::dacIndex::THRESHOLD)
|
||||
.value("CALIBRATION_PULSE",
|
||||
slsDetectorDefs::dacIndex::CALIBRATION_PULSE)
|
||||
.value("TRIMBIT_SIZE", slsDetectorDefs::dacIndex::TRIMBIT_SIZE)
|
||||
.value("PREAMP", slsDetectorDefs::dacIndex::PREAMP)
|
||||
.value("SHAPER1", slsDetectorDefs::dacIndex::SHAPER1)
|
||||
.value("SHAPER2", slsDetectorDefs::dacIndex::SHAPER2)
|
||||
.value("TEMPERATURE_ADC", slsDetectorDefs::dacIndex::TEMPERATURE_ADC)
|
||||
.value("TEMPERATURE_FPGA", slsDetectorDefs::dacIndex::TEMPERATURE_FPGA)
|
||||
.value("DAC_0", slsDetectorDefs::dacIndex::DAC_0)
|
||||
.value("DAC_1", slsDetectorDefs::dacIndex::DAC_1)
|
||||
.value("DAC_2", slsDetectorDefs::dacIndex::DAC_2)
|
||||
.value("DAC_3", slsDetectorDefs::dacIndex::DAC_3)
|
||||
.value("DAC_4", slsDetectorDefs::dacIndex::DAC_4)
|
||||
.value("DAC_5", slsDetectorDefs::dacIndex::DAC_5)
|
||||
.value("DAC_6", slsDetectorDefs::dacIndex::DAC_6)
|
||||
.value("DAC_7", slsDetectorDefs::dacIndex::DAC_7)
|
||||
.value("DAC_8", slsDetectorDefs::dacIndex::DAC_8)
|
||||
.value("DAC_9", slsDetectorDefs::dacIndex::DAC_9)
|
||||
.value("DAC_10", slsDetectorDefs::dacIndex::DAC_10)
|
||||
.value("DAC_11", slsDetectorDefs::dacIndex::DAC_11)
|
||||
.value("DAC_12", slsDetectorDefs::dacIndex::DAC_12)
|
||||
.value("DAC_13", slsDetectorDefs::dacIndex::DAC_13)
|
||||
.value("DAC_14", slsDetectorDefs::dacIndex::DAC_14)
|
||||
.value("DAC_15", slsDetectorDefs::dacIndex::DAC_15)
|
||||
.value("DAC_16", slsDetectorDefs::dacIndex::DAC_16)
|
||||
.value("DAC_17", slsDetectorDefs::dacIndex::DAC_17)
|
||||
.value("VSVP", slsDetectorDefs::dacIndex::VSVP)
|
||||
.value("VTRIM", slsDetectorDefs::dacIndex::VTRIM)
|
||||
.value("VRPREAMP", slsDetectorDefs::dacIndex::VRPREAMP)
|
||||
.value("VRSHAPER", slsDetectorDefs::dacIndex::VRSHAPER)
|
||||
.value("VSVN", slsDetectorDefs::dacIndex::VSVN)
|
||||
.value("VTGSTV", slsDetectorDefs::dacIndex::VTGSTV)
|
||||
.value("VCMP_LL", slsDetectorDefs::dacIndex::VCMP_LL)
|
||||
.value("VCMP_LR", slsDetectorDefs::dacIndex::VCMP_LR)
|
||||
.value("VCAL", slsDetectorDefs::dacIndex::VCAL)
|
||||
.value("VCMP_RL", slsDetectorDefs::dacIndex::VCMP_RL)
|
||||
.value("RXB_RB", slsDetectorDefs::dacIndex::RXB_RB)
|
||||
.value("RXB_LB", slsDetectorDefs::dacIndex::RXB_LB)
|
||||
.value("VCMP_RR", slsDetectorDefs::dacIndex::VCMP_RR)
|
||||
.value("VCP", slsDetectorDefs::dacIndex::VCP)
|
||||
.value("VCN", slsDetectorDefs::dacIndex::VCN)
|
||||
.value("VISHAPER", slsDetectorDefs::dacIndex::VISHAPER)
|
||||
.value("VTHRESHOLD", slsDetectorDefs::dacIndex::VTHRESHOLD)
|
||||
.value("IO_DELAY", slsDetectorDefs::dacIndex::IO_DELAY)
|
||||
.value("VREF_DS", slsDetectorDefs::dacIndex::VREF_DS)
|
||||
.value("VCASCN_PB", slsDetectorDefs::dacIndex::VCASCN_PB)
|
||||
.value("VCASCP_PB", slsDetectorDefs::dacIndex::VCASCP_PB)
|
||||
@ -105,25 +132,46 @@ void init_enums(py::module &m) {
|
||||
.value("VIN_CM", slsDetectorDefs::dacIndex::VIN_CM)
|
||||
.value("VREF_COMP", slsDetectorDefs::dacIndex::VREF_COMP)
|
||||
.value("IB_TESTC", slsDetectorDefs::dacIndex::IB_TESTC)
|
||||
.value("SVP", slsDetectorDefs::dacIndex::SVP)
|
||||
.value("SVN", slsDetectorDefs::dacIndex::SVN)
|
||||
.value("VTR", slsDetectorDefs::dacIndex::VTR)
|
||||
.value("VRF", slsDetectorDefs::dacIndex::VRF)
|
||||
.value("VRS", slsDetectorDefs::dacIndex::VRS)
|
||||
.value("VTGSTV", slsDetectorDefs::dacIndex::VTGSTV)
|
||||
.value("VCMP_LL", slsDetectorDefs::dacIndex::VCMP_LL)
|
||||
.value("VCMP_LR", slsDetectorDefs::dacIndex::VCMP_LR)
|
||||
.value("CAL", slsDetectorDefs::dacIndex::CAL)
|
||||
.value("VCMP_RL", slsDetectorDefs::dacIndex::VCMP_RL)
|
||||
.value("VCMP_RR", slsDetectorDefs::dacIndex::VCMP_RR)
|
||||
.value("RXB_RB", slsDetectorDefs::dacIndex::RXB_RB)
|
||||
.value("RXB_LB", slsDetectorDefs::dacIndex::RXB_LB)
|
||||
.value("VCP", slsDetectorDefs::dacIndex::VCP)
|
||||
.value("VCN", slsDetectorDefs::dacIndex::VCN)
|
||||
.value("VIS", slsDetectorDefs::dacIndex::VIS)
|
||||
.value("IO_DELAY", slsDetectorDefs::dacIndex::IO_DELAY)
|
||||
.value("VB_COMP", slsDetectorDefs::dacIndex::VB_COMP)
|
||||
.value("VDD_PROT", slsDetectorDefs::dacIndex::VDD_PROT)
|
||||
.value("VIN_COM", slsDetectorDefs::dacIndex::VIN_COM)
|
||||
.value("VREF_PRECH", slsDetectorDefs::dacIndex::VREF_PRECH)
|
||||
.value("VB_PIXBUF", slsDetectorDefs::dacIndex::VB_PIXBUF)
|
||||
.value("VB_DS", slsDetectorDefs::dacIndex::VB_DS)
|
||||
.value("VREF_H_ADC", slsDetectorDefs::dacIndex::VREF_H_ADC)
|
||||
.value("VB_COMP_FE", slsDetectorDefs::dacIndex::VB_COMP_FE)
|
||||
.value("VB_COMP_ADC", slsDetectorDefs::dacIndex::VB_COMP_ADC)
|
||||
.value("VCOM_CDS", slsDetectorDefs::dacIndex::VCOM_CDS)
|
||||
.value("VREF_RSTORE", slsDetectorDefs::dacIndex::VREF_RSTORE)
|
||||
.value("VB_OPA_1ST", slsDetectorDefs::dacIndex::VB_OPA_1ST)
|
||||
.value("VREF_COMP_FE", slsDetectorDefs::dacIndex::VREF_COMP_FE)
|
||||
.value("VCOM_ADC1", slsDetectorDefs::dacIndex::VCOM_ADC1)
|
||||
.value("VREF_L_ADC", slsDetectorDefs::dacIndex::VREF_L_ADC)
|
||||
.value("VREF_CDS", slsDetectorDefs::dacIndex::VREF_CDS)
|
||||
.value("VB_CS", slsDetectorDefs::dacIndex::VB_CS)
|
||||
.value("VB_OPA_FD", slsDetectorDefs::dacIndex::VB_OPA_FD)
|
||||
.value("VCOM_ADC2", slsDetectorDefs::dacIndex::VCOM_ADC2)
|
||||
.value("VCASSH", slsDetectorDefs::dacIndex::VCASSH)
|
||||
.value("VTH2", slsDetectorDefs::dacIndex::VTH2)
|
||||
.value("VRSHAPER_N", slsDetectorDefs::dacIndex::VRSHAPER_N)
|
||||
.value("VIPRE_OUT", slsDetectorDefs::dacIndex::VIPRE_OUT)
|
||||
.value("VTH3", slsDetectorDefs::dacIndex::VTH3)
|
||||
.value("VTH1", slsDetectorDefs::dacIndex::VTH1)
|
||||
.value("VICIN", slsDetectorDefs::dacIndex::VICIN)
|
||||
.value("VCAS", slsDetectorDefs::dacIndex::VCAS)
|
||||
.value("VCAL_N", slsDetectorDefs::dacIndex::VCAL_N)
|
||||
.value("VIPRE", slsDetectorDefs::dacIndex::VIPRE)
|
||||
.value("VCAL_P", slsDetectorDefs::dacIndex::VCAL_P)
|
||||
.value("VDCSH", slsDetectorDefs::dacIndex::VDCSH)
|
||||
.value("VBP_COLBUF", slsDetectorDefs::dacIndex::VBP_COLBUF)
|
||||
.value("VB_SDA", slsDetectorDefs::dacIndex::VB_SDA)
|
||||
.value("VCASC_SFP", slsDetectorDefs::dacIndex::VCASC_SFP)
|
||||
.value("VIPRE_CDS", slsDetectorDefs::dacIndex::VIPRE_CDS)
|
||||
.value("IBIAS_SFP", slsDetectorDefs::dacIndex::IBIAS_SFP)
|
||||
.value("ADC_VPP", slsDetectorDefs::dacIndex::ADC_VPP)
|
||||
.value("HIGH_VOLTAGE", slsDetectorDefs::dacIndex::HIGH_VOLTAGE)
|
||||
.value("TEMPERATURE_ADC", slsDetectorDefs::dacIndex::TEMPERATURE_ADC)
|
||||
.value("TEMPERATURE_FPGA", slsDetectorDefs::dacIndex::TEMPERATURE_FPGA)
|
||||
.value("TEMPERATURE_FPGAEXT",
|
||||
slsDetectorDefs::dacIndex::TEMPERATURE_FPGAEXT)
|
||||
.value("TEMPERATURE_10GE", slsDetectorDefs::dacIndex::TEMPERATURE_10GE)
|
||||
@ -134,40 +182,6 @@ void init_enums(py::module &m) {
|
||||
slsDetectorDefs::dacIndex::TEMPERATURE_FPGA2)
|
||||
.value("TEMPERATURE_FPGA3",
|
||||
slsDetectorDefs::dacIndex::TEMPERATURE_FPGA3)
|
||||
.value("VIPRE", slsDetectorDefs::dacIndex::VIPRE)
|
||||
.value("VIINSH", slsDetectorDefs::dacIndex::VIINSH)
|
||||
.value("VDCSH", slsDetectorDefs::dacIndex::VDCSH)
|
||||
.value("VTH2", slsDetectorDefs::dacIndex::VTH2)
|
||||
.value("VPL", slsDetectorDefs::dacIndex::VPL)
|
||||
.value("VTH3", slsDetectorDefs::dacIndex::VTH3)
|
||||
.value("CASSH", slsDetectorDefs::dacIndex::CASSH)
|
||||
.value("CAS", slsDetectorDefs::dacIndex::CAS)
|
||||
.value("VICIN", slsDetectorDefs::dacIndex::VICIN)
|
||||
.value("VIPRE_OUT", slsDetectorDefs::dacIndex::VIPRE_OUT)
|
||||
.value("VREF_H_ADC", slsDetectorDefs::dacIndex::VREF_H_ADC)
|
||||
.value("VB_COMP_FE", slsDetectorDefs::dacIndex::VB_COMP_FE)
|
||||
.value("VB_COMP_ADC", slsDetectorDefs::dacIndex::VB_COMP_ADC)
|
||||
.value("VCOM_CDS", slsDetectorDefs::dacIndex::VCOM_CDS)
|
||||
.value("VREF_RSTORE", slsDetectorDefs::dacIndex::VREF_RSTORE)
|
||||
.value("VB_OPA_1ST", slsDetectorDefs::dacIndex::VB_OPA_1ST)
|
||||
.value("VREF_COMP_FE", slsDetectorDefs::dacIndex::VREF_COMP_FE)
|
||||
.value("VCOM_ADC1", slsDetectorDefs::dacIndex::VCOM_ADC1)
|
||||
.value("VREF_PRECH", slsDetectorDefs::dacIndex::VREF_PRECH)
|
||||
.value("VREF_L_ADC", slsDetectorDefs::dacIndex::VREF_L_ADC)
|
||||
.value("VREF_CDS", slsDetectorDefs::dacIndex::VREF_CDS)
|
||||
.value("VB_CS", slsDetectorDefs::dacIndex::VB_CS)
|
||||
.value("VB_OPA_FD", slsDetectorDefs::dacIndex::VB_OPA_FD)
|
||||
.value("VCOM_ADC2", slsDetectorDefs::dacIndex::VCOM_ADC2)
|
||||
.value("VB_DS", slsDetectorDefs::dacIndex::VB_DS)
|
||||
.value("VB_COMP", slsDetectorDefs::dacIndex::VB_COMP)
|
||||
.value("VB_PIXBUF", slsDetectorDefs::dacIndex::VB_PIXBUF)
|
||||
.value("VIN_COM", slsDetectorDefs::dacIndex::VIN_COM)
|
||||
.value("VDD_PROT", slsDetectorDefs::dacIndex::VDD_PROT)
|
||||
.value("VBP_COLBUF", slsDetectorDefs::dacIndex::VBP_COLBUF)
|
||||
.value("VB_SDA", slsDetectorDefs::dacIndex::VB_SDA)
|
||||
.value("VCASC_SFP", slsDetectorDefs::dacIndex::VCASC_SFP)
|
||||
.value("VIPRE_CDS", slsDetectorDefs::dacIndex::VIPRE_CDS)
|
||||
.value("IBIAS_SFP", slsDetectorDefs::dacIndex::IBIAS_SFP)
|
||||
.value("V_POWER_A", slsDetectorDefs::dacIndex::V_POWER_A)
|
||||
.value("V_POWER_B", slsDetectorDefs::dacIndex::V_POWER_B)
|
||||
.value("V_POWER_C", slsDetectorDefs::dacIndex::V_POWER_C)
|
||||
|
@ -25,43 +25,39 @@ void qTabDeveloper::SetupWidgetWindow() {
|
||||
switch (detType) {
|
||||
case slsDetectorDefs::EIGER:
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v SvP: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vsvp: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v SvN ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vsvn ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vrf: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vrpreamp: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vrs: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vrshaper: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vtr: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vtrim: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vtgstv: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vtgstv: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcal: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vcp ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vcp ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vcn: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vcn: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v Vis: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vishaper: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v rxb_lb: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "rxb_lb: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "v rxb_rb: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "rxb_rb: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcmp_ll: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcmp_lr: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcmp_rl: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcmp_rr: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"v Vcmp_ll: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"v Vcmp_lr: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"v Vcmp_rl: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"v Vcmp_rr: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true,
|
||||
"vthreshold: ", getSLSIndex(detType, tempid++)));
|
||||
adcWidgets.push_back(new qDacWidget(
|
||||
this, det, false,
|
||||
@ -183,10 +179,10 @@ void qTabDeveloper::SetupWidgetWindow() {
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vth2: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vshaper: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vrshaper: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"vshaperneg: ", getSLSIndex(detType, tempid++)));
|
||||
"vrshaper_n: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"vipre_out: ", getSLSIndex(detType, tempid++)));
|
||||
@ -199,19 +195,22 @@ void qTabDeveloper::SetupWidgetWindow() {
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vcas: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vpreamp: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vrpreamp: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vph: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vcal_p: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vipre: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "viinsh: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vishaper: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vpl: ", getSLSIndex(detType, tempid++)));
|
||||
this, det, true, "vcal_n: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vtrim: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(new qDacWidget(
|
||||
this, det, true, "vdcsh: ", getSLSIndex(detType, tempid++)));
|
||||
dacWidgets.push_back(
|
||||
new qDacWidget(this, det, true,
|
||||
"vthreshold: ", getSLSIndex(detType, tempid++)));
|
||||
break;
|
||||
|
||||
case slsDetectorDefs::GOTTHARD2:
|
||||
@ -384,25 +383,25 @@ qTabDeveloper::getSLSIndex(slsDetectorDefs::detectorType detType, int index) {
|
||||
case slsDetectorDefs::EIGER:
|
||||
switch (index) {
|
||||
case 0:
|
||||
return slsDetectorDefs::SVP;
|
||||
return slsDetectorDefs::VSVP;
|
||||
case 1:
|
||||
return slsDetectorDefs::SVN;
|
||||
return slsDetectorDefs::VSVN;
|
||||
case 2:
|
||||
return slsDetectorDefs::VRF;
|
||||
return slsDetectorDefs::VRPREAMP;
|
||||
case 3:
|
||||
return slsDetectorDefs::VRS;
|
||||
return slsDetectorDefs::VRSHAPER;
|
||||
case 4:
|
||||
return slsDetectorDefs::VTR;
|
||||
return slsDetectorDefs::VTRIM;
|
||||
case 5:
|
||||
return slsDetectorDefs::VTGSTV;
|
||||
case 6:
|
||||
return slsDetectorDefs::CAL;
|
||||
return slsDetectorDefs::VCAL;
|
||||
case 7:
|
||||
return slsDetectorDefs::VCP;
|
||||
case 8:
|
||||
return slsDetectorDefs::VCN;
|
||||
case 9:
|
||||
return slsDetectorDefs::VIS;
|
||||
return slsDetectorDefs::VISHAPER;
|
||||
case 10:
|
||||
return slsDetectorDefs::RXB_LB;
|
||||
case 11:
|
||||
@ -416,7 +415,7 @@ qTabDeveloper::getSLSIndex(slsDetectorDefs::detectorType detType, int index) {
|
||||
case 15:
|
||||
return slsDetectorDefs::VCMP_RR;
|
||||
case 16:
|
||||
return slsDetectorDefs::THRESHOLD;
|
||||
return slsDetectorDefs::VTHRESHOLD;
|
||||
case 17:
|
||||
return slsDetectorDefs::TEMPERATURE_FPGAEXT;
|
||||
case 18:
|
||||
@ -515,37 +514,39 @@ qTabDeveloper::getSLSIndex(slsDetectorDefs::detectorType detType, int index) {
|
||||
case slsDetectorDefs::MYTHEN3:
|
||||
switch (index) {
|
||||
case 0:
|
||||
return slsDetectorDefs::CASSH;
|
||||
return slsDetectorDefs::VCASSH;
|
||||
case 1:
|
||||
return slsDetectorDefs::VTH2;
|
||||
case 2:
|
||||
return slsDetectorDefs::SHAPER1;
|
||||
return slsDetectorDefs::VRSHAPER;
|
||||
case 3:
|
||||
return slsDetectorDefs::SHAPER2;
|
||||
return slsDetectorDefs::VRSHAPER_N;
|
||||
case 4:
|
||||
return slsDetectorDefs::VIPRE_OUT;
|
||||
case 5:
|
||||
return slsDetectorDefs::VTH3;
|
||||
case 6:
|
||||
return slsDetectorDefs::THRESHOLD;
|
||||
return slsDetectorDefs::VTH1;
|
||||
case 7:
|
||||
return slsDetectorDefs::VICIN;
|
||||
case 8:
|
||||
return slsDetectorDefs::CAS;
|
||||
return slsDetectorDefs::VCAS;
|
||||
case 9:
|
||||
return slsDetectorDefs::PREAMP;
|
||||
return slsDetectorDefs::VRPREAMP;
|
||||
case 10:
|
||||
return slsDetectorDefs::CALIBRATION_PULSE;
|
||||
return slsDetectorDefs::VCAL_P;
|
||||
case 11:
|
||||
return slsDetectorDefs::VIPRE;
|
||||
case 12:
|
||||
return slsDetectorDefs::VIINSH;
|
||||
return slsDetectorDefs::VISHAPER;
|
||||
case 13:
|
||||
return slsDetectorDefs::VPL;
|
||||
return slsDetectorDefs::VCAL_N;
|
||||
case 14:
|
||||
return slsDetectorDefs::TRIMBIT_SIZE;
|
||||
return slsDetectorDefs::VTRIM;
|
||||
case 15:
|
||||
return slsDetectorDefs::VDCSH;
|
||||
case 16:
|
||||
return slsDetectorDefs::VTHRESHOLD;
|
||||
default:
|
||||
throw sls::RuntimeError(std::string("Unknown dac/adc index") +
|
||||
std::to_string(index));
|
||||
|
Binary file not shown.
@ -15,10 +15,10 @@
|
||||
// GetDAQStatusRegister(512,current_mode_bits_from_fpga)) {
|
||||
|
||||
unsigned int Module_ndacs = 16;
|
||||
char Module_dac_names[16][10] = {"SvP", "Vtr", "Vrf", "Vrs",
|
||||
"SvN", "Vtgstv", "Vcmp_ll", "Vcmp_lr",
|
||||
"cal", "Vcmp_rl", "rxb_rb", "rxb_lb",
|
||||
"Vcmp_rr", "Vcp", "Vcn", "Vis"};
|
||||
char Module_dac_names[16][10] = {"VSvP", "Vtrim", "Vrpreamp", "Vrshaper",
|
||||
"VSvN", "Vtgstv", "Vcmp_ll", "Vcmp_lr",
|
||||
"Vcal", "Vcmp_rl", "rxb_rb", "rxb_lb",
|
||||
"Vcmp_rr", "Vcp", "Vcn", "Vishaper"};
|
||||
|
||||
struct Module modules[10];
|
||||
int moduleSize = 0;
|
||||
|
Binary file not shown.
@ -12,42 +12,42 @@
|
||||
|
||||
/* Enums */
|
||||
enum DACINDEX {
|
||||
E_SVP,
|
||||
E_VTR,
|
||||
E_VRF,
|
||||
E_VRS,
|
||||
E_SVN,
|
||||
E_VSVP,
|
||||
E_VTRIM,
|
||||
E_VRPREAMP,
|
||||
E_VRSHAPER,
|
||||
E_VSVN,
|
||||
E_VTGSTV,
|
||||
E_VCMP_LL,
|
||||
E_VCMP_LR,
|
||||
E_CAL,
|
||||
E_VCAL,
|
||||
E_VCMP_RL,
|
||||
E_RXB_RB,
|
||||
E_RXB_LB,
|
||||
E_VCMP_RR,
|
||||
E_VCP,
|
||||
E_VCN,
|
||||
E_VIS,
|
||||
E_VISHAPER,
|
||||
E_VTHRESHOLD
|
||||
};
|
||||
#define DEFAULT_DAC_VALS \
|
||||
{ \
|
||||
0, /* SvP */ \
|
||||
2480, /* Vtr */ \
|
||||
3300, /* Vrf */ \
|
||||
1400, /* Vrs */ \
|
||||
4000, /* SvN */ \
|
||||
0, /* VSvP */ \
|
||||
2480, /* Vtrim */ \
|
||||
3300, /* Vrpreamp */ \
|
||||
1400, /* Vrshaper */ \
|
||||
4000, /* VSvN */ \
|
||||
2556, /* Vtgstv */ \
|
||||
1000, /* Vcmp_ll */ \
|
||||
1000, /* Vcmp_lr */ \
|
||||
0, /* cal */ \
|
||||
0, /* Vcal */ \
|
||||
1000, /* Vcmp_rl */ \
|
||||
1100, /* rxb_rb */ \
|
||||
1100, /* rxb_lb */ \
|
||||
1000, /* Vcmp_rr */ \
|
||||
1000, /* Vcp */ \
|
||||
2000, /* Vcn */ \
|
||||
1550 /* Vis */ \
|
||||
1550 /* Vishaper */ \
|
||||
};
|
||||
enum ADCINDEX {
|
||||
TEMP_FPGAEXT,
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -852,7 +852,7 @@ void updateGatePeriod() {
|
||||
uint32_t countermask = getCounterMask();
|
||||
for (int i = 0; i != 3; ++i) {
|
||||
// only if counter enabled
|
||||
if ((1 << i) & countermask) {
|
||||
if (countermask & (1 << i)) {
|
||||
uint64_t sum = getExpTime(i) + getGateDelay(i);
|
||||
if (sum > max) {
|
||||
max = sum;
|
||||
@ -1082,6 +1082,15 @@ void setDAC(enum DACINDEX ind, int val, int mV) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ind == M_VTHRESHOLD) {
|
||||
LOG(logINFO,
|
||||
("Setting Threshold voltages to %d %s\n", val, (mV ? "mv" : "")));
|
||||
setDAC(M_VTH1, val, mV);
|
||||
setDAC(M_VTH2, val, mV);
|
||||
setDAC(M_VTH3, val, mV);
|
||||
return;
|
||||
}
|
||||
|
||||
char *dac_names[] = {DAC_NAMES};
|
||||
LOG(logDEBUG1, ("Setting dac[%d - %s]: %d %s \n", (int)ind, dac_names[ind],
|
||||
val, (mV ? "mV" : "dac units")));
|
||||
@ -1106,6 +1115,23 @@ void setDAC(enum DACINDEX ind, int val, int mV) {
|
||||
}
|
||||
|
||||
int getDAC(enum DACINDEX ind, int mV) {
|
||||
if (ind == M_VTHRESHOLD) {
|
||||
int ret[3] = {0};
|
||||
ret[0] = getDAC(M_VTH1, mV);
|
||||
ret[1] = getDAC(M_VTH2, mV);
|
||||
ret[2] = getDAC(M_VTH3, mV);
|
||||
|
||||
if ((ret[0] == ret[1]) && (ret[1] == ret[2])) {
|
||||
LOG(logINFO, ("\tvthreshold match\n"));
|
||||
return ret[0];
|
||||
} else {
|
||||
LOG(logERROR, ("\tvthreshold mismatch vth1:%d vth2:%d "
|
||||
"vth3:%d\n",
|
||||
ret[0], ret[1], ret[2]));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mV) {
|
||||
LOG(logDEBUG1, ("Getting DAC %d : %d dac\n", ind, detectorDacs[ind]));
|
||||
return detectorDacs[ind];
|
||||
|
@ -56,43 +56,44 @@
|
||||
|
||||
/* Enums */
|
||||
enum DACINDEX {
|
||||
M_CASSH,
|
||||
M_VCASSH,
|
||||
M_VTH2,
|
||||
M_VRFSH,
|
||||
M_VRFSHNPOL,
|
||||
M_VRSHAPER,
|
||||
M_VRSHAPER_N,
|
||||
M_VIPRE_OUT,
|
||||
M_VTH3,
|
||||
M_VTH1,
|
||||
M_VICIN,
|
||||
M_CAS,
|
||||
M_VRF,
|
||||
M_VPL,
|
||||
M_VCAS,
|
||||
M_VRPREAMP,
|
||||
M_VCAL_N,
|
||||
M_VIPRE,
|
||||
M_VIINSH,
|
||||
M_VPH,
|
||||
M_VISHAPER,
|
||||
M_VCAL_P,
|
||||
M_VTRIM,
|
||||
M_VDCSH
|
||||
M_VDCSH,
|
||||
M_VTHRESHOLD
|
||||
};
|
||||
#define DAC_NAMES \
|
||||
"vcassh", "vth2", "vshaper", "vshaperneg", "vipre_out", "vth3", "vth1", \
|
||||
"vicin", "vcas", "vpreamp", "vpl", "vipre", "viinsh", "vph", "vtrim", \
|
||||
"vdcsh"
|
||||
"vcassh", "vth2", "vrshaper", "vrshaper_n", "vipre_out", "vth3", "vth1", \
|
||||
"vicin", "vcas", "vrpreamp", "vcal_n", "vipre", "vishaper", "vcal_p", \
|
||||
"vtrim", "vdcsh"
|
||||
#define DEFAULT_DAC_VALS \
|
||||
{ \
|
||||
1200, /* casSh */ \
|
||||
2800, /* Vth2 */ \
|
||||
1280, /* VrfSh */ \
|
||||
2800, /* VrfShNpol */ \
|
||||
1280, /* Vrshaper */ \
|
||||
2800, /* Vrshaper_n */ \
|
||||
1220, /* vIpreOut */ \
|
||||
2800, /* Vth3 */ \
|
||||
2800, /* Vth1 */ \
|
||||
1708, /* vIcin */ \
|
||||
1800, /* cas */ \
|
||||
1100, /* Vrf */ \
|
||||
1100, /* VPL */ \
|
||||
1100, /* Vrpreamp */ \
|
||||
1100, /* Vcal_n */ \
|
||||
2624, /* vIpre */ \
|
||||
1708, /* vIinSh */ \
|
||||
1712, /* VPH */ \
|
||||
1708, /* vishaper */ \
|
||||
1712, /* Vcal_p */ \
|
||||
2800, /* vTrim */ \
|
||||
800 /* VdcSh */ \
|
||||
};
|
||||
|
@ -751,23 +751,23 @@ int set_dac(int file_des) {
|
||||
case HIGH_VOLTAGE:
|
||||
break;
|
||||
#elif EIGERD
|
||||
case THRESHOLD:
|
||||
case VTHRESHOLD:
|
||||
serverDacIndex = E_VTHRESHOLD;
|
||||
break;
|
||||
case SVP:
|
||||
serverDacIndex = E_SVP;
|
||||
case VSVP:
|
||||
serverDacIndex = E_VSVP;
|
||||
break;
|
||||
case SVN:
|
||||
serverDacIndex = E_SVN;
|
||||
case VSVN:
|
||||
serverDacIndex = E_VSVN;
|
||||
break;
|
||||
case VTR:
|
||||
serverDacIndex = E_VTR;
|
||||
case VTRIM:
|
||||
serverDacIndex = E_VTRIM;
|
||||
break;
|
||||
case VRF:
|
||||
serverDacIndex = E_VRF;
|
||||
case VRPREAMP:
|
||||
serverDacIndex = E_VRPREAMP;
|
||||
break;
|
||||
case VRS:
|
||||
serverDacIndex = E_VRS;
|
||||
case VRSHAPER:
|
||||
serverDacIndex = E_VRSHAPER;
|
||||
break;
|
||||
case VTGSTV:
|
||||
serverDacIndex = E_VTGSTV;
|
||||
@ -778,8 +778,8 @@ int set_dac(int file_des) {
|
||||
case VCMP_LR:
|
||||
serverDacIndex = E_VCMP_LR;
|
||||
break;
|
||||
case CAL:
|
||||
serverDacIndex = E_CAL;
|
||||
case VCAL:
|
||||
serverDacIndex = E_VCAL;
|
||||
break;
|
||||
case VCMP_RL:
|
||||
serverDacIndex = E_VCMP_RL;
|
||||
@ -799,8 +799,8 @@ int set_dac(int file_des) {
|
||||
case VCN:
|
||||
serverDacIndex = E_VCN;
|
||||
break;
|
||||
case VIS:
|
||||
serverDacIndex = E_VIS;
|
||||
case VISHAPER:
|
||||
serverDacIndex = E_VISHAPER;
|
||||
break;
|
||||
case HIGH_VOLTAGE:
|
||||
case IO_DELAY:
|
||||
@ -862,17 +862,17 @@ int set_dac(int file_des) {
|
||||
#elif MYTHEN3D
|
||||
case HIGH_VOLTAGE:
|
||||
break;
|
||||
case CASSH:
|
||||
serverDacIndex = M_CASSH;
|
||||
case VCASSH:
|
||||
serverDacIndex = M_VCASSH;
|
||||
break;
|
||||
case VTH2:
|
||||
serverDacIndex = M_VTH2;
|
||||
break;
|
||||
case SHAPER1:
|
||||
serverDacIndex = M_VRFSH;
|
||||
case VRSHAPER:
|
||||
serverDacIndex = M_VRSHAPER;
|
||||
break;
|
||||
case SHAPER2:
|
||||
serverDacIndex = M_VRFSHNPOL;
|
||||
case VRSHAPER_N:
|
||||
serverDacIndex = M_VRSHAPER_N;
|
||||
break;
|
||||
case VIPRE_OUT:
|
||||
serverDacIndex = M_VIPRE_OUT;
|
||||
@ -880,36 +880,39 @@ int set_dac(int file_des) {
|
||||
case VTH3:
|
||||
serverDacIndex = M_VTH3;
|
||||
break;
|
||||
case THRESHOLD:
|
||||
case VTH1:
|
||||
serverDacIndex = M_VTH1;
|
||||
break;
|
||||
case VICIN:
|
||||
serverDacIndex = M_VICIN;
|
||||
break;
|
||||
case CAS:
|
||||
serverDacIndex = M_CAS;
|
||||
case VCAS:
|
||||
serverDacIndex = M_VCAS;
|
||||
break;
|
||||
case PREAMP:
|
||||
serverDacIndex = M_VRF;
|
||||
case VRPREAMP:
|
||||
serverDacIndex = M_VRPREAMP;
|
||||
break;
|
||||
case CALIBRATION_PULSE:
|
||||
serverDacIndex = M_VPH;
|
||||
case VCAL_P:
|
||||
serverDacIndex = M_VCAL_P;
|
||||
break;
|
||||
case VIPRE:
|
||||
serverDacIndex = M_VIPRE;
|
||||
break;
|
||||
case VIINSH:
|
||||
serverDacIndex = M_VIINSH;
|
||||
case VISHAPER:
|
||||
serverDacIndex = M_VISHAPER;
|
||||
break;
|
||||
case VPL:
|
||||
serverDacIndex = M_VPL;
|
||||
case VCAL_N:
|
||||
serverDacIndex = M_VCAL_N;
|
||||
break;
|
||||
case TRIMBIT_SIZE:
|
||||
case VTRIM:
|
||||
serverDacIndex = M_VTRIM;
|
||||
break;
|
||||
case VDCSH:
|
||||
serverDacIndex = M_VDCSH;
|
||||
break;
|
||||
case VTHRESHOLD:
|
||||
serverDacIndex = M_VTHRESHOLD;
|
||||
break;
|
||||
#elif GOTTHARD2D
|
||||
case HIGH_VOLTAGE:
|
||||
break;
|
||||
@ -1198,7 +1201,7 @@ int set_dac(int file_des) {
|
||||
case E_VCMP_LR:
|
||||
case E_VCMP_RL:
|
||||
case E_VCMP_RR:
|
||||
case E_VRF:
|
||||
case E_VRPREAMP:
|
||||
case E_VCP:
|
||||
setSettings(UNDEFINED);
|
||||
LOG(logERROR,
|
||||
|
@ -96,6 +96,9 @@ class Detector {
|
||||
*/
|
||||
void setDetectorSize(const defs::xy value);
|
||||
|
||||
/** list of possible settings for this detector */
|
||||
std::vector<defs::detectorSettings> getSettingsList() const;
|
||||
|
||||
/** [Jungfrau][Gotthard][Gotthard2] */
|
||||
Result<defs::detectorSettings> getSettings(Positions pos = {}) const;
|
||||
|
||||
@ -309,6 +312,9 @@ class Detector {
|
||||
*/
|
||||
Result<int> getTemperature(defs::dacIndex index, Positions pos = {}) const;
|
||||
|
||||
/** gets list of dac indices for this detector */
|
||||
std::vector<defs::dacIndex> getDacList() const;
|
||||
|
||||
Result<int> getDAC(defs::dacIndex index, bool mV, Positions pos = {}) const;
|
||||
|
||||
void setDAC(defs::dacIndex index, int value, bool mV, Positions pos = {});
|
||||
@ -585,6 +591,9 @@ class Detector {
|
||||
|
||||
Result<sls::IpAddr> getRxLastClientIP(Positions pos = {}) const;
|
||||
|
||||
Result<std::array<pid_t, NUM_RX_THREAD_IDS>>
|
||||
getRxThreadIds(Positions pos = {}) const;
|
||||
|
||||
/**************************************************
|
||||
* *
|
||||
* File *
|
||||
|
@ -331,6 +331,25 @@ std::string CmdProxy::DetectorSize(int action) {
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string CmdProxy::SettingsList(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "\n\tList of settings implemented for this detector" << '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
if (!args.empty()) {
|
||||
WrongNumberOfParameters(0);
|
||||
}
|
||||
auto t = det->getSettingsList();
|
||||
os << ToString(t) << "\n";
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
throw sls::RuntimeError("Cannot put");
|
||||
} else {
|
||||
throw sls::RuntimeError("Unknown action");
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string CmdProxy::GapPixels(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
@ -877,7 +896,11 @@ std::string CmdProxy::DacList(int action) {
|
||||
os << "\n\tGets the list of commands for every dac for this detector."
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
os << sls::ToString(DacCommands()) << '\n';
|
||||
if (!args.empty()) {
|
||||
WrongNumberOfParameters(0);
|
||||
}
|
||||
auto t = det->getDacList();
|
||||
os << ToString(t) << '\n';
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
throw sls::RuntimeError("Cannot put");
|
||||
} else {
|
||||
@ -890,29 +913,32 @@ std::string CmdProxy::DacValues(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "\n\tGets the list of commands for every dac for this detector."
|
||||
os << "[(optional unit) mv] \n\tGets the list of commands for every "
|
||||
"dac for this detector."
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
std::vector<std::string> names = DacCommands();
|
||||
std::vector<std::string> res(names.size());
|
||||
std::vector<std::string> args;
|
||||
for (size_t i = 0; i < names.size(); ++i) {
|
||||
// for multiple values for each command (to use ToString on vector)
|
||||
std::ostringstream each;
|
||||
size_t spacepos = names[i].find(' ');
|
||||
// chip test board (dac)
|
||||
if (spacepos != std::string::npos) {
|
||||
if (args.empty()) {
|
||||
args.resize(1);
|
||||
bool mv = false;
|
||||
if (args.size() == 1) {
|
||||
if (args[0] != "mv") {
|
||||
throw sls::RuntimeError("Unknown argument " + args[0] +
|
||||
". Did you mean mv?");
|
||||
}
|
||||
args[0] = names[i].substr(spacepos + 1 - 1);
|
||||
names[i] = names[i].substr(0, spacepos);
|
||||
mv = true;
|
||||
} else if (args.size() > 1) {
|
||||
WrongNumberOfParameters(1);
|
||||
}
|
||||
Call(names[i], args, det_id, action, each);
|
||||
res[i] = each.str();
|
||||
res[i].pop_back(); // remove last \n character
|
||||
auto t = det->getDacList();
|
||||
os << '[';
|
||||
auto it = t.cbegin();
|
||||
os << ToString(*it) << ' '
|
||||
<< OutString(det->getDAC(*it++, mv, {det_id}))
|
||||
<< (args.size() > 0 ? " mv" : "");
|
||||
while (it != t.cend()) {
|
||||
os << ", " << ToString(*it) << ' '
|
||||
<< OutString(det->getDAC(*it++, mv, {det_id}))
|
||||
<< (args.size() > 0 ? " mv" : "");
|
||||
}
|
||||
os << sls::ToString(res) << '\n';
|
||||
os << "]\n";
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
throw sls::RuntimeError("Cannot put");
|
||||
} else {
|
||||
@ -921,53 +947,6 @@ std::string CmdProxy::DacValues(int action) {
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::vector<std::string> CmdProxy::DacCommands() {
|
||||
switch (det->getDetectorType().squash(defs::GENERIC)) {
|
||||
case defs::EIGER:
|
||||
return std::vector<std::string>{
|
||||
"vsvp", "vtr", "vrf", "vrs", "vsvn", "vtgstv",
|
||||
"vcmp_ll", "vcmp_lr", "vcal", "vcmp_rl", "rxb_rb", "rxb_lb",
|
||||
"vcmp_rr", "vcp", "vcn", "vis", "vthreshold"};
|
||||
break;
|
||||
case defs::JUNGFRAU:
|
||||
return std::vector<std::string>{"vb_comp", "vdd_prot", "vin_com",
|
||||
"vref_prech", "vb_pixbuf", "vb_ds",
|
||||
"vref_ds", "vref_comp"};
|
||||
break;
|
||||
case defs::GOTTHARD:
|
||||
return std::vector<std::string>{"vref_ds", "vcascn_pb", "vcascp_pb",
|
||||
"vout_cm", "vcasc_out", "vin_cm",
|
||||
"vref_comp", "ib_test_c"};
|
||||
break;
|
||||
case defs::GOTTHARD2:
|
||||
return std::vector<std::string>{
|
||||
"vref_h_adc", "vb_comp_fe", "vb_comp_adc", "vcom_cds",
|
||||
"vref_rstore", "vb_opa_1st", "vref_comp_fe", "vcom_adc1",
|
||||
"vref_prech", "vref_l_adc", "vref_cds", "vb_cs",
|
||||
"vb_opa_fd", "vcom_adc2"};
|
||||
break;
|
||||
case defs::MYTHEN3:
|
||||
return std::vector<std::string>{
|
||||
"vcassh", "vth2", "vshaper", "vshaperneg", "vipre_out", "vth3",
|
||||
"vth1", "vicin", "vcas", "vpreamp", "vpl", "vipre",
|
||||
"viinsh", "vph", "vtrim", "vdcsh"};
|
||||
break;
|
||||
case defs::MOENCH:
|
||||
return std::vector<std::string>{"vbp_colbuf", "vipre", "vin_cm",
|
||||
"vb_sda", "vcasc_sfp", "vout_cm",
|
||||
"vipre_cds", "ibias_sfp"};
|
||||
break;
|
||||
case defs::CHIPTESTBOARD:
|
||||
return std::vector<std::string>{
|
||||
"dac 0", "dac 1", "dac 2", "dac 3", "dac 4", "dac 5",
|
||||
"dac 6", "dac 7", "dac 8", "dac 9", "dac 10", "dac 11",
|
||||
"dac 12", "dac 13", "dac 14", "dac 15", "dac 16", "dac 17"};
|
||||
break;
|
||||
default:
|
||||
throw sls::RuntimeError("Unknown detector type.");
|
||||
}
|
||||
}
|
||||
|
||||
/* acquisition */
|
||||
|
||||
std::string CmdProxy::ReceiverStatus(int action) {
|
||||
|
@ -478,8 +478,19 @@ class CmdProxy {
|
||||
{"digitest", "imagetest"},
|
||||
|
||||
/** temperature */
|
||||
|
||||
/** dacs */
|
||||
{"vtr", "vtrim"},
|
||||
{"vrf", "vrpreamp"},
|
||||
{"vrs", "vrshaper"},
|
||||
{"vcall", "vcal"},
|
||||
{"vis", "vishaper"},
|
||||
{"vshaper", "vrshaper"},
|
||||
{"vpreamp", "vrpreamp"},
|
||||
{"vshaperneg", "vrshaper_n"},
|
||||
{"viinsh", "vishaper"},
|
||||
{"vpl", "vcal_n"},
|
||||
{"vph", "vcal_p"},
|
||||
|
||||
/* acquisition */
|
||||
{"busy", "clearbusy"},
|
||||
@ -562,6 +573,7 @@ class CmdProxy {
|
||||
{"detectornumber", &CmdProxy::detectornumber},
|
||||
{"type", &CmdProxy::type},
|
||||
{"detsize", &CmdProxy::DetectorSize},
|
||||
{"settingslist", &CmdProxy::SettingsList},
|
||||
{"settings", &CmdProxy::settings},
|
||||
{"trimbits", &CmdProxy::trimbits},
|
||||
{"trimval", &CmdProxy::trimval},
|
||||
@ -608,9 +620,9 @@ class CmdProxy {
|
||||
{"vthreshold", &CmdProxy::vthreshold},
|
||||
{"vsvp", &CmdProxy::vsvp},
|
||||
{"vsvn", &CmdProxy::vsvn},
|
||||
{"vtr", &CmdProxy::vtr},
|
||||
{"vrf", &CmdProxy::vrf},
|
||||
{"vrs", &CmdProxy::vrs},
|
||||
{"vtrim", &CmdProxy::vtrim},
|
||||
{"vrpreamp", &CmdProxy::vrpreamp},
|
||||
{"vrshaper", &CmdProxy::vrshaper},
|
||||
{"vtgstv", &CmdProxy::vtgstv},
|
||||
{"vcmp_ll", &CmdProxy::vcmp_ll},
|
||||
{"vcmp_lr", &CmdProxy::vcmp_lr},
|
||||
@ -621,7 +633,7 @@ class CmdProxy {
|
||||
{"rxb_lb", &CmdProxy::rxb_lb},
|
||||
{"vcp", &CmdProxy::vcp},
|
||||
{"vcn", &CmdProxy::vcn},
|
||||
{"vis", &CmdProxy::vis},
|
||||
{"vishaper", &CmdProxy::vishaper},
|
||||
{"iodelay", &CmdProxy::iodelay},
|
||||
{"vref_ds", &CmdProxy::vref_ds},
|
||||
{"vcascn_pb", &CmdProxy::vcascn_pb},
|
||||
@ -631,18 +643,14 @@ class CmdProxy {
|
||||
{"vin_cm", &CmdProxy::vin_cm},
|
||||
{"vref_comp", &CmdProxy::vref_comp},
|
||||
{"ib_test_c", &CmdProxy::ib_test_c},
|
||||
{"vpreamp", &CmdProxy::vpreamp},
|
||||
{"vshaper", &CmdProxy::vshaper},
|
||||
{"vshaperneg", &CmdProxy::vshaperneg},
|
||||
{"vrshaper_n", &CmdProxy::vrshaper_n},
|
||||
{"vipre", &CmdProxy::vipre},
|
||||
{"viinsh", &CmdProxy::viinsh},
|
||||
{"vdcsh", &CmdProxy::vdcsh},
|
||||
{"vth1", &CmdProxy::vth1},
|
||||
{"vth2", &CmdProxy::vth2},
|
||||
{"vth3", &CmdProxy::vth3},
|
||||
{"vpl", &CmdProxy::vpl},
|
||||
{"vph", &CmdProxy::vph},
|
||||
{"vtrim", &CmdProxy::vtrim},
|
||||
{"vcal_n", &CmdProxy::vcal_n},
|
||||
{"vcal_p", &CmdProxy::vcal_p},
|
||||
{"vcassh", &CmdProxy::vcassh},
|
||||
{"vcas", &CmdProxy::vcas},
|
||||
{"vicin", &CmdProxy::vicin},
|
||||
@ -729,6 +737,7 @@ class CmdProxy {
|
||||
{"rx_realudpsocksize", &CmdProxy::rx_realudpsocksize},
|
||||
{"rx_lock", &CmdProxy::rx_lock},
|
||||
{"rx_lastclient", &CmdProxy::rx_lastclient},
|
||||
{"rx_threads", &CmdProxy::rx_threads},
|
||||
|
||||
/* File */
|
||||
{"fformat", &CmdProxy::fformat},
|
||||
@ -923,6 +932,7 @@ class CmdProxy {
|
||||
std::string PackageVersion(int action);
|
||||
std::string ClientVersion(int action);
|
||||
std::string DetectorSize(int action);
|
||||
std::string SettingsList(int action);
|
||||
std::string GapPixels(int action);
|
||||
/* acquisition parameters */
|
||||
std::string acquire(int action);
|
||||
@ -940,7 +950,6 @@ class CmdProxy {
|
||||
std::string Dac(int action);
|
||||
std::string DacList(int action);
|
||||
std::string DacValues(int action);
|
||||
std::vector<std::string> DacCommands();
|
||||
/* acquisition */
|
||||
std::string ReceiverStatus(int action);
|
||||
std::string DetectorStatus(int action);
|
||||
@ -1180,29 +1189,33 @@ class CmdProxy {
|
||||
|
||||
/* dacs */
|
||||
|
||||
DAC_COMMAND(vthreshold, getDAC, setDAC, defs::THRESHOLD,
|
||||
DAC_COMMAND(vthreshold, getDAC, setDAC, defs::VTHRESHOLD,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger][Mythen3] "
|
||||
"Detector threshold voltage for single photon counters.");
|
||||
|
||||
DAC_COMMAND(vsvp, getDAC, setDAC, defs::SVP,
|
||||
DAC_COMMAND(vsvp, getDAC, setDAC, defs::VSVP,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
|
||||
DAC_COMMAND(vsvn, getDAC, setDAC, defs::SVN,
|
||||
DAC_COMMAND(vsvn, getDAC, setDAC, defs::VSVN,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
"?? \n\t[Mythen3] voltage "
|
||||
"to define feedback resistance of the first shaper"); // TODO
|
||||
|
||||
DAC_COMMAND(vtr, getDAC, setDAC, defs::VTR,
|
||||
DAC_COMMAND(vtrim, getDAC, setDAC, defs::VTRIM,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
"?? \n\t[Mythen3] Dac for "
|
||||
"the voltage defining the trim bit size."); // TODO
|
||||
|
||||
DAC_COMMAND(vrf, getDAC, setDAC, defs::VRF,
|
||||
DAC_COMMAND(vrpreamp, getDAC, setDAC, defs::VRPREAMP,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
"?? \n\t[Mythen3] voltage "
|
||||
"to define the preamplifier feedback resistance."); // TODO
|
||||
|
||||
DAC_COMMAND(vrs, getDAC, setDAC, defs::VRS,
|
||||
DAC_COMMAND(vrshaper, getDAC, setDAC, defs::VRSHAPER,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
"?? \n\t[Mythen3] voltage to define feedback resistance of "
|
||||
"the first shaper"); // TODO
|
||||
|
||||
DAC_COMMAND(vtgstv, getDAC, setDAC, defs::VTGSTV,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
@ -1216,7 +1229,7 @@ class CmdProxy {
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
|
||||
DAC_COMMAND(vcal, getDAC, setDAC, defs::CAL,
|
||||
DAC_COMMAND(vcal, getDAC, setDAC, defs::VCAL,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
|
||||
@ -1244,9 +1257,10 @@ class CmdProxy {
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
|
||||
DAC_COMMAND(vis, getDAC, setDAC, defs::VIS,
|
||||
DAC_COMMAND(vishaper, getDAC, setDAC, defs::VISHAPER,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
"?? "); // TODO
|
||||
"?? \n\t[Mythen3] Dac for "
|
||||
"the bias current for the shaper."); // TODO
|
||||
|
||||
DAC_COMMAND(iodelay, getDAC, setDAC, defs::IO_DELAY,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Eiger] Dac for "
|
||||
@ -1284,15 +1298,7 @@ class CmdProxy {
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Gotthard] Dac for "
|
||||
"?? "); // TODO
|
||||
|
||||
DAC_COMMAND(vpreamp, getDAC, setDAC, defs::PREAMP,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] voltage "
|
||||
"to define the preamplifier feedback resistance.");
|
||||
|
||||
DAC_COMMAND(vshaper, getDAC, setDAC, defs::SHAPER1,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] voltage "
|
||||
"to define feedback resistance of the first shaper");
|
||||
|
||||
DAC_COMMAND(vshaperneg, getDAC, setDAC, defs::SHAPER2,
|
||||
DAC_COMMAND(vrshaper_n, getDAC, setDAC, defs::VRSHAPER_N,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] voltage "
|
||||
"to define feedback resistance of the second shaper.");
|
||||
|
||||
@ -1301,15 +1307,11 @@ class CmdProxy {
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for the "
|
||||
"preamplifier's input transistor current.\n\t[Moench] Dac for 1");
|
||||
|
||||
DAC_COMMAND(viinsh, getDAC, setDAC, defs::VIINSH,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the bias current for the shaper.");
|
||||
|
||||
DAC_COMMAND(vdcsh, getDAC, setDAC, defs::VDCSH,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the reference (DC) voltage for the shaper.");
|
||||
|
||||
DAC_COMMAND(vth1, getDAC, setDAC, defs::THRESHOLD,
|
||||
DAC_COMMAND(vth1, getDAC, setDAC, defs::VTH1,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"first detector threshold voltage.");
|
||||
|
||||
@ -1321,23 +1323,19 @@ class CmdProxy {
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"third detector threshold voltage.");
|
||||
|
||||
DAC_COMMAND(vpl, getDAC, setDAC, defs::VPL,
|
||||
DAC_COMMAND(vcal_n, getDAC, setDAC, defs::VCAL_N,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the low voltage for analog pulsing.");
|
||||
|
||||
DAC_COMMAND(vph, getDAC, setDAC, defs::CALIBRATION_PULSE,
|
||||
DAC_COMMAND(vcal_p, getDAC, setDAC, defs::VCAL_P,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the high voltage for analog pulsing.");
|
||||
|
||||
DAC_COMMAND(vtrim, getDAC, setDAC, defs::TRIMBIT_SIZE,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the voltage defining the trim bit size.");
|
||||
|
||||
DAC_COMMAND(vcassh, getDAC, setDAC, defs::CASSH,
|
||||
DAC_COMMAND(vcassh, getDAC, setDAC, defs::VCASSH,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the shaper's cascode voltage.");
|
||||
|
||||
DAC_COMMAND(vcas, getDAC, setDAC, defs::CAS,
|
||||
DAC_COMMAND(vcas, getDAC, setDAC, defs::VCAS,
|
||||
"[dac or mv value][(optional unit) mv] \n\t[Mythen3] Dac for "
|
||||
"the preamplifier's cascode voltage.");
|
||||
|
||||
@ -1663,6 +1661,14 @@ class CmdProxy {
|
||||
rx_lastclient, getRxLastClientIP,
|
||||
"\n\tClient IP Address that last communicated with the receiver.");
|
||||
|
||||
GET_COMMAND(
|
||||
rx_threads, getRxThreadIds,
|
||||
"\n\tGet thread ids from the receiver in order of [parent, tcp, "
|
||||
"listener 0, "
|
||||
"processor 0, streamer 0, listener 1, processor 1, streamer 1]. If no "
|
||||
"streamer yet or there is no second interface, it gives 0 in its "
|
||||
"place.");
|
||||
|
||||
/* File */
|
||||
|
||||
INTEGER_COMMAND(
|
||||
|
@ -141,6 +141,38 @@ void Detector::setDetectorSize(const defs::xy value) {
|
||||
pimpl->setNumberOfChannels(value);
|
||||
}
|
||||
|
||||
std::vector<defs::detectorSettings> Detector::getSettingsList() const {
|
||||
switch (getDetectorType().squash()) {
|
||||
case defs::EIGER:
|
||||
return std::vector<defs::detectorSettings>{
|
||||
defs::STANDARD, defs::HIGHGAIN, defs::LOWGAIN, defs::VERYHIGHGAIN,
|
||||
defs::VERYLOWGAIN};
|
||||
case defs::GOTTHARD:
|
||||
return std::vector<defs::detectorSettings>{
|
||||
defs::HIGHGAIN, defs::DYNAMICGAIN, defs::LOWGAIN, defs::MEDIUMGAIN,
|
||||
defs::VERYHIGHGAIN};
|
||||
case defs::JUNGFRAU:
|
||||
return std::vector<defs::detectorSettings>{
|
||||
defs::DYNAMICGAIN, defs::DYNAMICHG0, defs::FIXGAIN1,
|
||||
defs::FIXGAIN2, defs::FORCESWITCHG1, defs::FORCESWITCHG2};
|
||||
case defs::GOTTHARD2:
|
||||
return std::vector<defs::detectorSettings>{
|
||||
defs::DYNAMICGAIN, defs::DYNAMICHG0, defs::FIXGAIN1,
|
||||
defs::FIXGAIN2};
|
||||
case defs::MOENCH:
|
||||
return std::vector<defs::detectorSettings>{
|
||||
defs::G1_HIGHGAIN, defs::G1_LOWGAIN,
|
||||
defs::G2_HIGHCAP_HIGHGAIN, defs::G2_HIGHCAP_LOWGAIN,
|
||||
defs::G2_LOWCAP_HIGHGAIN, defs::G2_LOWCAP_LOWGAIN,
|
||||
defs::G4_HIGHGAIN, defs::G4_LOWGAIN};
|
||||
case defs::CHIPTESTBOARD:
|
||||
case defs::MYTHEN3:
|
||||
throw RuntimeError("Settings not implemented for this detector");
|
||||
default:
|
||||
throw RuntimeError("Unknown detector type");
|
||||
}
|
||||
}
|
||||
|
||||
Result<defs::detectorSettings> Detector::getSettings(Positions pos) const {
|
||||
return pimpl->Parallel(&Module::getSettings, pos);
|
||||
}
|
||||
@ -405,6 +437,53 @@ Result<int> Detector::getTemperature(defs::dacIndex index,
|
||||
return res;
|
||||
}
|
||||
|
||||
std::vector<defs::dacIndex> Detector::getDacList() const {
|
||||
std::vector<defs::dacIndex> retval;
|
||||
switch (getDetectorType().squash()) {
|
||||
case defs::EIGER:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VSVP, defs::VTRIM, defs::VRPREAMP, defs::VRSHAPER,
|
||||
defs::VSVN, defs::VTGSTV, defs::VCMP_LL, defs::VCMP_LR,
|
||||
defs::VCAL, defs::VCMP_RL, defs::RXB_RB, defs::RXB_LB,
|
||||
defs::VCMP_RR, defs::VCP, defs::VCN, defs::VISHAPER,
|
||||
defs::VTHRESHOLD};
|
||||
case defs::GOTTHARD:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VREF_DS, defs::VCASCN_PB, defs::VCASCP_PB, defs::VOUT_CM,
|
||||
defs::VCASC_OUT, defs::VIN_CM, defs::VREF_COMP, defs::IB_TESTC};
|
||||
case defs::JUNGFRAU:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VB_COMP, defs::VDD_PROT, defs::VIN_COM, defs::VREF_PRECH,
|
||||
defs::VB_PIXBUF, defs::VB_DS, defs::VREF_DS, defs::VREF_COMP};
|
||||
case defs::GOTTHARD2:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VREF_H_ADC, defs::VB_COMP_FE, defs::VB_COMP_ADC,
|
||||
defs::VCOM_CDS, defs::VREF_RSTORE, defs::VB_OPA_1ST,
|
||||
defs::VREF_COMP_FE, defs::VCOM_ADC1, defs::VREF_PRECH,
|
||||
defs::VREF_L_ADC, defs::VREF_CDS, defs::VB_CS,
|
||||
defs::VB_OPA_FD, defs::VCOM_ADC2};
|
||||
case defs::MYTHEN3:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VCASSH, defs::VTH2, defs::VRSHAPER, defs::VRSHAPER_N,
|
||||
defs::VIPRE_OUT, defs::VTH3, defs::VTH1, defs::VICIN,
|
||||
defs::VCAS, defs::VRPREAMP, defs::VCAL_N, defs::VIPRE,
|
||||
defs::VISHAPER, defs::VCAL_P, defs::VTRIM, defs::VDCSH,
|
||||
defs::VTHRESHOLD};
|
||||
case defs::MOENCH:
|
||||
return std::vector<defs::dacIndex>{
|
||||
defs::VBP_COLBUF, defs::VIPRE, defs::VIN_CM, defs::VB_SDA,
|
||||
defs::VCASC_SFP, defs::VOUT_CM, defs::VIPRE_CDS, defs::IBIAS_SFP};
|
||||
case defs::CHIPTESTBOARD:
|
||||
for (int i = 0; i != 18; ++i) {
|
||||
retval.push_back(static_cast<defs::dacIndex>(i));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw RuntimeError("Unknown detector type");
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
Result<int> Detector::getDAC(defs::dacIndex index, bool mV,
|
||||
Positions pos) const {
|
||||
return pimpl->Parallel(&Module::setDAC, pos, -1, index, mV);
|
||||
@ -759,6 +838,11 @@ Result<sls::IpAddr> Detector::getRxLastClientIP(Positions pos) const {
|
||||
return pimpl->Parallel(&Module::getReceiverLastClientIP, pos);
|
||||
}
|
||||
|
||||
Result<std::array<pid_t, NUM_RX_THREAD_IDS>>
|
||||
Detector::getRxThreadIds(Positions pos) const {
|
||||
return pimpl->Parallel(&Module::getReceiverThreadIds, pos);
|
||||
}
|
||||
|
||||
// File
|
||||
|
||||
Result<defs::fileFormat> Detector::getFileFormat(Positions pos) const {
|
||||
|
@ -289,7 +289,7 @@ template <typename Ret> Ret Module::sendToReceiver(int fnum) const {
|
||||
<< sizeof(Ret) << "]";
|
||||
Ret retval{};
|
||||
sendToReceiver(fnum, nullptr, 0, &retval, sizeof(retval));
|
||||
LOG(logDEBUG1) << "Got back: " << retval;
|
||||
LOG(logDEBUG1) << "Got back: " << ToString(retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -2614,6 +2614,11 @@ sls::IpAddr Module::getReceiverLastClientIP() const {
|
||||
return sendToReceiver<sls::IpAddr>(F_GET_LAST_RECEIVER_CLIENT_IP);
|
||||
}
|
||||
|
||||
std::array<pid_t, NUM_RX_THREAD_IDS> Module::getReceiverThreadIds() const {
|
||||
return sendToReceiver<std::array<pid_t, NUM_RX_THREAD_IDS>>(
|
||||
F_GET_RECEIVER_THREAD_IDS);
|
||||
}
|
||||
|
||||
void Module::exitReceiver() {
|
||||
LOG(logDEBUG1) << "Sending exit command to receiver server";
|
||||
sendToReceiver(F_EXIT_RECEIVER, nullptr, nullptr);
|
||||
|
@ -1309,6 +1309,8 @@ class Module : public virtual slsDetectorDefs {
|
||||
*/
|
||||
sls::IpAddr getReceiverLastClientIP() const;
|
||||
|
||||
std::array<pid_t, NUM_RX_THREAD_IDS> getReceiverThreadIds() const;
|
||||
|
||||
/**
|
||||
* Exits the receiver TCP server
|
||||
*/
|
||||
|
@ -33,21 +33,21 @@ TEST_CASE("dac", "[.cmd][.dacs][.new]") {
|
||||
// REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// jungfrau
|
||||
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET));
|
||||
@ -55,30 +55,30 @@ TEST_CASE("dac", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
// gotthard
|
||||
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
|
||||
// mythen3
|
||||
// REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET));
|
||||
|
@ -131,22 +131,22 @@ TEST_CASE("Setting and reading back EIGER dacs", "[.cmd][.dacs][.new]") {
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type == defs::EIGER) {
|
||||
SECTION("vsvp") { test_dac(defs::SVP, "vsvp", 5); }
|
||||
SECTION("vtr") { test_dac(defs::VRF, "vtr", 1200); }
|
||||
SECTION("vrf") { test_dac(defs::VRF, "vrf", 1500); }
|
||||
SECTION("vrs") { test_dac(defs::VRF, "vrs", 1510); }
|
||||
SECTION("vsvn") { test_dac(defs::SVN, "vsvn", 3800); }
|
||||
SECTION("vsvp") { test_dac(defs::VSVP, "vsvp", 5); }
|
||||
SECTION("vtrim") { test_dac(defs::VTRIM, "vtrim", 1200); }
|
||||
SECTION("vrpreamp") { test_dac(defs::VRPREAMP, "vrpreamp", 1500); }
|
||||
SECTION("vrshaper") { test_dac(defs::VRSHAPER, "vrshaper", 1510); }
|
||||
SECTION("vsvn") { test_dac(defs::VSVN, "vsvn", 3800); }
|
||||
SECTION("vtgstv") { test_dac(defs::VTGSTV, "vtgstv", 2550); }
|
||||
SECTION("vcmp_ll") { test_dac(defs::VCMP_LL, "vcmp_ll", 1400); }
|
||||
SECTION("vcmp_lr") { test_dac(defs::VCMP_LR, "vcmp_lr", 1400); }
|
||||
SECTION("vcal") { test_dac(defs::CAL, "vcal", 1400); }
|
||||
SECTION("vcal") { test_dac(defs::VCAL, "vcal", 1400); }
|
||||
SECTION("vcmp_rl") { test_dac(defs::VCMP_RL, "vcmp_rl", 1400); }
|
||||
SECTION("rxb_rb") { test_dac(defs::RXB_RB, "rxb_rb", 1400); }
|
||||
SECTION("rxb_lb") { test_dac(defs::RXB_LB, "rxb_lb", 1400); }
|
||||
SECTION("vcmp_rr") { test_dac(defs::VCMP_RR, "vcmp_rr", 1400); }
|
||||
SECTION("vcp") { test_dac(defs::VCP, "vcp", 1400); }
|
||||
SECTION("vcn") { test_dac(defs::VCN, "vcn", 1400); }
|
||||
SECTION("vis") { test_dac(defs::VIS, "vis", 1400); }
|
||||
SECTION("vishaper") { test_dac(defs::VISHAPER, "vishaper", 1400); }
|
||||
SECTION("iodelay") { test_dac(defs::IO_DELAY, "iodelay", 1400); }
|
||||
SECTION("vthreshold") {
|
||||
// Read out individual vcmp to be able to reset after
|
||||
@ -171,9 +171,9 @@ TEST_CASE("Setting and reading back EIGER dacs", "[.cmd][.dacs][.new]") {
|
||||
// Reset dacs after test
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
det.setDAC(defs::VCMP_LL, vcmp_ll[i], false, {i});
|
||||
det.setDAC(defs::VCMP_LR, vcmp_ll[i], false, {i});
|
||||
det.setDAC(defs::VCMP_RL, vcmp_ll[i], false, {i});
|
||||
det.setDAC(defs::VCMP_RR, vcmp_ll[i], false, {i});
|
||||
det.setDAC(defs::VCMP_LR, vcmp_lr[i], false, {i});
|
||||
det.setDAC(defs::VCMP_RL, vcmp_rl[i], false, {i});
|
||||
det.setDAC(defs::VCMP_RR, vcmp_rr[i], false, {i});
|
||||
det.setDAC(defs::VCP, vcp[i], false, {i});
|
||||
}
|
||||
}
|
||||
@ -187,17 +187,17 @@ TEST_CASE("Setting and reading back EIGER dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
|
||||
// mythen3
|
||||
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
|
@ -37,9 +37,9 @@ TEST_CASE("Setting and reading back GOTTHARD dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
@ -50,7 +50,7 @@ TEST_CASE("Setting and reading back GOTTHARD dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// jungfrau
|
||||
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET));
|
||||
@ -62,17 +62,17 @@ TEST_CASE("Setting and reading back GOTTHARD dacs", "[.cmd][.dacs][.new]") {
|
||||
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
// mythen3
|
||||
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
|
@ -55,9 +55,9 @@ TEST_CASE("Setting and reading back GOTTHARD2 dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
@ -68,7 +68,7 @@ TEST_CASE("Setting and reading back GOTTHARD2 dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// gotthard
|
||||
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
@ -89,17 +89,17 @@ TEST_CASE("Setting and reading back GOTTHARD2 dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
// mythen3
|
||||
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
|
@ -36,9 +36,9 @@ TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
@ -49,7 +49,7 @@ TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// gotthard
|
||||
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
@ -61,17 +61,17 @@ TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd][.dacs][.new]") {
|
||||
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
|
||||
// mythen3
|
||||
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
|
@ -40,9 +40,9 @@ TEST_CASE("Setting and reading back MOENCH dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
@ -53,7 +53,7 @@ TEST_CASE("Setting and reading back MOENCH dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
// jungfrau
|
||||
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET));
|
||||
@ -74,17 +74,17 @@ TEST_CASE("Setting and reading back MOENCH dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET));
|
||||
// mythen3
|
||||
REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET));
|
||||
|
@ -25,28 +25,54 @@ TEST_CASE("Setting and reading back MYTHEN3 dacs", "[.cmd][.dacs][.new]") {
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type == defs::MYTHEN3) {
|
||||
SECTION("vcassh") { test_dac(defs::CASSH, "vcassh", 1200); }
|
||||
SECTION("vcassh") { test_dac(defs::VCASSH, "vcassh", 1200); }
|
||||
SECTION("vth2") { test_dac(defs::VTH2, "vth2", 2800); }
|
||||
SECTION("vshaper") { test_dac(defs::SHAPER1, "vshaper", 1280); }
|
||||
SECTION("vshaperneg") { test_dac(defs::SHAPER2, "vshaperneg", 2800); }
|
||||
SECTION("vrshaper") { test_dac(defs::VRSHAPER, "vrshaper", 1280); }
|
||||
SECTION("vrshaper_n") {
|
||||
test_dac(defs::VRSHAPER_N, "vrshaper_n", 2800);
|
||||
}
|
||||
SECTION("vipre_out") { test_dac(defs::VIPRE_OUT, "vipre_out", 1220); }
|
||||
SECTION("vth3") { test_dac(defs::VTH3, "vth3", 2800); }
|
||||
SECTION("vth1") { test_dac(defs::THRESHOLD, "vth1", 2880); }
|
||||
SECTION("vth1") { test_dac(defs::VTH1, "vth1", 2880); }
|
||||
SECTION("vicin") { test_dac(defs::VICIN, "vicin", 1708); }
|
||||
SECTION("vcas") { test_dac(defs::CAS, "vcas", 1800); }
|
||||
SECTION("vpreamp") { test_dac(defs::PREAMP, "vpreamp", 1100); }
|
||||
SECTION("vpl") { test_dac(defs::VPL, "vpl", 1100); }
|
||||
SECTION("vcas") { test_dac(defs::VCAS, "vcas", 1800); }
|
||||
SECTION("vrpreamp") { test_dac(defs::VRPREAMP, "vrpreamp", 1100); }
|
||||
SECTION("vcal_n") { test_dac(defs::VCAL_N, "vcal_n", 1100); }
|
||||
SECTION("vipre") { test_dac(defs::VIPRE, "vipre", 2624); }
|
||||
SECTION("viinsh") { test_dac(defs::VIINSH, "viinsh", 1708); }
|
||||
SECTION("vph") { test_dac(defs::CALIBRATION_PULSE, "vph", 1712); }
|
||||
SECTION("vtrim") { test_dac(defs::TRIMBIT_SIZE, "vtrim", 2800); }
|
||||
SECTION("vishaper") { test_dac(defs::VISHAPER, "vishaper", 1708); }
|
||||
SECTION("vcal_p") { test_dac(defs::VCAL_P, "vcal_p", 1712); }
|
||||
SECTION("vtrim") { test_dac(defs::VTRIM, "vtrim", 2800); }
|
||||
SECTION("vdcsh") { test_dac(defs::VDCSH, "vdcsh", 800); }
|
||||
SECTION("vthreshold") {
|
||||
// Read out individual vcmp to be able to reset after
|
||||
// the test is done
|
||||
auto vth1 = det.getDAC(defs::VTH1, false);
|
||||
auto vth2 = det.getDAC(defs::VTH2, false);
|
||||
auto vth3 = det.getDAC(defs::VTH3, false);
|
||||
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("vthreshold", {"1234"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "vthreshold 1234\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("vthreshold", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "vthreshold 1234\n");
|
||||
}
|
||||
|
||||
// Reset dacs after test
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
det.setDAC(defs::VTH1, vth1[i], false, {i});
|
||||
det.setDAC(defs::VTH2, vth2[i], false, {i});
|
||||
det.setDAC(defs::VTH3, vth3[i], false, {i});
|
||||
}
|
||||
}
|
||||
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET));
|
||||
@ -57,7 +83,7 @@ TEST_CASE("Setting and reading back MYTHEN3 dacs", "[.cmd][.dacs][.new]") {
|
||||
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET));
|
||||
// REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET));
|
||||
|
@ -372,6 +372,13 @@ TEST_CASE("rx_lastclient", "[.cmd][.rx][.new]") {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("rx_threads", "[.cmd][.rx][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
std::ostringstream oss;
|
||||
REQUIRE_NOTHROW(proxy.Call("rx_threads", {}, -1, GET, oss));
|
||||
}
|
||||
|
||||
/* File */
|
||||
|
||||
TEST_CASE("fformat", "[.cmd][.new]") {
|
||||
|
@ -126,6 +126,18 @@ TEST_CASE("detsize", "[.cmd][.new]") {
|
||||
REQUIRE_NOTHROW(proxy.Call("detsize", {}, -1, GET));
|
||||
}
|
||||
|
||||
TEST_CASE("settingslist", "[.cmd][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type == defs::CHIPTESTBOARD || det_type == defs::MYTHEN3) {
|
||||
REQUIRE_THROWS(proxy.Call("settingslist", {}, -1, GET));
|
||||
} else {
|
||||
REQUIRE_NOTHROW(proxy.Call("settingslist", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("settingslist", {}, -1, PUT));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("settings", "[.cmd][.new]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
|
@ -36,6 +36,7 @@ ClientInterface::ClientInterface(int portNumber)
|
||||
portNumber(portNumber > 0 ? portNumber : DEFAULT_PORTNO + 2),
|
||||
server(portNumber) {
|
||||
functionTable();
|
||||
parentThreadId = syscall(SYS_gettid);
|
||||
// start up tcp thread
|
||||
tcpThread =
|
||||
sls::make_unique<std::thread>(&ClientInterface::startTCPServer, this);
|
||||
@ -71,8 +72,8 @@ void ClientInterface::registerCallBackRawDataModifyReady(
|
||||
}
|
||||
|
||||
void ClientInterface::startTCPServer() {
|
||||
LOG(logINFOBLUE) << "Created [ TCP server Tid: " << syscall(SYS_gettid)
|
||||
<< "]";
|
||||
tcpThreadId = syscall(SYS_gettid);
|
||||
LOG(logINFOBLUE) << "Created [ TCP server Tid: " << tcpThreadId << "]";
|
||||
LOG(logINFO) << "SLS Receiver starting TCP Server on port " << portNumber
|
||||
<< '\n';
|
||||
// server = sls::make_unique<sls::ServerSocket>(portNumber);
|
||||
@ -102,8 +103,7 @@ void ClientInterface::startTCPServer() {
|
||||
if (receiver) {
|
||||
receiver->shutDownUDPSockets();
|
||||
}
|
||||
LOG(logINFOBLUE) << "Exiting [ TCP server Tid: " << syscall(SYS_gettid)
|
||||
<< "]";
|
||||
LOG(logINFOBLUE) << "Exiting [ TCP server Tid: " << tcpThreadId << "]";
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
@ -199,6 +199,7 @@ int ClientInterface::functionTable(){
|
||||
flist[F_GET_RECEIVER_PROGRESS] = &ClientInterface::get_progress;
|
||||
flist[F_SET_RECEIVER_NUM_GATES] = &ClientInterface::set_num_gates;
|
||||
flist[F_SET_RECEIVER_GATE_DELAY] = &ClientInterface::set_gate_delay;
|
||||
flist[F_GET_RECEIVER_THREAD_IDS] = &ClientInterface::get_thread_ids;
|
||||
|
||||
for (int i = NUM_DET_FUNCTIONS + 1; i < NUM_REC_FUNCTIONS ; i++) {
|
||||
LOG(logDEBUG1) << "function fnum: " << i << " (" <<
|
||||
@ -564,6 +565,8 @@ void ClientInterface::setDetectorType(detectorType arg) {
|
||||
if (rawDataModifyReadyCallBack != nullptr)
|
||||
impl()->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,
|
||||
pRawDataReady);
|
||||
|
||||
impl()->setThreadIds(parentThreadId, tcpThreadId);
|
||||
}
|
||||
|
||||
int ClientInterface::set_roi(Interface &socket) {
|
||||
@ -1747,3 +1750,9 @@ int ClientInterface::set_gate_delay(Interface &socket) {
|
||||
}
|
||||
return socket.Send(OK);
|
||||
}
|
||||
|
||||
int ClientInterface::get_thread_ids(Interface &socket) {
|
||||
auto retval = impl()->getThreadIds();
|
||||
LOG(logDEBUG1) << "thread ids retval: " << sls::ToString(retval);
|
||||
return socket.sendResult(retval);
|
||||
}
|
@ -155,6 +155,7 @@ class ClientInterface : private virtual slsDetectorDefs {
|
||||
int get_progress(sls::ServerInterface &socket);
|
||||
int set_num_gates(sls::ServerInterface &socket);
|
||||
int set_gate_delay(sls::ServerInterface &socket);
|
||||
int get_thread_ids(sls::ServerInterface &socket);
|
||||
|
||||
Implementation *impl() {
|
||||
if (receiver != nullptr) {
|
||||
@ -179,4 +180,7 @@ class ClientInterface : private virtual slsDetectorDefs {
|
||||
void (*rawDataModifyReadyCallBack)(char *, char *, uint32_t &,
|
||||
void *) = nullptr;
|
||||
void *pRawDataReady{nullptr};
|
||||
|
||||
pid_t parentThreadId{0};
|
||||
pid_t tcpThreadId{0};
|
||||
};
|
||||
|
@ -31,48 +31,29 @@ HDF5File::HDF5File(int ind, uint32_t *maxf, int *nd, std::string *fname,
|
||||
parameterNames.clear();
|
||||
parameterDataTypes.clear();
|
||||
|
||||
parameterNames.push_back("frame number");
|
||||
parameterDataTypes.push_back(PredType::STD_U64LE);
|
||||
|
||||
parameterNames.push_back("exp length or sub exposure time");
|
||||
parameterDataTypes.push_back(PredType::STD_U32LE);
|
||||
|
||||
parameterNames.push_back("packets caught");
|
||||
parameterDataTypes.push_back(PredType::STD_U32LE);
|
||||
|
||||
parameterNames.push_back("bunch id");
|
||||
parameterDataTypes.push_back(PredType::STD_U64LE);
|
||||
|
||||
parameterNames.push_back("timestamp");
|
||||
parameterDataTypes.push_back(PredType::STD_U64LE);
|
||||
|
||||
parameterNames.push_back("mod id");
|
||||
parameterDataTypes.push_back(PredType::STD_U16LE);
|
||||
|
||||
parameterNames.push_back("row");
|
||||
parameterDataTypes.push_back(PredType::STD_U16LE);
|
||||
|
||||
parameterNames.push_back("column");
|
||||
parameterDataTypes.push_back(PredType::STD_U16LE);
|
||||
|
||||
parameterNames.push_back("reserved");
|
||||
parameterDataTypes.push_back(PredType::STD_U16LE);
|
||||
|
||||
parameterNames.push_back("debug");
|
||||
parameterDataTypes.push_back(PredType::STD_U32LE);
|
||||
|
||||
parameterNames.push_back("round robin number");
|
||||
parameterDataTypes.push_back(PredType::STD_U16LE);
|
||||
|
||||
parameterNames.push_back("detector type");
|
||||
parameterDataTypes.push_back(PredType::STD_U8LE);
|
||||
|
||||
parameterNames.push_back("detector header version");
|
||||
parameterDataTypes.push_back(PredType::STD_U8LE);
|
||||
|
||||
parameterNames.push_back("packets caught bit mask");
|
||||
parameterNames = std::vector<std::string>{
|
||||
"frame number",
|
||||
"exp length or sub exposure time",
|
||||
"packets caught",
|
||||
"bunch id",
|
||||
"timestamp",
|
||||
"mod id",
|
||||
"row",
|
||||
"column",
|
||||
"reserved",
|
||||
"debug",
|
||||
"round robin number",
|
||||
"detector type",
|
||||
"detector header version",
|
||||
"packets caught bit mask",
|
||||
};
|
||||
StrType strdatatype(PredType::C_S1, sizeof(bitset_storage));
|
||||
parameterDataTypes.push_back(strdatatype);
|
||||
parameterDataTypes = std::vector<DataType>{
|
||||
PredType::STD_U64LE, PredType::STD_U32LE, PredType::STD_U32LE,
|
||||
PredType::STD_U64LE, PredType::STD_U64LE, PredType::STD_U16LE,
|
||||
PredType::STD_U16LE, PredType::STD_U16LE, PredType::STD_U16LE,
|
||||
PredType::STD_U32LE, PredType::STD_U16LE, PredType::STD_U8LE,
|
||||
PredType::STD_U8LE, strdatatype};
|
||||
}
|
||||
|
||||
HDF5File::~HDF5File() { CloseAllFiles(); }
|
||||
@ -461,8 +442,8 @@ void HDF5File::CreateDataFile() {
|
||||
paralist.setChunk(1, chunkpara_dims);
|
||||
|
||||
for (unsigned int i = 0; i < parameterNames.size(); ++i) {
|
||||
DataSet *ds = new DataSet(
|
||||
filefd->createDataSet(parameterNames[i], parameterDataTypes[i],
|
||||
DataSet *ds = new DataSet(filefd->createDataSet(
|
||||
parameterNames[i].c_str(), parameterDataTypes[i],
|
||||
*dataspace_para, paralist));
|
||||
dataset_para.push_back(ds);
|
||||
}
|
||||
@ -1011,7 +992,7 @@ void HDF5File::CreateVirtualDataFile(uint32_t maxFramesPerFile, uint64_t numf) {
|
||||
for (unsigned int k = 0; k < parameterNames.size(); ++k) {
|
||||
if (H5Pset_virtual(dcpl_para[k], vdsDataspace_para,
|
||||
relative_srcFileName.c_str(),
|
||||
parameterNames[k],
|
||||
parameterNames[k].c_str(),
|
||||
srcDataspace_para) < 0) {
|
||||
throw sls::RuntimeError(
|
||||
"Could not set mapping for paramter " +
|
||||
@ -1043,7 +1024,7 @@ void HDF5File::CreateVirtualDataFile(uint32_t maxFramesPerFile, uint64_t numf) {
|
||||
// virtual parameter dataset
|
||||
for (unsigned int i = 0; i < parameterNames.size(); ++i) {
|
||||
hid_t vdsdataset_para = H5Dcreate2(
|
||||
virtualfd, parameterNames[i],
|
||||
virtualfd, parameterNames[i].c_str(),
|
||||
GetDataTypeinC(parameterDataTypes[i]), vdsDataspace_para,
|
||||
H5P_DEFAULT, dcpl_para[i], H5P_DEFAULT);
|
||||
if (vdsdataset_para < 0)
|
||||
@ -1134,9 +1115,8 @@ void HDF5File::LinkVirtualInMaster(std::string fname, std::string dsetname) {
|
||||
(std::string(parameterNames[i])).c_str());
|
||||
|
||||
if (H5Lcreate_external(relative_virtualfname.c_str(),
|
||||
(std::string(parameterNames[i])).c_str(),
|
||||
mfd, linkname, H5P_DEFAULT,
|
||||
H5P_DEFAULT) < 0) {
|
||||
parameterNames[i].c_str(), mfd, linkname,
|
||||
H5P_DEFAULT, H5P_DEFAULT) < 0) {
|
||||
H5Fclose(mfd);
|
||||
mfd = 0;
|
||||
throw sls::RuntimeError(
|
||||
|
@ -84,7 +84,7 @@ class HDF5File : private virtual slsDetectorDefs, public File {
|
||||
uint64_t numActualPacketsInFile;
|
||||
int numFilesinAcquisition;
|
||||
|
||||
std::vector<const char *> parameterNames;
|
||||
std::vector<std::string> parameterNames;
|
||||
std::vector<DataType> parameterDataTypes;
|
||||
DataSpace *dataspace_para;
|
||||
std::vector<DataSet *> dataset_para;
|
||||
|
@ -445,6 +445,37 @@ void Implementation::setFramePaddingEnable(const bool i) {
|
||||
LOG(logINFO) << "Frame Padding: " << framePadding;
|
||||
}
|
||||
|
||||
void Implementation::setThreadIds(const pid_t parentTid, const pid_t tcpTid) {
|
||||
parentThreadId = parentTid;
|
||||
tcpThreadId = tcpTid;
|
||||
}
|
||||
|
||||
std::array<pid_t, NUM_RX_THREAD_IDS> Implementation::getThreadIds() const {
|
||||
LOG(logDEBUG3) << __SHORT_AT__ << " called";
|
||||
|
||||
std::array<pid_t, NUM_RX_THREAD_IDS> retval{};
|
||||
int id = 0;
|
||||
retval[id++] = parentThreadId;
|
||||
retval[id++] = tcpThreadId;
|
||||
retval[id++] = listener[0]->GetThreadId();
|
||||
retval[id++] = dataProcessor[0]->GetThreadId();
|
||||
if (dataStreamEnable) {
|
||||
retval[id++] = dataStreamer[0]->GetThreadId();
|
||||
} else {
|
||||
retval[id++] = 0;
|
||||
}
|
||||
if (numThreads == 2) {
|
||||
retval[id++] = listener[1]->GetThreadId();
|
||||
retval[id++] = dataProcessor[1]->GetThreadId();
|
||||
if (dataStreamEnable) {
|
||||
retval[id++] = dataStreamer[1]->GetThreadId();
|
||||
} else {
|
||||
retval[id++] = 0;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
* *
|
||||
* File Parameters *
|
||||
|
@ -42,6 +42,8 @@ class Implementation : private virtual slsDetectorDefs {
|
||||
void setFrameDiscardPolicy(const frameDiscardPolicy i);
|
||||
bool getFramePaddingEnable() const;
|
||||
void setFramePaddingEnable(const bool i);
|
||||
void setThreadIds(const pid_t parentTid, const pid_t tcpTid);
|
||||
std::array<pid_t, NUM_RX_THREAD_IDS> getThreadIds() const;
|
||||
|
||||
/**************************************************
|
||||
* *
|
||||
@ -269,6 +271,8 @@ class Implementation : private virtual slsDetectorDefs {
|
||||
uint32_t fifoDepth;
|
||||
frameDiscardPolicy frameDiscardMode;
|
||||
bool framePadding;
|
||||
pid_t parentThreadId;
|
||||
pid_t tcpThreadId;
|
||||
|
||||
// file parameters
|
||||
fileFormat fileFormatType;
|
||||
|
@ -28,6 +28,8 @@ ThreadObject::~ThreadObject() {
|
||||
sem_destroy(&semaphore);
|
||||
}
|
||||
|
||||
pid_t ThreadObject::GetThreadId() const { return threadId; }
|
||||
|
||||
bool ThreadObject::IsRunning() const { return runningFlag; }
|
||||
|
||||
void ThreadObject::StartRunning() { runningFlag = true; }
|
||||
@ -35,8 +37,9 @@ void ThreadObject::StartRunning() { runningFlag = true; }
|
||||
void ThreadObject::StopRunning() { runningFlag = false; }
|
||||
|
||||
void ThreadObject::RunningThread() {
|
||||
threadId = syscall(SYS_gettid);
|
||||
LOG(logINFOBLUE) << "Created [ " << type << "Thread " << index
|
||||
<< ", Tid: " << syscall(SYS_gettid) << "]";
|
||||
<< ", Tid: " << threadId << "]";
|
||||
while (!killThread) {
|
||||
while (IsRunning()) {
|
||||
ThreadExecution();
|
||||
@ -45,7 +48,8 @@ void ThreadObject::RunningThread() {
|
||||
sem_wait(&semaphore);
|
||||
}
|
||||
LOG(logINFOBLUE) << "Exiting [ " << type << " Thread " << index
|
||||
<< ", Tid: " << syscall(SYS_gettid) << "]";
|
||||
<< ", Tid: " << threadId << "]";
|
||||
threadId = 0;
|
||||
}
|
||||
|
||||
void ThreadObject::Continue() { sem_post(&semaphore); }
|
||||
|
@ -25,10 +25,12 @@ class ThreadObject : private virtual slsDetectorDefs {
|
||||
std::thread threadObject;
|
||||
sem_t semaphore;
|
||||
const std::string type;
|
||||
pid_t threadId{0};
|
||||
|
||||
public:
|
||||
ThreadObject(int threadIndex, std::string threadType);
|
||||
virtual ~ThreadObject();
|
||||
pid_t GetThreadId() const;
|
||||
bool IsRunning() const;
|
||||
void StartRunning();
|
||||
void StopRunning();
|
||||
|
@ -34,6 +34,8 @@ std::string ToString(const defs::externalSignalFlag s);
|
||||
std::string ToString(const defs::readoutMode s);
|
||||
std::string ToString(const defs::frameModeType s);
|
||||
std::string ToString(const defs::detectorModeType s);
|
||||
std::string ToString(const defs::dacIndex s);
|
||||
std::string ToString(const std::vector<defs::dacIndex> &vec);
|
||||
std::string ToString(const defs::burstMode s);
|
||||
std::string ToString(const defs::timingSourceType s);
|
||||
|
||||
@ -261,4 +263,13 @@ ToString(const T &obj) {
|
||||
return obj.str();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
std::vector<T> StringTo(const std::vector<std::string>& strings){
|
||||
std::vector<T> result;
|
||||
result.reserve(strings.size());
|
||||
for (const auto& s : strings)
|
||||
result.push_back(StringTo<T>(s));
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace sls
|
||||
|
@ -64,6 +64,8 @@
|
||||
|
||||
#define DEFAULT_STREAMING_TIMER_IN_MS 200
|
||||
|
||||
#define NUM_RX_THREAD_IDS 8
|
||||
|
||||
#ifdef __cplusplus
|
||||
class slsDetectorDefs {
|
||||
public:
|
||||
@ -230,14 +232,42 @@ typedef struct {
|
||||
detector dacs indexes
|
||||
*/
|
||||
enum dacIndex {
|
||||
THRESHOLD,
|
||||
CALIBRATION_PULSE,
|
||||
TRIMBIT_SIZE,
|
||||
PREAMP,
|
||||
SHAPER1,
|
||||
SHAPER2,
|
||||
TEMPERATURE_ADC,
|
||||
TEMPERATURE_FPGA,
|
||||
DAC_0,
|
||||
DAC_1,
|
||||
DAC_2,
|
||||
DAC_3,
|
||||
DAC_4,
|
||||
DAC_5,
|
||||
DAC_6,
|
||||
DAC_7,
|
||||
DAC_8,
|
||||
DAC_9,
|
||||
DAC_10,
|
||||
DAC_11,
|
||||
DAC_12,
|
||||
DAC_13,
|
||||
DAC_14,
|
||||
DAC_15,
|
||||
DAC_16,
|
||||
DAC_17,
|
||||
VSVP,
|
||||
VTRIM,
|
||||
VRPREAMP,
|
||||
VRSHAPER,
|
||||
VSVN,
|
||||
VTGSTV,
|
||||
VCMP_LL,
|
||||
VCMP_LR,
|
||||
VCAL,
|
||||
VCMP_RL,
|
||||
RXB_RB,
|
||||
RXB_LB,
|
||||
VCMP_RR,
|
||||
VCP,
|
||||
VCN,
|
||||
VISHAPER,
|
||||
VTHRESHOLD,
|
||||
IO_DELAY,
|
||||
VREF_DS,
|
||||
VCASCN_PB,
|
||||
VCASCP_PB,
|
||||
@ -246,42 +276,12 @@ typedef struct {
|
||||
VIN_CM,
|
||||
VREF_COMP,
|
||||
IB_TESTC,
|
||||
SVP,
|
||||
SVN,
|
||||
VTR,
|
||||
VRF,
|
||||
VRS,
|
||||
VTGSTV,
|
||||
VCMP_LL,
|
||||
VCMP_LR,
|
||||
CAL,
|
||||
VCMP_RL,
|
||||
VCMP_RR,
|
||||
RXB_RB,
|
||||
RXB_LB,
|
||||
VCP,
|
||||
VCN,
|
||||
VIS,
|
||||
IO_DELAY,
|
||||
ADC_VPP,
|
||||
HIGH_VOLTAGE,
|
||||
TEMPERATURE_FPGAEXT,
|
||||
TEMPERATURE_10GE,
|
||||
TEMPERATURE_DCDC,
|
||||
TEMPERATURE_SODL,
|
||||
TEMPERATURE_SODR,
|
||||
TEMPERATURE_FPGA2,
|
||||
TEMPERATURE_FPGA3,
|
||||
VIPRE,
|
||||
VIINSH,
|
||||
VDCSH,
|
||||
VTH2,
|
||||
VPL,
|
||||
VTH3,
|
||||
CASSH,
|
||||
CAS,
|
||||
VICIN,
|
||||
VIPRE_OUT,
|
||||
VB_COMP,
|
||||
VDD_PROT,
|
||||
VIN_COM,
|
||||
VREF_PRECH,
|
||||
VB_PIXBUF,
|
||||
VB_DS,
|
||||
VREF_H_ADC,
|
||||
VB_COMP_FE,
|
||||
VB_COMP_ADC,
|
||||
@ -290,22 +290,39 @@ typedef struct {
|
||||
VB_OPA_1ST,
|
||||
VREF_COMP_FE,
|
||||
VCOM_ADC1,
|
||||
VREF_PRECH,
|
||||
VREF_L_ADC,
|
||||
VREF_CDS,
|
||||
VB_CS,
|
||||
VB_OPA_FD,
|
||||
VCOM_ADC2,
|
||||
VB_DS,
|
||||
VB_COMP,
|
||||
VB_PIXBUF,
|
||||
VIN_COM,
|
||||
VDD_PROT,
|
||||
VCASSH,
|
||||
VTH2,
|
||||
VRSHAPER_N,
|
||||
VIPRE_OUT,
|
||||
VTH3,
|
||||
VTH1,
|
||||
VICIN,
|
||||
VCAS,
|
||||
VCAL_N,
|
||||
VIPRE,
|
||||
VCAL_P,
|
||||
VDCSH,
|
||||
VBP_COLBUF,
|
||||
VB_SDA,
|
||||
VCASC_SFP,
|
||||
VIPRE_CDS,
|
||||
IBIAS_SFP,
|
||||
ADC_VPP,
|
||||
HIGH_VOLTAGE,
|
||||
TEMPERATURE_ADC,
|
||||
TEMPERATURE_FPGA,
|
||||
TEMPERATURE_FPGAEXT,
|
||||
TEMPERATURE_10GE,
|
||||
TEMPERATURE_DCDC,
|
||||
TEMPERATURE_SODL,
|
||||
TEMPERATURE_SODR,
|
||||
TEMPERATURE_FPGA2,
|
||||
TEMPERATURE_FPGA3,
|
||||
V_POWER_A = 100,
|
||||
V_POWER_B = 101,
|
||||
V_POWER_C = 102,
|
||||
|
@ -303,6 +303,7 @@ enum detFuncs {
|
||||
F_SETUP_RECEIVER,
|
||||
F_SET_RECEIVER_NUM_GATES,
|
||||
F_SET_RECEIVER_GATE_DELAY,
|
||||
F_GET_RECEIVER_THREAD_IDS,
|
||||
|
||||
NUM_REC_FUNCTIONS
|
||||
};
|
||||
@ -607,6 +608,7 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
||||
case F_SETUP_RECEIVER: return "F_SETUP_RECEIVER";
|
||||
case F_SET_RECEIVER_NUM_GATES: return "F_SET_RECEIVER_NUM_GATES";
|
||||
case F_SET_RECEIVER_GATE_DELAY: return "F_SET_RECEIVER_GATE_DELAY";
|
||||
case F_GET_RECEIVER_THREAD_IDS: return "F_GET_RECEIVER_THREAD_IDS";
|
||||
|
||||
case NUM_REC_FUNCTIONS: return "NUM_REC_FUNCTIONS";
|
||||
default: return "Unknown Function";
|
||||
|
@ -3,10 +3,10 @@
|
||||
#define APILIB 0x200409
|
||||
#define APIRECEIVER 0x200409
|
||||
#define APIGUI 0x200409
|
||||
#define APICTB 0x200605
|
||||
#define APIGOTTHARD 0x200605
|
||||
#define APIGOTTHARD2 0x200605
|
||||
#define APIJUNGFRAU 0x200605
|
||||
#define APIMOENCH 0x200605
|
||||
#define APIEIGER 0x200605
|
||||
#define APIMYTHEN3 0x200608
|
||||
#define APICTB 0x200609
|
||||
#define APIGOTTHARD 0x200609
|
||||
#define APIGOTTHARD2 0x200609
|
||||
#define APIJUNGFRAU 0x200609
|
||||
#define APIMYTHEN3 0x200609
|
||||
#define APIMOENCH 0x200608
|
||||
#define APIEIGER 0x200609
|
||||
|
@ -215,6 +215,184 @@ std::string ToString(const defs::detectorModeType s) {
|
||||
}
|
||||
}
|
||||
|
||||
std::string ToString(const defs::dacIndex s) {
|
||||
switch (s) {
|
||||
case defs::DAC_0:
|
||||
return std::string("dac 0");
|
||||
case defs::DAC_1:
|
||||
return std::string("dac 1");
|
||||
case defs::DAC_2:
|
||||
return std::string("dac 2");
|
||||
case defs::DAC_3:
|
||||
return std::string("dac 3");
|
||||
case defs::DAC_4:
|
||||
return std::string("dac 4");
|
||||
case defs::DAC_5:
|
||||
return std::string("dac 5");
|
||||
case defs::DAC_6:
|
||||
return std::string("dac 6");
|
||||
case defs::DAC_7:
|
||||
return std::string("dac 7");
|
||||
case defs::DAC_8:
|
||||
return std::string("dac 8");
|
||||
case defs::DAC_9:
|
||||
return std::string("dac 9");
|
||||
case defs::DAC_10:
|
||||
return std::string("dac 10");
|
||||
case defs::DAC_11:
|
||||
return std::string("dac 11");
|
||||
case defs::DAC_12:
|
||||
return std::string("dac 12");
|
||||
case defs::DAC_13:
|
||||
return std::string("dac 13");
|
||||
case defs::DAC_14:
|
||||
return std::string("dac 14");
|
||||
case defs::DAC_15:
|
||||
return std::string("dac 15");
|
||||
case defs::DAC_16:
|
||||
return std::string("dac 16");
|
||||
case defs::DAC_17:
|
||||
return std::string("dac 17");
|
||||
case defs::VSVP:
|
||||
return std::string("vsvp");
|
||||
case defs::VTRIM:
|
||||
return std::string("vtrim");
|
||||
case defs::VRPREAMP:
|
||||
return std::string("vrpreamp");
|
||||
case defs::VRSHAPER:
|
||||
return std::string("vrshaper");
|
||||
case defs::VSVN:
|
||||
return std::string("vsvn");
|
||||
case defs::VTGSTV:
|
||||
return std::string("vtgstv");
|
||||
case defs::VCMP_LL:
|
||||
return std::string("vcmp_ll");
|
||||
case defs::VCMP_LR:
|
||||
return std::string("vcmp_lr");
|
||||
case defs::VCAL:
|
||||
return std::string("vcal");
|
||||
case defs::VCMP_RL:
|
||||
return std::string("vcmp_rl");
|
||||
case defs::RXB_RB:
|
||||
return std::string("rxb_rb");
|
||||
case defs::RXB_LB:
|
||||
return std::string("rxb_lb");
|
||||
case defs::VCMP_RR:
|
||||
return std::string("vcmp_rr");
|
||||
case defs::VCP:
|
||||
return std::string("vcp");
|
||||
case defs::VCN:
|
||||
return std::string("vcn");
|
||||
case defs::VISHAPER:
|
||||
return std::string("vishaper");
|
||||
case defs::VTHRESHOLD:
|
||||
return std::string("vthreshold");
|
||||
case defs::VREF_DS:
|
||||
return std::string("vref_ds");
|
||||
case defs::VCASCN_PB:
|
||||
return std::string("vcascn_pb");
|
||||
case defs::VCASCP_PB:
|
||||
return std::string("vcascp_pb");
|
||||
case defs::VOUT_CM:
|
||||
return std::string("vout_cm");
|
||||
case defs::VCASC_OUT:
|
||||
return std::string("vcasc_out");
|
||||
case defs::VIN_CM:
|
||||
return std::string("vin_cm");
|
||||
case defs::VREF_COMP:
|
||||
return std::string("vref_comp");
|
||||
case defs::IB_TESTC:
|
||||
return std::string("ib_test_c");
|
||||
case defs::VB_COMP:
|
||||
return std::string("vb_comp");
|
||||
case defs::VDD_PROT:
|
||||
return std::string("vdd_prot");
|
||||
case defs::VIN_COM:
|
||||
return std::string("vin_com");
|
||||
case defs::VREF_PRECH:
|
||||
return std::string("vref_prech");
|
||||
case defs::VB_PIXBUF:
|
||||
return std::string("vb_pixbuf");
|
||||
case defs::VB_DS:
|
||||
return std::string("vb_ds");
|
||||
case defs::VREF_H_ADC:
|
||||
return std::string("vref_h_adc");
|
||||
case defs::VB_COMP_FE:
|
||||
return std::string("vb_comp_fe");
|
||||
case defs::VB_COMP_ADC:
|
||||
return std::string("vb_comp_adc");
|
||||
case defs::VCOM_CDS:
|
||||
return std::string("vcom_cds");
|
||||
case defs::VREF_RSTORE:
|
||||
return std::string("vref_rstore");
|
||||
case defs::VB_OPA_1ST:
|
||||
return std::string("vb_opa_1st");
|
||||
case defs::VREF_COMP_FE:
|
||||
return std::string("vref_comp_fe");
|
||||
case defs::VCOM_ADC1:
|
||||
return std::string("vcom_adc1");
|
||||
case defs::VREF_L_ADC:
|
||||
return std::string("vref_l_adc");
|
||||
case defs::VREF_CDS:
|
||||
return std::string("vref_cds");
|
||||
case defs::VB_CS:
|
||||
return std::string("vb_cs");
|
||||
case defs::VB_OPA_FD:
|
||||
return std::string("vb_opa_fd");
|
||||
case defs::VCOM_ADC2:
|
||||
return std::string("vcom_adc2");
|
||||
case defs::VCASSH:
|
||||
return std::string("vcassh");
|
||||
case defs::VTH2:
|
||||
return std::string("vth2");
|
||||
case defs::VRSHAPER_N:
|
||||
return std::string("vrshaper_n");
|
||||
case defs::VIPRE_OUT:
|
||||
return std::string("vipre_out");
|
||||
case defs::VTH3:
|
||||
return std::string("vth3");
|
||||
case defs::VTH1:
|
||||
return std::string("vth1");
|
||||
case defs::VICIN:
|
||||
return std::string("vicin");
|
||||
case defs::VCAS:
|
||||
return std::string("vcas");
|
||||
case defs::VCAL_N:
|
||||
return std::string("vcal_n");
|
||||
case defs::VIPRE:
|
||||
return std::string("vipre");
|
||||
case defs::VCAL_P:
|
||||
return std::string("vcal_p");
|
||||
case defs::VDCSH:
|
||||
return std::string("vdcsh");
|
||||
case defs::VBP_COLBUF:
|
||||
return std::string("vbp_colbuf");
|
||||
case defs::VB_SDA:
|
||||
return std::string("vb_sda");
|
||||
case defs::VCASC_SFP:
|
||||
return std::string("vcasc_sfp");
|
||||
case defs::VIPRE_CDS:
|
||||
return std::string("vipre_cds");
|
||||
case defs::IBIAS_SFP:
|
||||
return std::string("ibias_sfp");
|
||||
default:
|
||||
return std::string("Unknown");
|
||||
}
|
||||
}
|
||||
|
||||
std::string ToString(const std::vector<defs::dacIndex> &vec) {
|
||||
std::ostringstream os;
|
||||
os << '[';
|
||||
if (!vec.empty()) {
|
||||
auto it = vec.begin();
|
||||
os << ToString(*it++);
|
||||
while (it != vec.end())
|
||||
os << ", " << ToString(*it++);
|
||||
}
|
||||
os << ']';
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string ToString(const defs::burstMode s) {
|
||||
switch (s) {
|
||||
case defs::BURST_OFF:
|
||||
@ -392,26 +570,164 @@ template <> defs::detectorModeType StringTo(const std::string &s) {
|
||||
}
|
||||
|
||||
template <> defs::dacIndex StringTo(const std::string &s) {
|
||||
if (s == "dac 0")
|
||||
return defs::DAC_0;
|
||||
if (s == "dac 1")
|
||||
return defs::DAC_1;
|
||||
if (s == "dac 2")
|
||||
return defs::DAC_2;
|
||||
if (s == "dac 3")
|
||||
return defs::DAC_3;
|
||||
if (s == "dac 4")
|
||||
return defs::DAC_4;
|
||||
if (s == "dac 5")
|
||||
return defs::DAC_5;
|
||||
if (s == "dac 6")
|
||||
return defs::DAC_6;
|
||||
if (s == "dac 7")
|
||||
return defs::DAC_7;
|
||||
if (s == "dac 8")
|
||||
return defs::DAC_8;
|
||||
if (s == "dac 9")
|
||||
return defs::DAC_9;
|
||||
if (s == "dac 10")
|
||||
return defs::DAC_10;
|
||||
if (s == "dac 11")
|
||||
return defs::DAC_11;
|
||||
if (s == "dac 12")
|
||||
return defs::DAC_12;
|
||||
if (s == "dac 13")
|
||||
return defs::DAC_13;
|
||||
if (s == "dac 14")
|
||||
return defs::DAC_14;
|
||||
if (s == "dac 15")
|
||||
return defs::DAC_15;
|
||||
if (s == "dac 16")
|
||||
return defs::DAC_16;
|
||||
if (s == "dac 17")
|
||||
return defs::DAC_17;
|
||||
if (s == "vsvp")
|
||||
return defs::VSVP;
|
||||
if (s == "vtrim")
|
||||
return defs::VTRIM;
|
||||
if (s == "vrpreamp")
|
||||
return defs::VRPREAMP;
|
||||
if (s == "vrshaper")
|
||||
return defs::VRSHAPER;
|
||||
if (s == "vsvn")
|
||||
return defs::VSVN;
|
||||
if (s == "vtgstv")
|
||||
return defs::VTGSTV;
|
||||
if (s == "vcmp_ll")
|
||||
return defs::VCMP_LL;
|
||||
if (s == "vcmp_lr")
|
||||
return defs::VCMP_LR;
|
||||
if (s == "vcal")
|
||||
return defs::VCAL;
|
||||
if (s == "vcmp_rl")
|
||||
return defs::VCMP_RL;
|
||||
if (s == "rxb_rb")
|
||||
return defs::RXB_RB;
|
||||
if (s == "rxb_lb")
|
||||
return defs::RXB_LB;
|
||||
if (s == "vcmp_rr")
|
||||
return defs::VCMP_RR;
|
||||
if (s == "vthreshold")
|
||||
return defs::THRESHOLD;
|
||||
if (s == "vrf")
|
||||
return defs::VRF;
|
||||
if (s == "vrs")
|
||||
return defs::VRS;
|
||||
if (s == "vtr")
|
||||
return defs::VTR;
|
||||
if (s == "vcall")
|
||||
return defs::CAL;
|
||||
if (s == "vcp")
|
||||
return defs::VCP;
|
||||
if (s == "vcn")
|
||||
return defs::VCN;
|
||||
if (s == "vishaper")
|
||||
return defs::VISHAPER;
|
||||
if (s == "vthreshold")
|
||||
return defs::VTHRESHOLD;
|
||||
if (s == "vref_ds")
|
||||
return defs::VREF_DS;
|
||||
if (s == "vcascn_pb")
|
||||
return defs::VCASCN_PB;
|
||||
if (s == "vcascp_pb")
|
||||
return defs::VCASCP_PB;
|
||||
if (s == "vout_cm")
|
||||
return defs::VOUT_CM;
|
||||
if (s == "vcasc_out")
|
||||
return defs::VCASC_OUT;
|
||||
if (s == "vin_cm")
|
||||
return defs::VIN_CM;
|
||||
if (s == "vref_comp")
|
||||
return defs::VREF_COMP;
|
||||
if (s == "ib_test_c")
|
||||
return defs::IB_TESTC;
|
||||
if (s == "vb_comp")
|
||||
return defs::VB_COMP;
|
||||
if (s == "vdd_prot")
|
||||
return defs::VDD_PROT;
|
||||
if (s == "vin_com")
|
||||
return defs::VIN_COM;
|
||||
if (s == "vref_prech")
|
||||
return defs::VREF_PRECH;
|
||||
if (s == "vb_pixbuf")
|
||||
return defs::VB_PIXBUF;
|
||||
if (s == "vb_ds")
|
||||
return defs::VB_DS;
|
||||
if (s == "vref_h_adc")
|
||||
return defs::VREF_H_ADC;
|
||||
if (s == "vb_comp_fe")
|
||||
return defs::VB_COMP_FE;
|
||||
if (s == "vb_comp_adc")
|
||||
return defs::VB_COMP_ADC;
|
||||
if (s == "vcom_cds")
|
||||
return defs::VCOM_CDS;
|
||||
if (s == "vref_rstore")
|
||||
return defs::VREF_RSTORE;
|
||||
if (s == "vb_opa_1st")
|
||||
return defs::VB_OPA_1ST;
|
||||
if (s == "vref_comp_fe")
|
||||
return defs::VREF_COMP_FE;
|
||||
if (s == "vcom_adc1")
|
||||
return defs::VCOM_ADC1;
|
||||
if (s == "vref_l_adc")
|
||||
return defs::VREF_L_ADC;
|
||||
if (s == "vref_cds")
|
||||
return defs::VREF_CDS;
|
||||
if (s == "vb_cs")
|
||||
return defs::VB_CS;
|
||||
if (s == "vb_opa_fd")
|
||||
return defs::VB_OPA_FD;
|
||||
if (s == "vcom_adc2")
|
||||
return defs::VCOM_ADC2;
|
||||
if (s == "vcassh")
|
||||
return defs::VCASSH;
|
||||
if (s == "vth2")
|
||||
return defs::VTH2;
|
||||
if (s == "vrshaper_n")
|
||||
return defs::VRSHAPER_N;
|
||||
if (s == "vipre_out")
|
||||
return defs::VIPRE_OUT;
|
||||
if (s == "vth3")
|
||||
return defs::VTH3;
|
||||
if (s == "vth1")
|
||||
return defs::VTH1;
|
||||
if (s == "vicin")
|
||||
return defs::VICIN;
|
||||
if (s == "vcas")
|
||||
return defs::VCAS;
|
||||
if (s == "vcal_n")
|
||||
return defs::VCAL_N;
|
||||
if (s == "vipre")
|
||||
return defs::VIPRE;
|
||||
if (s == "vcal_p")
|
||||
return defs::VCAL_P;
|
||||
if (s == "vdcsh")
|
||||
return defs::VDCSH;
|
||||
if (s == "vbp_colbuf")
|
||||
return defs::VBP_COLBUF;
|
||||
if (s == "vb_sda")
|
||||
return defs::VB_SDA;
|
||||
if (s == "vcasc_sfp")
|
||||
return defs::VCASC_SFP;
|
||||
if (s == "vipre_cds")
|
||||
return defs::VIPRE_CDS;
|
||||
if (s == "ibias_sfp")
|
||||
return defs::IBIAS_SFP;
|
||||
throw sls::RuntimeError("Unknown dac Index " + s);
|
||||
}
|
||||
|
||||
|
@ -237,4 +237,27 @@ TEST_CASE("std::array"){
|
||||
REQUIRE(ToString(arr) == "[4, 6, 7]");
|
||||
}
|
||||
|
||||
TEST_CASE("string to dac index") {
|
||||
// test a few dacs
|
||||
REQUIRE(defs::VCAL == StringTo<defs::dacIndex>("vcal"));
|
||||
REQUIRE(defs::VIN_CM == StringTo<defs::dacIndex>("vin_cm"));
|
||||
REQUIRE(defs::VB_DS == StringTo<defs::dacIndex>("vb_ds"));
|
||||
}
|
||||
|
||||
TEST_CASE("dac index to string") {
|
||||
REQUIRE(ToString(defs::VCAL) == "vcal");
|
||||
REQUIRE(ToString(defs::VB_DS) == "vb_ds");
|
||||
}
|
||||
|
||||
TEST_CASE("convert vector of strings to dac index") {
|
||||
std::vector<std::string> dacs{"vcassh", "vth2", "vrshaper"};
|
||||
std::vector<defs::dacIndex> daci{defs::VCASSH, defs::VTH2, defs::VRSHAPER};
|
||||
auto r = StringTo<defs::dacIndex>(dacs);
|
||||
REQUIRE(r == daci);
|
||||
}
|
||||
|
||||
TEST_CASE("vector of dac index to string") {
|
||||
std::vector<defs::dacIndex> daci{defs::VCASSH, defs::VTH2, defs::VRSHAPER};
|
||||
auto r = ToString(daci);
|
||||
REQUIRE(r == "[vcassh, vth2, vrshaper]");
|
||||
}
|
Reference in New Issue
Block a user