From 6b363a16feceefcb41d0600e625aa0e1ab60963b Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Fri, 9 Aug 2019 14:45:07 +0200 Subject: [PATCH] WIP --- python/src/DetectorPythonInterface.h | 24 ++++---- slsDetectorSoftware/include/Detector.h | 24 +++++++- .../include/multiSlsDetector.h | 16 ++--- slsDetectorSoftware/src/Detector.cpp | 61 ++++++++++++++++--- slsDetectorSoftware/src/multiSlsDetector.cpp | 3 +- 5 files changed, 97 insertions(+), 31 deletions(-) diff --git a/python/src/DetectorPythonInterface.h b/python/src/DetectorPythonInterface.h index a91f2ec96..9f8b3efc0 100755 --- a/python/src/DetectorPythonInterface.h +++ b/python/src/DetectorPythonInterface.h @@ -156,7 +156,7 @@ class DetectorPythonInterface { return g; } - int getNumberOfDetectors() { return det.getNumberOfDetectors(); } + int getNumberOfDetectors() { return det.size(); } std::string getRunStatus() { auto s = det.getRunStatus(); @@ -234,7 +234,7 @@ class DetectorPythonInterface { } void setRateCorrection(std::vector tau) { - for (int i = 0; i < det.getNumberOfDetectors(); ++i) + for (size_t i = 0; i < det.size(); ++i) det.setRateCorrection(tau[i], i); } @@ -334,7 +334,7 @@ class DetectorPythonInterface { std::vector getMeasuredPeriod() { std::vector mp; - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + for (size_t i = 0; i < det.size(); ++i) { auto t = det.getTimeLeft(slsDetectorDefs::MEASURED_PERIOD, i); mp.push_back(static_cast(t) * 1E-9); } @@ -342,7 +342,7 @@ class DetectorPythonInterface { } std::vector getMeasuredSubPeriod() { std::vector mp; - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + for (size_t i = 0; i < det.size(); ++i) { auto t = det.getTimeLeft(slsDetectorDefs::MEASURED_SUBPERIOD, i); mp.push_back(static_cast(t) * 1E-9); } @@ -550,7 +550,7 @@ class DetectorPythonInterface { std::vector getDetectorType() { std::vector detector_type; - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + for (size_t i = 0; i < det.size(); ++i) { detector_type.push_back(det.getDetectorTypeAsString(i)); } return detector_type; @@ -577,8 +577,8 @@ class DetectorPythonInterface { // detectors return a vector of strings std::vector getReceiverStreamingPort() { std::vector vec; - vec.reserve(det.getNumberOfDetectors()); - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + vec.reserve(det.size()); + for (size_t i = 0; i < det.size(); ++i) { vec.push_back(det.getReceiverStreamingPort(i)); } return vec; @@ -590,8 +590,8 @@ class DetectorPythonInterface { std::vector getReceiverUDPPort() { std::vector vec; - vec.reserve(det.getNumberOfDetectors()); - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + vec.reserve(det.size()); + for (size_t i = 0; i < det.size(); ++i) { vec.push_back(det.getReceiverUDPPort(i)); } return vec; @@ -599,8 +599,8 @@ class DetectorPythonInterface { std::vector getReceiverUDPPort2() { std::vector vec; - vec.reserve(det.getNumberOfDetectors()); - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + vec.reserve(det.size()); + for (size_t i = 0; i < det.size(); ++i) { vec.push_back(det.getReceiverUDPPort2(i)); } return vec; @@ -990,7 +990,7 @@ void DetectorPythonInterface::setReadoutFlag(const std::string flag_name) { std::vector DetectorPythonInterface::getRateCorrection() { std::vector rate_corr; - for (int i = 0; i < det.getNumberOfDetectors(); ++i) { + for (size_t i = 0; i < det.size(); ++i) { rate_corr.push_back(det.getRateCorrection(i)); } return rate_corr; diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index a964543f2..da29ee2e1 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -1113,9 +1113,31 @@ class Detector { int setDetectorMinMaxEnergyThreshold(const int index, int value); void setAdditionalJsonHeader(const std::string &jsonheader, - Positions pos = {}); + Positions pos = {}); Result getAdditionalJsonHeader(Positions pos = {}) const; + + Result getAdditionalJsonParameter(const std::string &key, + Positions pos = {}) const; + + void setAdditionalJsonParameter(const std::string &key, + const std::string &value, + Positions pos = {}); + + // TODO these should probably be the same + Result getReceiverStreamingIP(Positions pos = {}) const; + + void setReceiverDataStreamingOutIP(const std::string &ip, + Positions pos = {}); + + Result getClientStreamingIP(Positions pos = {}) const; + + // TODO these should probably be the same + void setClientDataStreamingInIP(const std::string &ip, Positions pos = {}); + + Result getReceiverStreamingPort(Positions pos = {}) const; + + // void setReceiverDataStreamingOutPort(int i = -1, int detPos = -1); }; } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index 8e73c61fd..91dfd1a16 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -381,7 +381,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * Returns the number of detectors in the multidetector structure * @returns number of detectors */ - int size() const;// + size_t size() const;// /** * Returns number of detectors in dimension d @@ -1225,7 +1225,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position */ void setClientDataStreamingInIP(const std::string &ip = "", - int detPos = -1); + int detPos = -1); // /** * Returns the client zmq ip @@ -1234,7 +1234,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns the client zmq ip */ - std::string getClientStreamingIP(int detPos = -1); + std::string getClientStreamingIP(int detPos = -1); // /** * (advanced users) @@ -1244,7 +1244,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position */ void setReceiverDataStreamingOutIP(const std::string &ip = "", - int detPos = -1); + int detPos = -1); // /** * Returns the receiver zmq ip @@ -1253,7 +1253,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns the receiver zmq ip */ - std::string getReceiverStreamingIP(int detPos = -1); + std::string getReceiverStreamingIP(int detPos = -1); // /** * Sets the transmission delay for left, right or entire frame @@ -1264,7 +1264,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @returns transmission delay */ int setDetectorNetworkParameter(networkParameter index, int delay, - int detPos = -1); + int detPos = -1); //maybe not needed in API /** * Sets the additional json header @@ -1273,14 +1273,14 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @returns additional json header, default is empty */ std::string setAdditionalJsonHeader(const std::string &jsonheader, - int detPos = -1); + int detPos = -1); // /** * Returns the additional json header * @param detPos -1 for all detectors in list or specific detector position * @returns the additional json header, default is empty */ - std::string getAdditionalJsonHeader(int detPos = -1); + std::string getAdditionalJsonHeader(int detPos = -1); // /** * Sets the value for the additional json header parameter if found, else diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 2f13d1bd4..962fceb47 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,15 +453,18 @@ 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); }; // Erik @@ -929,4 +933,43 @@ Result Detector::getAdditionalJsonHeader(Positions pos) const { return pimpl->Parallel(&slsDetector::getAdditionalJsonHeader, pos); } +Result Detector::getAdditionalJsonParameter(const std::string &key, + Positions pos) const { + return pimpl->Parallel(&slsDetector::getAdditionalJsonParameter, pos, key); +} + +void Detector::setAdditionalJsonParameter(const std::string &key, + const std::string &value, + Positions pos) { + pimpl->Parallel(&slsDetector::setAdditionalJsonParameter, pos, key, value); +} + +Result Detector::getReceiverStreamingIP(Positions pos) const { + return pimpl->Parallel(&slsDetector::getReceiverStreamingIP, pos); +} + +void Detector::setReceiverDataStreamingOutIP(const std::string &ip, + Positions pos) { + // TODO! probably in one call + pimpl->Parallel(&slsDetector::setReceiverStreamingIP, pos, ip); + pimpl->Parallel(&slsDetector::enableDataStreamingFromReceiver, pos, 0); + pimpl->Parallel(&slsDetector::enableDataStreamingFromReceiver, pos, 1); +} + +Result Detector::getClientStreamingIP(Positions pos) const { + return pimpl->Parallel(&slsDetector::getClientStreamingIP, pos); +} + +void Detector::setClientDataStreamingInIP(const std::string &ip, + Positions pos) { + // TODO! probably in one call + pimpl->Parallel(&slsDetector::setClientStreamingIP, pos, ip); + pimpl->enableDataStreamingToClient(0); + pimpl->enableDataStreamingToClient(1); +} + +Result Detector::getReceiverStreamingPort(Positions pos) const{ + return pimpl->Parallel(&slsDetector::getReceiverStreamingPort, pos); +} + } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/src/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp index 843fb1f41..7b1f4c2c3 100755 --- a/slsDetectorSoftware/src/multiSlsDetector.cpp +++ b/slsDetectorSoftware/src/multiSlsDetector.cpp @@ -660,7 +660,7 @@ std::string multiSlsDetector::getDetectorTypeAsString(int detPos) { return sls::concatenateIfDifferent(r); } -int multiSlsDetector::size() const { return detectors.size(); } +size_t multiSlsDetector::size() const { return detectors.size(); } int multiSlsDetector::getNumberOfDetectors(dimension d) const { return multi_shm()->numberOfDetector[d]; @@ -1946,6 +1946,7 @@ void multiSlsDetector::setReceiverDataStreamingOutIP(const std::string &ip, } } + std::string multiSlsDetector::getReceiverStreamingIP(int detPos) { // single if (detPos >= 0) {