From 991319477480b090d481934803d08b104b4ae7be Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 9 Aug 2019 14:28:18 +0200 Subject: [PATCH 1/2] WIP --- slsDetectorSoftware/include/Detector.h | 120 +++++++++++++++++++++++++ slsDetectorSoftware/src/Detector.cpp | 102 ++++++++++++++++++--- 2 files changed, 211 insertions(+), 11 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index ae35ccbd6..f9755bb5e 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -706,6 +706,126 @@ class Detector { */ Result getMeasuredSubFramePeriod(Positions pos = {}) const; + /** + * Get speed (Eiger, Jungfrau) + * @param pos detector position + * @returns speed (0 full speed, 1 half speed, 2 quarter speed) + */ + Result getSpeed(Positions pos = {}) const; + + /** + * Set speed (Eiger, Jungfrau) + * @param value speed (0 full speed, 1 half speed, 2 quarter speed) + * @param pos detector position + */ + void setSpeed(int value, Positions pos = {}); + + /** + * Get ADC Phase (Gotthard, Jungfrau, CTB) + * @param inDeg in degrees (Jungfrau, CTB) + * @returns ADC Phase + */ + Result getADCPhase(bool inDeg, Positions pos = {}) const; + + /** + * Set sADC Phase (Gotthard, Jungfrau, CTB) + * @param value ADC Phase + * @param inDeg in degrees (Jungfrau, CTB) + */ + void setADCPhase(int value, bool inDeg, Positions pos = {}); + + /** + * Get Max ADC Phase Shift (Jungfrau, CTB) + * @returns Max ADC Phase Shift + */ + Result getMaxADCPhaseShift(Positions pos = {}) const; + + /** + * Get DBIT Phase (Jungfrau, CTB) + * @param inDeg in degrees + * @returns DBIT Phase + */ + Result getDBITPhase(bool inDeg, Positions pos = {}) const; + + /** + * Set DBIT Phase (CTB) + * @param value DBIT Phase + * @param inDeg in degrees + */ + void setDBITPhase(int value, bool inDeg, Positions pos = {}); + + /** + * Get Max DBIT Phase Shift (CTB) + * @returns Max DBIT Phase Shift + */ + Result getMaxDBITPhaseShift(Positions pos = {}) const; + + /** + * Get ADC Clock in MHz (CTB) + * @returns ADC Clock in MHz + */ + Result getADCClock(Positions pos = {}) const; + + /** + * Set ADC Clock in MHz (CTB) + * @param value ADC Clock in MHz + */ + void setADCClock(int value, Positions pos = {}); + + /** + * Get DBIT Clock in MHz (CTB) + * @returns DBIT Clock in MHz + */ + Result getDBITClock(Positions pos = {}) const; + + /** + * Set DBIT Clock in MHz (CTB) + * @param value DBIT Clock in MHz + */ + void setDBITClock(int value, Positions pos = {}); + + /** + * Get RUN Clock in MHz (CTB) + * @returns RUN Clock in MHz + */ + Result getRUNClock(Positions pos = {}) const; + + /** + * Set RUN Clock in MHz (CTB) + * @param value RUN Clock in MHz + */ + void setRUNClock(int value, Positions pos = {}); + + /** + * Get SYNC Clock in MHz (CTB) + * @returns SYNC Clock in MHz + */ + Result getSYNCClock(Positions pos = {}) const; + + /** + * Get ADC Pipeline (CTB) + * @returns ADC Pipeline + */ + Result getADCPipeline(Positions pos = {}) const; + + /** + * Set ADC Pipeline (CTB) + * @param value ADC Pipeline + */ + void setADCPipeline(int value, Positions pos = {}); + + /** + * Get DBIT Pipeline (CTB) + * @returns DBIT Pipeline + */ + Result getDBITPipeline(Positions pos = {}) const; + + /** + * Set DBIT Pipeline (CTB) + * @param value DBIT Pipeline + */ + void setDBITPipeline(int value, Positions pos = {}); + // Erik Result getFramesCaughtByReceiver(Positions pos = {}) const; diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 014f14fd0..e4f2d70b5 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -142,9 +142,7 @@ Result Detector::getDetectorTypeAsString(Positions pos) const { return pimpl->Parallel(&slsDetector::getDetectorTypeAsString, pos); } -int Detector::size() const { - return pimpl->size(); -} +int Detector::size() const { return pimpl->size(); } defs::coordinates Detector::getNumberOfDetectors() const { defs::coordinates coord; @@ -432,7 +430,8 @@ Result Detector::getNumberOfCyclesLeft(Positions pos) const { } Result Detector::getExptimeLeft(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::ACQUISITION_TIME); + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::ACQUISITION_TIME); } Result Detector::getPeriodLeft(Positions pos) const { @@ -440,11 +439,13 @@ Result Detector::getPeriodLeft(Positions pos) const { } Result Detector::getDelayAfterTriggerLeft(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::DELAY_AFTER_TRIGGER); + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::DELAY_AFTER_TRIGGER); } Result Detector::getNumberOfFramesFromStart(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAMES_FROM_START); + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::FRAMES_FROM_START); } Result Detector::getActualTime(Positions pos) const { @@ -452,16 +453,95 @@ Result Detector::getActualTime(Positions pos) const { } Result Detector::getMeasurementTime(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASUREMENT_TIME); + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::MEASUREMENT_TIME); } Result Detector::getMeasuredPeriod(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASURED_PERIOD); -}; + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + defs::MEASURED_PERIOD); +} Result Detector::getMeasuredSubFramePeriod(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASURED_SUBPERIOD); -}; + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, + 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, inDeg); +} + +void Detector::setDBITPhase(int value, bool inDeg, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, value, inDeg); +} + +Result Detector::getMaxDBITPhaseShift(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::MAX_DBIT_PHASE_SHIFT, -1, 0); +} + +Result Detector::getADCClock(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_CLOCK, -1, 0); +} + +void Detector::setADCClock(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_CLOCK, value, 0); +} + +Result Detector::getDBITClock(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_CLOCK, -1, 0); +} + +void Detector::setDBITClock(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_CLOCK, value, 0); +} + +Result Detector::getRUNClock(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, -1, 0); +} + +void Detector::setRUNClock(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, value, 0); +} + +Result Detector::getSYNCClock(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::SYNC_CLOCK, -1, 0); +} + +Result Detector::getADCPipeline(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PIPELINE, -1, 0); +} + +void Detector::setADCPipeline(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_PIPELINE, value, 0); +} + +Result Detector::getDBITPipeline(Positions pos) const { + return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PIPELINE, -1, 0); +} + +void Detector::setDBITPipeline(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PIPELINE, value, 0); +} // Erik Result Detector::getFramesCaughtByReceiver(Positions pos) const { From 2ac421365d2a2bc7c8403628230805af6224d1f3 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 9 Aug 2019 14:28:32 +0200 Subject: [PATCH 2/2] WIP --- slsDetectorSoftware/include/multiSlsDetector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index 8fa7c3a55..63bb8da30 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -853,7 +853,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @returns value of speed set */ int setSpeed(speedVariable index, int value = -1, int mode = 0, - int detPos = -1); + int detPos = -1);// /** * Set/get dynamic range and updates the number of dataBytes