diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 3483ca37f..803821718 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -1141,13 +1141,13 @@ class Detector { void setCounterBit(bool value, Positions pos = {}); /** [Gotthard, CTB] subset modules not allowed */ - Result> getROI(Positions pos = {}) const; + //Result> getROI(Positions pos = {}) const; /** * [Gotthard Options: Only a single chip or all chips, only 1 ROI allowed] * [CTB: multiple ROIs allowed] * subset modules not allowed */ - void setROI(std::vector value, Positions pos = {}); + //void setROI(std::vector value, Positions pos = {}); /** [CTB]*/ Result getADCEnableMask(Positions pos = {}) const; @@ -1188,13 +1188,65 @@ class Detector { /** [Gotthard][Jungfrau][CTB] not possible to read back*/ void writeAdcRegister(uint32_t addr, uint32_t value, Positions pos = {}); + /** [Eiger] */ + Result getActive(Positions pos = {}) const; + + /** [Eiger] */ + void setActive(bool active, Positions pos = {}); + + /** [Eiger] */ + Result getBottom(Positions pos = {}) const; + + /** [Eiger] for gui purposes */ + void setBottom(bool value, Positions pos = {}); + + /** [Eiger] + * @returns -1 if they are all different + */ + Result getAllTrimbits(Positions pos = {}) const; + + /**[Eiger] */ + void setAllTrimbits(int value, Positions pos = {}); + + /**[Eiger] */ + Result getGapPixelsEnable(Positions pos = {}) const; + + /** + * [Eiger] + * 4 bit mode not implemented in Receiver, but in client data call back + * Fills in gap pixels in data + */ + void setGapPixelsEnable(bool enable); + + /**[Eiger] Returns energies in eV where the module is trimmed */ + Result> getTrimEnergies(Positions pos = {}) const; + + /** [Eiger] Set the energies where the detector is trimmed */ + void setTrimEnergies(std::vector energies, Positions pos = {}); + + /** + * [Eiger] Pulse Pixel n times at x and y coordinates + */ + void pulsePixel(int n, int x, int y, Positions pos = {}); + + /** [Eiger] Pulse Pixel n times and move by a relative value of x and y coordinates */ + void pulsePixelNMove(int n, int x, int y, Positions pos = {}); + + /** [Eiger] Pulse chip n times */ + void pulseChip(int n, Positions pos = {}); + /** [Eiger] */ + Result getRxPadDeactivatedMod(Positions pos = {}) const; - + /** + * [Eiger] Set deactivated Receiver padding mode + */ + void setRxPadDeactivatedMod(bool pad, Positions pos = {}); Result getReceiverUDPSocketBufferSize(Positions pos = {}) const; + void setReceiverUDPSocketBufferSize(int64_t udpsockbufsize, Positions pos = {}); Result @@ -1466,67 +1518,22 @@ class Detector { Result getThresholdTemperature(Positions pos = {}) const; - /** [Eiger] */ - void pulseChip(int n, Positions pos = {}); - - /** - * [Eiger] Pulse Pixel and move by a relative value - * @param n is number of times to pulse - * @param x is relative x value - * @param y is relative y value - */ - void pulsePixelNMove(int n, int x, int y, Positions pos = {}); - - /** - * [Eiger] Pulse Pixel - * @param n is number of times to pulse - * @param x is x coordinate - * @param y is y coordinate - * @param detPos -1 for all detectors in list or specific detector position - */ - void pulsePixel(int n, int x, int y, Positions pos = {}); - - /**[Eiger] Returns energies in eV where the module is trimmed */ - Result> getTrimEn(Positions pos = {}) const; - - /** [Eiger] Set the energies where the detector is trimmed */ - void setTrimEn(std::vector energies, Positions pos = {}); - - /** - * [Eiger] not 4 bit mode - * Fills in gap pixels in data - */ - void setGapPixelsEnable(bool enable, Positions pos = {}); - - Result getGapPixelEnable(Positions pos = {}) const; - - /**[Eiger] */ - void setAllTrimbits(int value, Positions pos = {}); - - /** [Eiger] TODO! only Eiger? */ - void setFlippedData(defs::dimension d, bool flipped, Positions pos = {}); - - Result getFlippedData(defs::dimension d, Positions pos = {}) const; - - /** - * [Eiger] Set deactivated Receiver padding mode - * @param padding padding option for deactivated receiver. Can be true - * (padding), false (no padding) - */ - void setRxPadDeactivatedMod(bool pad, Positions pos = {}); - - Result getRxPadDeactivatedMod(Positions pos = {}) const; - - /** - * [Eiger] Activates/Deactivates the detector - * @param true = active or false inactive - */ - void setActive(bool active, Positions pos = {}); - - Result getActive(Positions pos = {}) const; - + + + + + + + + + + + + + + }; } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 61e276d89..50e5613a5 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1124,7 +1124,7 @@ Result Detector::getCounterBit(Positions pos) const { void Detector::setCounterBit(bool value, Positions pos) { pimpl->Parallel(&slsDetector::setCounterBit, pos, value); } - +/*TODO: Result> Detector::getROI(Positions pos) const { int n = 0; if (pos.empty() || (pos.size() == 1 && pos[0] == -1)) { @@ -1150,7 +1150,7 @@ void Detector::setROI(std::vector value, Positions pos) { } else { pimpl->Parallel(&slsDetector::setROI, pos, static_cast(value.size()), value.data()); } -} +}*/ Result Detector::getADCEnableMask(Positions pos) const { return pimpl->Parallel(&slsDetector::getADCEnableMask, pos); @@ -1204,11 +1204,68 @@ void Detector::writeAdcRegister(uint32_t addr, uint32_t value, Positions pos) { pimpl->Parallel(&slsDetector::writeAdcRegister, pos, addr, value); } +Result Detector::getActive(Positions pos) const { + return pimpl->Parallel(&slsDetector::activate, pos, -1); +} + +void Detector::setActive(bool active, Positions pos) { + pimpl->Parallel(&slsDetector::activate, pos, static_cast(active)); +} + +Result Detector::getBottom(Positions pos) const { + return pimpl->Parallel(&slsDetector::getFlippedData, pos, defs::X); +} + +void Detector::setBottom(bool value, Positions pos) { + pimpl->Parallel(&slsDetector::setFlippedData, pos, defs::X, static_cast(value)); +} + +Result Detector::getAllTrimbits(Positions pos) const { + return pimpl->Parallel(&slsDetector::setAllTrimbits, pos, -1); +} + +void Detector::setAllTrimbits(int value, Positions pos) { + pimpl->Parallel(&slsDetector::setAllTrimbits, pos, value); +} + +Result Detector::getGapPixelsEnable(Positions pos) const { + return pimpl->Parallel(&slsDetector::enableGapPixels, pos, -1); +} + +void Detector::setGapPixelsEnable(bool enable) { + pimpl->setGapPixelsEnable(enable, {}); +} + +Result> Detector::getTrimEnergies(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTrimEn, pos); +} + +void Detector::setTrimEnergies(std::vector energies, Positions pos) { + pimpl->Parallel(&slsDetector::setTrimEn, pos, energies); +} + +void Detector::pulsePixel(int n, int x, int y, Positions pos) { + pimpl->Parallel(&slsDetector::pulsePixel, pos, n, x, y); +} + +void Detector::pulsePixelNMove(int n, int x, int y, Positions pos) { + pimpl->Parallel(&slsDetector::pulsePixelNMove, pos, n, x, y); +} + +void Detector::pulseChip(int n, Positions pos) { + pimpl->Parallel(&slsDetector::pulseChip, pos, n); +} +Result Detector::getRxPadDeactivatedMod(Positions pos) const { + return pimpl->Parallel(&slsDetector::setDeactivatedRxrPaddingMode, pos, -1); +} - +void Detector::setRxPadDeactivatedMod(bool pad, Positions pos) { + pimpl->Parallel(&slsDetector::setDeactivatedRxrPaddingMode, pos, + static_cast(pad)); +} Result Detector::getReceiverUDPSocketBufferSize(Positions pos) const { return pimpl->Parallel(&slsDetector::getReceiverUDPSocketBufferSize, pos); @@ -1531,63 +1588,18 @@ Result Detector::getThresholdTemperature(Positions pos) const { return pimpl->Parallel(&slsDetector::setThresholdTemperature, pos, -1); } -void Detector::pulseChip(int n, Positions pos) { - pimpl->Parallel(&slsDetector::pulseChip, pos, n); -} -void Detector::pulsePixelNMove(int n, int x, int y, Positions pos) { - pimpl->Parallel(&slsDetector::pulsePixelNMove, pos, n, x, y); -} -void Detector::pulsePixel(int n, int x, int y, Positions pos) { - pimpl->Parallel(&slsDetector::pulsePixel, pos, n, x, y); -} -Result> Detector::getTrimEn(Positions pos) const { - return pimpl->Parallel(&slsDetector::getTrimEn, pos); -} -void Detector::setTrimEn(std::vector energies, Positions pos) { - pimpl->Parallel(&slsDetector::setTrimEn, pos, energies); -} -void Detector::setGapPixelsEnable(bool enable, Positions pos) { - pimpl->setGapPixelsEnable(enable, pos); -} -Result Detector::getGapPixelEnable(Positions pos) const { - return pimpl->Parallel(&slsDetector::enableGapPixels, pos, -1); -} -void Detector::setAllTrimbits(int value, Positions pos) { - pimpl->Parallel(&slsDetector::setAllTrimbits, pos, value); -} -void Detector::setFlippedData(defs::dimension d, bool flipped, Positions pos) { - pimpl->Parallel(&slsDetector::setFlippedData, pos, d, - static_cast(flipped)); -} -Result Detector::getFlippedData(defs::dimension d, Positions pos) const { - return pimpl->Parallel(&slsDetector::getFlippedData, pos, d); -} -void Detector::setRxPadDeactivatedMod(bool pad, Positions pos) { - pimpl->Parallel(&slsDetector::setDeactivatedRxrPaddingMode, pos, - static_cast(pad)); -} -Result Detector::getRxPadDeactivatedMod(Positions pos) const { - return pimpl->Parallel(&slsDetector::setDeactivatedRxrPaddingMode, pos, -1); -} -void Detector::setActive(bool active, Positions pos) { - pimpl->Parallel(&slsDetector::activate, pos, static_cast(active)); -} - -Result Detector::getActive(Positions pos) const { - return pimpl->Parallel(&slsDetector::activate, pos, -1); -}