From d1d730b779d0632d24055c3de103d81656ed0bde Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 8 Aug 2019 17:13:02 +0200 Subject: [PATCH 1/3] WIP --- slsDetectorSoftware/include/Detector.h | 66 +++++++++++++++++-- .../include/multiSlsDetector.h | 18 ++--- slsDetectorSoftware/src/Detector.cpp | 57 +++++++++++++++- 3 files changed, 124 insertions(+), 17 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 275469240..4f06d8f51 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -295,28 +295,32 @@ class Detector { void setReadNLines(const int value, Positions pos = {}); /** - * Get Detector Control TCP port (for client communication with Detector control server) + * Get Detector Control TCP port (for client communication with Detector + * control server) * @param pos detector position * @returns control TCP port */ Result getControlPort(Positions pos = {}) const; /** - * Set Detector Control TCP port (for client communication with Detector control server) + * Set Detector Control TCP port (for client communication with Detector + * control server) * @param value port number * @param pos detector position */ void setControlPort(int value, Positions pos = {}); /** - * Get Detector Stop TCP port (for client communication with Detector Stop server) + * Get Detector Stop TCP port (for client communication with Detector Stop + * server) * @param pos detector position * @returns Stop TCP port */ Result getStopPort(Positions pos = {}) const; /** - * Set Detector Stop TCP port (for client communication with Detector Stop server) + * Set Detector Stop TCP port (for client communication with Detector Stop + * server) * @param value port number * @param pos detector position */ @@ -336,7 +340,6 @@ class Detector { */ void setReceiverPort(int value, Positions pos = {}); - // Erik Result getFramesCaughtByReceiver(Positions pos = {}) const; @@ -563,7 +566,6 @@ class Detector { void copyDetectorServer(const std::string &fname, const std::string &hostname, Positions pos = {}); - /** [not Eiger] */ void resetFPGA(Positions pos = {}); @@ -578,7 +580,59 @@ class Detector { Result getStorageCellStart(Positions pos = {}) const; + /** [Jungfrau] 1 there was an temperature event */ + void setTemperatureEvent(int val, Positions pos = {}); + /** [Jungfrau] */ + Result getTemperatureEvent(Positions pos = {}) const; + + /** [Jungfrau] */ + void setTemperatureControl(bool enable, Positions pos = {}); + + /** [Jungfrau] */ + Result getTemperatureControl(Positions pos = {}) const; + + /** + * [Jungfrau]Set threshold temperature + * @param val value in millidegrees TODO! Verify + */ + void setThresholdTemperature(int temp, Positions pos = {}); + + 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; }; } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index 945d15c6b..c3aedbb18 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -1601,7 +1601,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns number of trim energies */ - int setTrimEn(std::vector energies, int detPos = -1); + int setTrimEn(std::vector energies, int detPos = -1); // /** * Returns the number of trim energies and their value (Eiger) @@ -1609,7 +1609,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns vector of trim energies */ - std::vector getTrimEn(int detPos = -1); + std::vector getTrimEn(int detPos = -1); // /** * Pulse Pixel (Eiger) @@ -1618,7 +1618,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param y is y coordinate * @param detPos -1 for all detectors in list or specific detector position */ - void pulsePixel(int n = 0, int x = 0, int y = 0, int detPos = -1); + void pulsePixel(int n = 0, int x = 0, int y = 0, int detPos = -1); // /** * Pulse Pixel and move by a relative value (Eiger) @@ -1627,14 +1627,14 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param y is relative y value * @param detPos -1 for all detectors in list or specific detector position */ - void pulsePixelNMove(int n = 0, int x = 0, int y = 0, int detPos = -1); + void pulsePixelNMove(int n = 0, int x = 0, int y = 0, int detPos = -1);// /** * Pulse Chip (Eiger) * @param n is number of times to pulse * @param detPos -1 for all detectors in list or specific detector position */ - void pulseChip(int n = 0, int detPos = -1); + void pulseChip(int n = 0, int detPos = -1);// /** * Set/gets threshold temperature (Jungfrau) @@ -1642,7 +1642,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns threshold temperature in millidegrees */ - int setThresholdTemperature(int val = -1, int detPos = -1); + int setThresholdTemperature(int val = -1, int detPos = -1); // /** * Enables/disables temperature control (Jungfrau) @@ -1650,7 +1650,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns temperature control enable */ - int setTemperatureControl(int val = -1, int detPos = -1); + int setTemperatureControl(int val = -1, int detPos = -1); // /** * Resets/ gets over-temperature event (Jungfrau) @@ -1658,7 +1658,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns over-temperature event */ - int setTemperatureEvent(int val = -1, int detPos = -1); + int setTemperatureEvent(int val = -1, int detPos = -1); // /** * Set storage cell that stores first acquisition of the series (Jungfrau) @@ -1666,7 +1666,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns the storage cell that stores the first acquisition of the series */ - int setStoragecellStart(int pos = -1, int detPos = -1); + int setStoragecellStart(int pos = -1, int detPos = -1);// /** * Programs FPGA with pof file (Not Eiger) diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 6e60ab8d5..3dab11eff 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -210,7 +210,8 @@ Result Detector::getDetectorOffsets(Positions pos) const { void Detector::setDetectorOffsets(defs::coordinates value, Positions pos) { pimpl->Parallel(&slsDetector::setDetectorOffsets, pos, value); - //pimpl->Parallel(&slsDetector::setDetectorOffset, pos, value); + // pimpl->Parallel(&slsDetector::setDetectorOffset, pos, + // value); } Result Detector::getQuad(Positions pos) const { @@ -253,7 +254,6 @@ void Detector::setReceiverPort(int value, Positions pos) { pimpl->Parallel(&slsDetector::setReceiverPort, pos, value); } - // Erik Result Detector::getFramesCaughtByReceiver(Positions pos) const { return pimpl->Parallel(&slsDetector::getFramesCaughtByReceiver, pos); @@ -508,4 +508,57 @@ Result Detector::getStorageCellStart(Positions pos) const { return pimpl->Parallel(&slsDetector::setStoragecellStart, pos, -1); } +void Detector::setTemperatureEvent(int val, Positions pos) { + pimpl->Parallel(&slsDetector::setTemperatureEvent, pos, val); +} + +Result Detector::getTemperatureEvent(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTemperatureEvent, pos, -1); +} + +void Detector::setTemperatureControl(bool enable, Positions pos) { + pimpl->Parallel(&slsDetector::setTemperatureControl, pos, + static_cast(enable)); +} + +Result Detector::getTemperatureControl(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTemperatureControl, pos, -1); +} + +void Detector::setThresholdTemperature(int temp, Positions pos) { + pimpl->Parallel(&slsDetector::setThresholdTemperature, pos, temp); +} + +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->Parallel(&slsDetector::enableGapPixels, pos, static_cast(enable)); +} + +Result Detector::getGapPixelEnable(Positions pos) const{ + return pimpl->Parallel(&slsDetector::enableGapPixels, pos, -1); +} + } // namespace sls \ No newline at end of file From cc0f1d9fcd628e7c0d0568f4243feb2745958653 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 8 Aug 2019 17:34:25 +0200 Subject: [PATCH 2/3] WIP --- slsDetectorSoftware/include/Detector.h | 23 +++++++--- .../include/multiSlsDetector.h | 8 ++-- slsDetectorSoftware/src/Detector.cpp | 42 +++++++++++++++---- 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 0d9053c02..47fff64f5 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -411,7 +411,8 @@ class Detector { * @param tb 1 to include trimbits, 0 to exclude * @param pos detector position */ - void setThresholdEnergy(int value, defs::detectorSettings sett = defs::GET_SETTINGS, + void setThresholdEnergy(int value, + defs::detectorSettings sett = defs::GET_SETTINGS, int tb = 1, Positions pos = {}); /** @@ -707,7 +708,7 @@ class Detector { /** [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 @@ -730,13 +731,25 @@ class Detector { /** [Eiger] Set the energies where the detector is trimmed */ void setTrimEn(std::vector energies, Positions pos = {}); - /** - * [Eiger] not 4 bit mode + /** + * [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; + + void setRxPadDeactivatedMod(bool pad, Positions pos = {}); + + Result getRxPadDeactivatedMod(Positions pos = {}) const; }; } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index 11eb78113..ae04851fc 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -1564,7 +1564,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns 1 for flipped, else 0 */ - int getFlippedData(dimension d = X, int detPos = -1); + int getFlippedData(dimension d = X, int detPos = -1); // /** * Sets the enable which determines if @@ -1574,7 +1574,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns enable flipped data across x or y axis */ - int setFlippedData(dimension d = X, int value = -1, int detPos = -1); + int setFlippedData(dimension d = X, int value = -1, int detPos = -1); // /** * Sets all the trimbits to a particular value (Eiger) @@ -1582,7 +1582,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns OK or FAIL */ - int setAllTrimbits(int val, int detPos = -1); + int setAllTrimbits(int val, int detPos = -1); // /** * Enable gap pixels, only for Eiger and for 8,16 and 32 bit mode. (Eiger) @@ -1590,7 +1590,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param val 1 sets, 0 unsets, -1 gets * @returns gap pixel enable or -1 for error */ - int enableGapPixels(int val = -1, int detPos = -1); + int enableGapPixels(int val = -1, int detPos = -1); // /** * Sets the number of trim energies and their value (Eiger) diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 17652bedd..26fdfb559 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -290,7 +290,8 @@ Result Detector::getThresholdEnergy(Positions pos) const { return pimpl->Parallel(&slsDetector::getThresholdEnergy, pos); } -void Detector::setThresholdEnergy(int value, defs::detectorSettings sett, int tb, Positions pos) { +void Detector::setThresholdEnergy(int value, defs::detectorSettings sett, + int tb, Positions pos) { pimpl->Parallel(&slsDetector::setThresholdEnergy, pos, value, sett, tb); } @@ -589,32 +590,55 @@ Result Detector::getThresholdTemperature(Positions pos) const { return pimpl->Parallel(&slsDetector::setThresholdTemperature, pos, -1); } -void Detector::pulseChip(int n, Positions pos){ +void Detector::pulseChip(int n, Positions pos) { pimpl->Parallel(&slsDetector::pulseChip, pos, n); } -void Detector::pulsePixelNMove(int n, int x, int y, Positions pos){ +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){ +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{ +Result> Detector::getTrimEn(Positions pos) const { return pimpl->Parallel(&slsDetector::getTrimEn, pos); } -void Detector::setTrimEn(std::vector energies, Positions pos){ +void Detector::setTrimEn(std::vector energies, Positions pos) { pimpl->Parallel(&slsDetector::setTrimEn, pos, energies); } -void Detector::setGapPixelsEnable(bool enable, Positions pos){ - pimpl->Parallel(&slsDetector::enableGapPixels, pos, static_cast(enable)); +void Detector::setGapPixelsEnable(bool enable, Positions pos) { + pimpl->Parallel(&slsDetector::enableGapPixels, pos, + static_cast(enable)); } -Result Detector::getGapPixelEnable(Positions pos) const{ +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); +} + } // namespace sls \ No newline at end of file From e76900ca9ae5330e73371b62287942fc2c6d70d7 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 8 Aug 2019 17:40:35 +0200 Subject: [PATCH 3/3] WIP --- slsDetectorSoftware/include/Detector.h | 13 +++++++++++++ slsDetectorSoftware/src/Detector.cpp | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 47fff64f5..88ced96ad 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -747,9 +747,22 @@ class Detector { 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 26fdfb559..cd8316918 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -641,4 +641,12 @@ 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{ + pimpl->Parallel(&slsDetector::activate, pos, -1); +} + } // namespace sls \ No newline at end of file