diff --git a/python/sls_detector/detector.py b/python/sls_detector/detector.py index 799b0b2b3..fd547a67f 100644 --- a/python/sls_detector/detector.py +++ b/python/sls_detector/detector.py @@ -663,11 +663,11 @@ class Detector: @property def frames_per_file(self): - return self._api.getReceiverFramesPerFile() + return self._api.getFramesPerFile() @frames_per_file.setter def frames_per_file(self, n): - self._api.setReceiverFramesPerFile(n) + self._api.setFramesPerFile(n) @property def n_cycles(self): diff --git a/python/src/Detector.h b/python/src/Detector.h index 5ba231045..c2603b56e 100644 --- a/python/src/Detector.h +++ b/python/src/Detector.h @@ -320,11 +320,11 @@ class Detector { return det.getUserDetails(); } - void setReceiverFramesPerFile(const int n_frames) { - det.setReceiverFramesPerFile(n_frames); + void setFramesPerFile(const int n_frames) { + det.setFramesPerFile(n_frames); } - int getReceiverFramesPerFile() { - return det.setReceiverFramesPerFile(); + int getFramesPerFile() { + return det.setFramesPerFile(); } std::string getReceiverFrameDiscardPolicy() { diff --git a/python/src/main.cpp b/python/src/main.cpp index 38e927937..c338b4328 100644 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -205,8 +205,8 @@ PYBIND11_MODULE(_sls_detector, m) .def("getLastClientIP", &Detector::getLastClientIP) .def("getReceiverLastClientIP", &Detector::getReceiverLastClientIP) - .def("setReceiverFramesPerFile", &Detector::setReceiverFramesPerFile) - .def("getReceiverFramesPerFile", &Detector::getReceiverFramesPerFile) + .def("setFramesPerFile", &Detector::setFramesPerFile) + .def("getFramesPerFile", &Detector::getFramesPerFile) .def("setReceiverFifoDepth", &Detector::setReceiverFifoDepth) .def("getReceiverFifoDepth", &Detector::getReceiverFifoDepth) diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index e8cf2392a..4ac09bfa7 100644 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -1598,7 +1598,14 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns max frames per file in receiver */ - int setReceiverFramesPerFile(int f = -1, int detPos = -1); + int setFramesPerFile(int f = -1, int detPos = -1); + + /** + * Gets the max frames per file in receiver + * @param detPos -1 for all detectors in list or specific detector position + * @returns max frames per file in receiver + */ + int getFramesPerFile(int detPos = -1) const; /** * Sets the frames discard policy in receiver diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h index 35077a3cd..a49e42d9a 100644 --- a/slsDetectorSoftware/include/slsDetector.h +++ b/slsDetectorSoftware/include/slsDetector.h @@ -237,10 +237,10 @@ struct sharedSlsDetector { int receiver_fileIndex; /** file format */ - slsDetectorDefs::fileFormat receiver_fileFormatType; + slsDetectorDefs::fileFormat rxFileFormat; /** frames per file */ - int receiver_framesPerFile; + int rxFramesPerFile; /** filewriteenable */ bool rxFileWrite; @@ -1464,7 +1464,9 @@ class slsDetector : public virtual slsDetectorDefs{ * @param f max frames per file * @returns max frames per file in receiver */ - int setReceiverFramesPerFile(int f = -1); + int setFramesPerFile(int frames); + + int getFramesPerFile() const; /** * Sets the frames discard policy in receiver @@ -1482,9 +1484,9 @@ class slsDetector : public virtual slsDetectorDefs{ /** * Returns file format - * @returns file name + * @returns file format */ - fileFormat getFileFormat(); + fileFormat getFileFormat() const; /** * Sets up the file format diff --git a/slsDetectorSoftware/src/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp index b6ab50d49..f43bbd4c9 100644 --- a/slsDetectorSoftware/src/multiSlsDetector.cpp +++ b/slsDetectorSoftware/src/multiSlsDetector.cpp @@ -2884,14 +2884,19 @@ std::string multiSlsDetector::setFileName(const std::string &fname, int detPos) return sls::concatenateIfDifferent(r); } -int multiSlsDetector::setReceiverFramesPerFile(int f, int detPos) { - // single +int multiSlsDetector::setFramesPerFile(int f, int detPos) { if (detPos >= 0) { - return detectors[detPos]->setReceiverFramesPerFile(f); + return detectors[detPos]->setFramesPerFile(f); } + auto r = parallelCall(&slsDetector::setFramesPerFile, f); + return sls::minusOneIfDifferent(r); +} - // multi - auto r = parallelCall(&slsDetector::setReceiverFramesPerFile, f); +int multiSlsDetector::getFramesPerFile(int detPos) const { + if (detPos >= 0) { + return detectors[detPos]->getFramesPerFile(); + } + auto r = parallelCall(&slsDetector::getFramesPerFile); return sls::minusOneIfDifferent(r); } diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 9a13ea071..1735ae7ac 100644 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -350,22 +350,22 @@ void slsDetector::initializeDetectorStructure(detectorType type) { sls::strcpy_safe(detector_shm()->receiver_filePath, "/"); sls::strcpy_safe(detector_shm()->receiver_fileName, "run"); detector_shm()->receiver_fileIndex = 0; - detector_shm()->receiver_fileFormatType = BINARY; + detector_shm()->rxFileFormat = BINARY; switch (detector_shm()->myDetectorType) { case GOTTHARD: - detector_shm()->receiver_framesPerFile = MAX_FRAMES_PER_FILE; + detector_shm()->rxFramesPerFile = MAX_FRAMES_PER_FILE; break; case EIGER: - detector_shm()->receiver_framesPerFile = EIGER_MAX_FRAMES_PER_FILE; + detector_shm()->rxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE; break; case JUNGFRAU: - detector_shm()->receiver_framesPerFile = JFRAU_MAX_FRAMES_PER_FILE; + detector_shm()->rxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE; break; case CHIPTESTBOARD: - detector_shm()->receiver_framesPerFile = CTB_MAX_FRAMES_PER_FILE; + detector_shm()->rxFramesPerFile = CTB_MAX_FRAMES_PER_FILE; break; case MOENCH: - detector_shm()->receiver_framesPerFile = MOENCH_MAX_FRAMES_PER_FILE; + detector_shm()->rxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE; break; default: break; @@ -2128,8 +2128,8 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { << "\nfile path:" << detector_shm()->receiver_filePath << "\nfile name:" << detector_shm()->receiver_fileName << "\nfile index:" << detector_shm()->receiver_fileIndex - << "\nfile format:" << detector_shm()->receiver_fileFormatType - << "\nr_framesperfile:" << detector_shm()->receiver_framesPerFile + << "\nfile format:" << detector_shm()->rxFileFormat + << "\nr_framesperfile:" << detector_shm()->rxFramesPerFile << "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode << "\nr_padding:" << detector_shm()->receiver_framePadding << "\nwrite enable:" << detector_shm()->rxFileWrite @@ -2164,8 +2164,8 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) { setFilePath(detector_shm()->receiver_filePath); setFileName(detector_shm()->receiver_fileName); setFileIndex(detector_shm()->receiver_fileIndex); - setFileFormat(detector_shm()->receiver_fileFormatType); - setReceiverFramesPerFile(detector_shm()->receiver_framesPerFile); + setFileFormat(detector_shm()->rxFileFormat); + setFramesPerFile(detector_shm()->rxFramesPerFile); setReceiverFramesDiscardPolicy(detector_shm()->receiver_frameDiscardMode); setReceiverPartialFramesPadding(detector_shm()->receiver_framePadding); setFileWrite(detector_shm()->rxFileWrite); @@ -3690,11 +3690,11 @@ int slsDetector::updateCachedReceiverVariables() const { // file format n += receiver.receiveData(&i32, sizeof(i32)); - detector_shm()->receiver_fileFormatType = (fileFormat)i32; + detector_shm()->rxFileFormat = (fileFormat)i32; // frames per file n += receiver.receiveData(&i32, sizeof(i32)); - detector_shm()->receiver_framesPerFile = i32; + detector_shm()->rxFramesPerFile = i32; // frame discard policy n += receiver.receiveData(&i32, sizeof(i32)); @@ -3866,7 +3866,7 @@ std::string slsDetector::setFileName(const std::string &fname) { return detector_shm()->receiver_fileName; } -int slsDetector::setReceiverFramesPerFile(int f) { +int slsDetector::setFramesPerFile(int f) { if (f >= 0) { int fnum = F_SET_RECEIVER_FRAMES_PER_FILE; int ret = FAIL; @@ -3879,13 +3879,17 @@ int slsDetector::setReceiverFramesPerFile(int f) { ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver frames per file: " << retval; - detector_shm()->receiver_framesPerFile = retval; + detector_shm()->rxFramesPerFile = retval; } if (ret == FORCE_UPDATE) { updateCachedReceiverVariables(); } } - return detector_shm()->receiver_framesPerFile; + return getFramesPerFile(); +} + +int slsDetector::getFramesPerFile() const { + return detector_shm()->rxFramesPerFile; } slsDetectorDefs::frameDiscardPolicy @@ -3919,7 +3923,7 @@ int slsDetector::setReceiverPartialFramesPadding(int f) { ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver partial frames enable: " << retval; - detector_shm()->receiver_framePadding = retval; + detector_shm()->receiver_framePadding = static_cast(retval); } if (ret == FORCE_UPDATE) { updateCachedReceiverVariables(); @@ -3931,8 +3935,8 @@ slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) { if (f != GET_FILE_FORMAT) { int fnum = F_SET_RECEIVER_FILE_FORMAT; int ret = FAIL; - int arg = f; - auto retval = (fileFormat)-1; + auto arg = static_cast(f); + auto retval = static_cast(-1); FILE_LOG(logDEBUG1) << "Setting receiver file format to " << arg; if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) { @@ -3940,7 +3944,7 @@ slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) { ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file format: " << retval; - detector_shm()->receiver_fileFormatType = retval; + detector_shm()->rxFileFormat = retval; } if (ret == FORCE_UPDATE) { updateCachedReceiverVariables(); @@ -3949,8 +3953,8 @@ slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) { return getFileFormat(); } -slsDetectorDefs::fileFormat slsDetector::getFileFormat() { - return detector_shm()->receiver_fileFormatType; +slsDetectorDefs::fileFormat slsDetector::getFileFormat() const { + return detector_shm()->rxFileFormat; } int slsDetector::getFileIndex() { return detector_shm()->receiver_fileIndex; } @@ -4095,7 +4099,7 @@ bool slsDetector::setFileWrite(bool value) { ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver file write enable: " << retval; - detector_shm()->rxFileWrite = retval; + detector_shm()->rxFileWrite = static_cast(retval); } if (ret == FORCE_UPDATE) { updateCachedReceiverVariables(); diff --git a/slsDetectorSoftware/src/slsDetectorCommand.cpp b/slsDetectorSoftware/src/slsDetectorCommand.cpp index d8db4cbe4..d887fc162 100644 --- a/slsDetectorSoftware/src/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/src/slsDetectorCommand.cpp @@ -5069,12 +5069,12 @@ std::string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action, else if (cmd == "r_framesperfile") { if (action == PUT_ACTION) { if (sscanf(args[1], "%d", &ival)) { - myDet->setReceiverFramesPerFile(ival, detPos); + myDet->setFramesPerFile(ival, detPos); } else return std::string("could not scan max frames per file\n"); } memset(answer, 0, 100); - sprintf(answer, "%d", myDet->setReceiverFramesPerFile(-1, detPos)); + sprintf(answer, "%d", myDet->getFramesPerFile(detPos)); return std::string(answer); } diff --git a/slsDetectorSoftware/src/slsDetectorUsers.cpp b/slsDetectorSoftware/src/slsDetectorUsers.cpp index 2b54caab0..3685b4a81 100644 --- a/slsDetectorSoftware/src/slsDetectorUsers.cpp +++ b/slsDetectorSoftware/src/slsDetectorUsers.cpp @@ -363,7 +363,12 @@ int slsDetectorUsers::setReceiverPartialFramesPadding(int f, int detPos) { } int slsDetectorUsers::setReceiverFramesPerFile(int f, int detPos) { - return detector.setReceiverFramesPerFile(f, detPos); + if (f > 0) { + return detector.setFramesPerFile(f, detPos); + } + else { + return detector.getFramesPerFile(detPos); + } } int slsDetectorUsers::setDetectorMinMaxEnergyThreshold(const int index, int v, int detPos) {