From ee4aa94bbe2cecd33e4674678f079709fcd971e3 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 19 Aug 2019 18:03:19 +0200 Subject: [PATCH] WIP --- slsDetectorSoftware/include/Detector.h | 2 +- slsDetectorSoftware/src/Detector.cpp | 300 ++++++++++++++----------- 2 files changed, 170 insertions(+), 132 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index c0fe335f7..304159b93 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -116,7 +116,7 @@ class Detector { Result getNumberOfFramesLeft(Positions pos = {}) const; /** [Gotthard][Jungfrau][CTB] */ - Result getNumberOfCyclesLeft(Positions pos = {}) const; + Result getNumberOfTriggersLeft(Positions pos = {}) const; /** [Gotthard][Jungfrau][CTB] */ Result getDelayAfterTriggerLeft(Positions pos = {}) const; diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 23e125a3b..3a670b64c 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -75,6 +75,174 @@ void Detector::setDetectorSize(const defs::xy value) { pimpl->setNumberOfChannels(value); } +Result Detector::getSettings(Positions pos) const { + return pimpl->Parallel(&slsDetector::getSettings, pos); +} + +void Detector::setSettings(defs::detectorSettings value, Positions pos) { + pimpl->Parallel(&slsDetector::setSettings, pos, value); +} + + + +// Acquisition Parameters + +Result Detector::getNumberOfFrames() const { + return pimpl->Parallel(&slsDetector::setTimer, {}, defs::FRAME_NUMBER, -1); +} + +void Detector::setNumberOfFrames(int64_t value) { + pimpl->Parallel(&slsDetector::setTimer, {}, defs::FRAME_NUMBER, value); +} + +Result Detector::getNumberOfTriggers() const { + return pimpl->Parallel(&slsDetector::setTimer, {}, defs::CYCLES_NUMBER, -1); +} + +void Detector::setNumberOfTriggers(int64_t value) { + pimpl->Parallel(&slsDetector::setTimer, {}, defs::CYCLES_NUMBER, value); +} + + +Result Detector::getExptime(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, + -1); +} + +void Detector::setExptime(ns t, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, + t.count()); +} + +Result Detector::getPeriod(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, -1); +} + +void Detector::setPeriod(ns t, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, t.count()); +} + +Result Detector::getDelayAfterTrigger(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, + defs::DELAY_AFTER_TRIGGER, -1); +} + +void Detector::setDelayAfterTrigger(ns value, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, defs::DELAY_AFTER_TRIGGER, + value.count()); +} + +Result Detector::getNumberOfFramesLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAME_NUMBER); +} + +Result Detector::getNumberOfTriggersLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::CYCLES_NUMBER); +} + +Result Detector::getDelayAfterTriggerLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::DELAY_AFTER_TRIGGER); +} + +Result Detector::getSpeed(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, -1, + 0); +} + +void Detector::setSpeed(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, value, 0); +} + +Result Detector::getADCPhase(bool inDeg, Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PHASE, -1, + inDeg); +} + +void Detector::setADCPhase(int value, bool inDeg, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PHASE, value, inDeg); +} + +Result Detector::getMaxADCPhaseShift(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, + defs::MAX_ADC_PHASE_SHIFT, -1, 0); +} + +Result Detector::getHighVoltage(Positions pos) const { + return pimpl->Parallel(&slsDetector::setDAC, pos, -1, defs::HIGH_VOLTAGE, + 0); +} + +void Detector::setHighVoltage(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setDAC, pos, value, defs::HIGH_VOLTAGE, 0); +} + +Result Detector::getTemperature(defs::dacIndex index, Positions pos) const { + switch (index) { + case defs::TEMPERATURE_ADC: + case defs::TEMPERATURE_FPGA: + case defs::TEMPERATURE_FPGAEXT: + case defs::TEMPERATURE_10GE: + case defs::TEMPERATURE_DCDC: + case defs::TEMPERATURE_SODL: + case defs::TEMPERATURE_SODR: + case defs::TEMPERATURE_FPGA2: + case defs::TEMPERATURE_FPGA3: + case defs::SLOW_ADC_TEMP: + break; + default: + throw RuntimeError("Unknown Temperature Index"); + } + auto res = pimpl->Parallel(&slsDetector::getADC, pos, index); + switch (getDetectorType().squash()) { + case defs::EIGER: + case defs::JUNGFRAU: + for (auto &it : res) { + it /= 1000; + } + break; + default: + break; + } + return res; +} + +Result Detector::getDAC(defs::dacIndex index, bool mV, + Positions pos) const { + return pimpl->Parallel(&slsDetector::setDAC, pos, -1, index, mV); +} + +void Detector::setDAC(int value, defs::dacIndex index, bool mV, Positions pos) { + pimpl->Parallel(&slsDetector::setDAC, pos, value, index, mV); +} + +Result Detector::getTimingMode(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimingMode, pos, + defs::GET_TIMING_MODE); +} + +void Detector::setTimingMode(defs::timingMode value, Positions pos) { + pimpl->Parallel(&slsDetector::setTimingMode, pos, value); +} + + + +// Acquisition + +void Detector::acquire() { pimpl->acquire(); } + + + + + + + + + + + + + Result Detector::getQuad(Positions pos) const { return pimpl->Parallel(&slsDetector::getQuad, pos); } @@ -123,13 +291,7 @@ void Detector::execCommand(const std::string &value, Positions pos) { pimpl->Parallel(&slsDetector::execCommand, pos, value); } -Result Detector::getSettings(Positions pos) const { - return pimpl->Parallel(&slsDetector::getSettings, pos); -} -void Detector::setSettings(defs::detectorSettings value, Positions pos) { - pimpl->Parallel(&slsDetector::setSettings, pos, value); -} Result Detector::getThresholdEnergy(Positions pos) const { return pimpl->Parallel(&slsDetector::getThresholdEnergy, pos); @@ -156,21 +318,6 @@ void Detector::configureMAC(Positions pos) { pimpl->Parallel(&slsDetector::configureMAC, pos); } -Result Detector::getNumberOfFrames() const { - return pimpl->Parallel(&slsDetector::setTimer, {}, defs::FRAME_NUMBER, -1); -} - -void Detector::setNumberOfFrames(int64_t value) { - pimpl->Parallel(&slsDetector::setTimer, {}, defs::FRAME_NUMBER, value); -} - -Result Detector::getNumberOfTriggers() const { - return pimpl->Parallel(&slsDetector::setTimer, {}, defs::CYCLES_NUMBER, -1); -} - -void Detector::setNumberOfTriggers(int64_t value) { - pimpl->Parallel(&slsDetector::setTimer, {}, defs::CYCLES_NUMBER, value); -} Result Detector::getNumberOfAdditionalStorageCells() const { return pimpl->Parallel(&slsDetector::setTimer, {}, @@ -209,33 +356,6 @@ void Detector::setNumberOfDigitalSamples(int64_t value, Positions pos) { pimpl->Parallel(&slsDetector::setTimer, pos, defs::DIGITAL_SAMPLES, value); } -Result Detector::getExptime(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, - -1); -} - -void Detector::setExptime(ns t, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, - t.count()); -} - -Result Detector::getPeriod(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, -1); -} - -void Detector::setPeriod(ns t, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, t.count()); -} - -Result Detector::getDelayAfterTrigger(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, - defs::DELAY_AFTER_TRIGGER, -1); -} - -void Detector::setDelayAfterTrigger(ns value, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, defs::DELAY_AFTER_TRIGGER, - value.count()); -} Result Detector::getSubExptime(Positions pos) const { return pimpl->Parallel(&slsDetector::setTimer, pos, @@ -267,14 +387,6 @@ void Detector::setStorageCellDelay(ns value, Positions pos) { value.count()); } -Result Detector::getNumberOfFramesLeft(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAME_NUMBER); -} - -Result Detector::getNumberOfCyclesLeft(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::CYCLES_NUMBER); -} - Result Detector::getExptimeLeft(Positions pos) const { return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::ACQUISITION_TIME); @@ -284,10 +396,7 @@ Result Detector::getPeriodLeft(Positions pos) const { return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAME_PERIOD); } -Result Detector::getDelayAfterTriggerLeft(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, - defs::DELAY_AFTER_TRIGGER); -} + Result Detector::getNumberOfFramesFromStart(Positions pos) const { return pimpl->Parallel(&slsDetector::getTimeLeft, pos, @@ -313,28 +422,10 @@ Result Detector::getMeasuredSubFramePeriod(Positions pos) const { defs::MEASURED_SUBPERIOD); } -Result Detector::getSpeed(Positions pos) const { - return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, -1, - 0); -} -void Detector::setSpeed(int value, Positions pos) { - pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, value, 0); -} -Result Detector::getADCPhase(bool inDeg, Positions pos) const { - return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PHASE, -1, - inDeg); -} -void Detector::setADCPhase(int value, bool inDeg, Positions pos) { - pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PHASE, value, inDeg); -} -Result Detector::getMaxADCPhaseShift(Positions pos) const { - return pimpl->Parallel(&slsDetector::setSpeed, pos, - defs::MAX_ADC_PHASE_SHIFT, -1, 0); -} Result Detector::getDBITPhase(bool inDeg, Positions pos) const { return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, -1, @@ -406,15 +497,6 @@ Result Detector::getDynamicRange(Positions pos) const { void Detector::setDynamicRange(int value) { pimpl->setDynamicRange(value); } -Result Detector::getHighVoltage(Positions pos) const { - return pimpl->Parallel(&slsDetector::setDAC, pos, -1, defs::HIGH_VOLTAGE, - 0); -} - -void Detector::setHighVoltage(int value, Positions pos) { - pimpl->Parallel(&slsDetector::setDAC, pos, value, defs::HIGH_VOLTAGE, 0); -} - Result Detector::getIODelay(Positions pos) const { return pimpl->Parallel(&slsDetector::setDAC, pos, -1, defs::IO_DELAY, 0); } @@ -423,35 +505,6 @@ void Detector::setIODelay(int value, Positions pos) { pimpl->Parallel(&slsDetector::setDAC, pos, value, defs::IO_DELAY, 0); } -Result Detector::getTemp(defs::dacIndex index, Positions pos) const { - switch (index) { - case defs::TEMPERATURE_ADC: - case defs::TEMPERATURE_FPGA: - case defs::TEMPERATURE_FPGAEXT: - case defs::TEMPERATURE_10GE: - case defs::TEMPERATURE_DCDC: - case defs::TEMPERATURE_SODL: - case defs::TEMPERATURE_SODR: - case defs::TEMPERATURE_FPGA2: - case defs::TEMPERATURE_FPGA3: - case defs::SLOW_ADC_TEMP: - break; - default: - throw RuntimeError("Unknown Temperature Index"); - } - auto res = pimpl->Parallel(&slsDetector::getADC, pos, index); - switch (getDetectorType().squash()) { - case defs::EIGER: - case defs::JUNGFRAU: - for (auto &it : res) { - it /= 1000; - } - break; - default: - break; - } - return res; -} Result Detector::getVrefVoltage(bool mV, Positions pos) const { return pimpl->Parallel(&slsDetector::setDAC, pos, -1, defs::ADC_VPP, mV); @@ -531,23 +584,9 @@ Result Detector::getSlowADC(defs::dacIndex index, Positions pos) const { return pimpl->Parallel(&slsDetector::getADC, pos, index); } -Result Detector::getDAC(defs::dacIndex index, bool mV, - Positions pos) const { - return pimpl->Parallel(&slsDetector::setDAC, pos, -1, index, mV); -} -void Detector::setDAC(int value, defs::dacIndex index, bool mV, Positions pos) { - pimpl->Parallel(&slsDetector::setDAC, pos, value, index, mV); -} -Result Detector::getTimingMode(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimingMode, pos, - defs::GET_TIMING_MODE); -} -void Detector::setTimingMode(defs::timingMode value, Positions pos) { - pimpl->Parallel(&slsDetector::setTimingMode, pos, value); -} Result Detector::getExternalSignalFlags(Positions pos) const { @@ -1433,7 +1472,6 @@ Detector::getRxRealUDPSocketBufferSize(Positions pos) const { } // Acquisition -void Detector::acquire() { pimpl->acquire(); } void Detector::clearAcquiringFlag() { pimpl->setAcquiringFlag(0); }