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