mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-11 20:37:15 +02:00
getFileIndex
This commit is contained in:
@ -505,7 +505,7 @@ class Detector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int getFileIndex() {
|
int getFileIndex() {
|
||||||
return det.setFileIndex(-1);
|
return det.getFileIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
//time in ns
|
//time in ns
|
||||||
|
@ -1654,6 +1654,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
*/
|
*/
|
||||||
int setFileIndex(int i, int detPos = -1);
|
int setFileIndex(int i, int detPos = -1);
|
||||||
|
|
||||||
|
int getFileIndex(int detPos = -1) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* increments file index
|
* increments file index
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
|
@ -216,7 +216,7 @@ struct sharedSlsDetector {
|
|||||||
slsDetectorDefs::frameDiscardPolicy receiver_frameDiscardMode;
|
slsDetectorDefs::frameDiscardPolicy receiver_frameDiscardMode;
|
||||||
|
|
||||||
/** receiver partial frames padding enable */
|
/** receiver partial frames padding enable */
|
||||||
bool receiver_framePadding;
|
bool rxFramePadding;
|
||||||
|
|
||||||
/** activated receiver */
|
/** activated receiver */
|
||||||
bool activated;
|
bool activated;
|
||||||
@ -234,7 +234,7 @@ struct sharedSlsDetector {
|
|||||||
char receiver_fileName[MAX_STR_LENGTH];
|
char receiver_fileName[MAX_STR_LENGTH];
|
||||||
|
|
||||||
/** file index */
|
/** file index */
|
||||||
int receiver_fileIndex;
|
int rxFileIndex;
|
||||||
|
|
||||||
/** file format */
|
/** file format */
|
||||||
slsDetectorDefs::fileFormat rxFileFormat;
|
slsDetectorDefs::fileFormat rxFileFormat;
|
||||||
@ -1508,6 +1508,12 @@ class slsDetector : public virtual slsDetectorDefs{
|
|||||||
*/
|
*/
|
||||||
int setFileIndex(int i);
|
int setFileIndex(int i);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the file index
|
||||||
|
* @returns file index
|
||||||
|
*/
|
||||||
|
|
||||||
|
int getFileIndex() const;
|
||||||
/**
|
/**
|
||||||
* increments file index
|
* increments file index
|
||||||
* @returns the file index
|
* @returns the file index
|
||||||
|
@ -2978,6 +2978,13 @@ int multiSlsDetector::setFileIndex(int i, int detPos) {
|
|||||||
return sls::minusOneIfDifferent(r);
|
return sls::minusOneIfDifferent(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int multiSlsDetector::getFileIndex(int detPos) const {
|
||||||
|
if (detPos >= 0)
|
||||||
|
return detectors[detPos]->getFileIndex();
|
||||||
|
auto r = parallelCall(&slsDetector::getFileIndex);
|
||||||
|
return sls::minusOneIfDifferent(r);
|
||||||
|
}
|
||||||
|
|
||||||
int multiSlsDetector::startReceiver(int detPos) {
|
int multiSlsDetector::startReceiver(int detPos) {
|
||||||
// single
|
// single
|
||||||
if (detPos >= 0) {
|
if (detPos >= 0) {
|
||||||
|
@ -343,13 +343,13 @@ void slsDetector::initializeDetectorStructure(detectorType type) {
|
|||||||
detector_shm()->detectorStopAPIVersion = 0;
|
detector_shm()->detectorStopAPIVersion = 0;
|
||||||
detector_shm()->receiverAPIVersion = 0;
|
detector_shm()->receiverAPIVersion = 0;
|
||||||
detector_shm()->receiver_frameDiscardMode = NO_DISCARD;
|
detector_shm()->receiver_frameDiscardMode = NO_DISCARD;
|
||||||
detector_shm()->receiver_framePadding = true;
|
detector_shm()->rxFramePadding = true;
|
||||||
detector_shm()->activated = true;
|
detector_shm()->activated = true;
|
||||||
detector_shm()->receiver_deactivatedPaddingEnable = true;
|
detector_shm()->receiver_deactivatedPaddingEnable = true;
|
||||||
detector_shm()->receiver_silentMode = false;
|
detector_shm()->receiver_silentMode = false;
|
||||||
sls::strcpy_safe(detector_shm()->receiver_filePath, "/");
|
sls::strcpy_safe(detector_shm()->receiver_filePath, "/");
|
||||||
sls::strcpy_safe(detector_shm()->receiver_fileName, "run");
|
sls::strcpy_safe(detector_shm()->receiver_fileName, "run");
|
||||||
detector_shm()->receiver_fileIndex = 0;
|
detector_shm()->rxFileIndex = 0;
|
||||||
detector_shm()->rxFileFormat = BINARY;
|
detector_shm()->rxFileFormat = BINARY;
|
||||||
switch (detector_shm()->myDetectorType) {
|
switch (detector_shm()->myDetectorType) {
|
||||||
case GOTTHARD:
|
case GOTTHARD:
|
||||||
@ -2127,11 +2127,11 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
|
|||||||
<< "\ndetector id:" << detId << "\ndetector hostname:" << detector_shm()->hostname
|
<< "\ndetector id:" << detId << "\ndetector hostname:" << detector_shm()->hostname
|
||||||
<< "\nfile path:" << detector_shm()->receiver_filePath
|
<< "\nfile path:" << detector_shm()->receiver_filePath
|
||||||
<< "\nfile name:" << detector_shm()->receiver_fileName
|
<< "\nfile name:" << detector_shm()->receiver_fileName
|
||||||
<< "\nfile index:" << detector_shm()->receiver_fileIndex
|
<< "\nfile index:" << detector_shm()->rxFileIndex
|
||||||
<< "\nfile format:" << detector_shm()->rxFileFormat
|
<< "\nfile format:" << detector_shm()->rxFileFormat
|
||||||
<< "\nr_framesperfile:" << detector_shm()->rxFramesPerFile
|
<< "\nr_framesperfile:" << detector_shm()->rxFramesPerFile
|
||||||
<< "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode
|
<< "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode
|
||||||
<< "\nr_padding:" << detector_shm()->receiver_framePadding
|
<< "\nr_padding:" << detector_shm()->rxFramePadding
|
||||||
<< "\nwrite enable:" << detector_shm()->rxFileWrite
|
<< "\nwrite enable:" << detector_shm()->rxFileWrite
|
||||||
<< "\noverwrite enable:" << detector_shm()->rxFileOverWrite
|
<< "\noverwrite enable:" << detector_shm()->rxFileOverWrite
|
||||||
<< "\nframe index needed:"
|
<< "\nframe index needed:"
|
||||||
@ -2163,11 +2163,11 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
|
|||||||
setReceiverUDPSocketBufferSize(0);
|
setReceiverUDPSocketBufferSize(0);
|
||||||
setFilePath(detector_shm()->receiver_filePath);
|
setFilePath(detector_shm()->receiver_filePath);
|
||||||
setFileName(detector_shm()->receiver_fileName);
|
setFileName(detector_shm()->receiver_fileName);
|
||||||
setFileIndex(detector_shm()->receiver_fileIndex);
|
setFileIndex(detector_shm()->rxFileIndex);
|
||||||
setFileFormat(detector_shm()->rxFileFormat);
|
setFileFormat(detector_shm()->rxFileFormat);
|
||||||
setFramesPerFile(detector_shm()->rxFramesPerFile);
|
setFramesPerFile(detector_shm()->rxFramesPerFile);
|
||||||
setReceiverFramesDiscardPolicy(detector_shm()->receiver_frameDiscardMode);
|
setReceiverFramesDiscardPolicy(detector_shm()->receiver_frameDiscardMode);
|
||||||
setReceiverPartialFramesPadding(detector_shm()->receiver_framePadding);
|
setReceiverPartialFramesPadding(detector_shm()->rxFramePadding);
|
||||||
setFileWrite(detector_shm()->rxFileWrite);
|
setFileWrite(detector_shm()->rxFileWrite);
|
||||||
setFileOverWrite(detector_shm()->rxFileOverWrite);
|
setFileOverWrite(detector_shm()->rxFileOverWrite);
|
||||||
setTimer(FRAME_PERIOD, detector_shm()->timerValue[FRAME_PERIOD]);
|
setTimer(FRAME_PERIOD, detector_shm()->timerValue[FRAME_PERIOD]);
|
||||||
@ -3686,7 +3686,7 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
|
|
||||||
// index
|
// index
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->receiver_fileIndex = i32;
|
detector_shm()->rxFileIndex = i32;
|
||||||
|
|
||||||
// file format
|
// file format
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
@ -3702,15 +3702,15 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
|
|
||||||
// frame padding
|
// frame padding
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->receiver_framePadding = i32;
|
detector_shm()->rxFramePadding = static_cast<bool>(i32);
|
||||||
|
|
||||||
// file write enable
|
// file write enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->rxFileWrite = i32;
|
detector_shm()->rxFileWrite = static_cast<bool>(i32);
|
||||||
|
|
||||||
// file overwrite enable
|
// file overwrite enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->rxFileOverWrite = i32;
|
detector_shm()->rxFileOverWrite = static_cast<bool>(i32);
|
||||||
|
|
||||||
// gap pixels
|
// gap pixels
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
@ -3734,21 +3734,21 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
|
|
||||||
// receiver streaming enable
|
// receiver streaming enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->receiver_upstream = i32;
|
detector_shm()->receiver_upstream = static_cast<bool>(i32);
|
||||||
|
|
||||||
// activate
|
// activate
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->activated = i32;
|
detector_shm()->activated = static_cast<bool>(i32);
|
||||||
|
|
||||||
// deactivated padding enable
|
// deactivated padding enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->receiver_deactivatedPaddingEnable = i32;
|
detector_shm()->receiver_deactivatedPaddingEnable = static_cast<bool>(i32);
|
||||||
|
|
||||||
// silent mode
|
// silent mode
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->receiver_silentMode = i32;
|
detector_shm()->receiver_silentMode = static_cast<bool>(i32);
|
||||||
|
|
||||||
if (!n) {
|
if (n == 0) {
|
||||||
throw RuntimeError(
|
throw RuntimeError(
|
||||||
"Could not update receiver: " + std::string(detector_shm()->receiver_hostname) +
|
"Could not update receiver: " + std::string(detector_shm()->receiver_hostname) +
|
||||||
", received 0 bytes\n");
|
", received 0 bytes\n");
|
||||||
@ -3775,7 +3775,7 @@ void slsDetector::sendMultiDetectorSize() {
|
|||||||
FILE_LOG(logDEBUG1) << "Receiver multi size returned: " << retval;
|
FILE_LOG(logDEBUG1) << "Receiver multi size returned: " << retval;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
ret = updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3793,7 +3793,7 @@ void slsDetector::setDetectorId() {
|
|||||||
FILE_LOG(logDEBUG1) << "Receiver Position Id returned: " << retval;
|
FILE_LOG(logDEBUG1) << "Receiver Position Id returned: " << retval;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
ret = updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3923,12 +3923,12 @@ int slsDetector::setReceiverPartialFramesPadding(int f) {
|
|||||||
ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort);
|
ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort);
|
||||||
ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
|
ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
|
||||||
FILE_LOG(logDEBUG1) << "Receiver partial frames enable: " << retval;
|
FILE_LOG(logDEBUG1) << "Receiver partial frames enable: " << retval;
|
||||||
detector_shm()->receiver_framePadding = static_cast<bool>(retval);
|
detector_shm()->rxFramePadding = static_cast<bool>(retval);
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
}
|
}
|
||||||
return detector_shm()->receiver_framePadding;
|
return detector_shm()->rxFramePadding;
|
||||||
}
|
}
|
||||||
|
|
||||||
slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) {
|
slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) {
|
||||||
@ -3957,7 +3957,7 @@ slsDetectorDefs::fileFormat slsDetector::getFileFormat() const {
|
|||||||
return detector_shm()->rxFileFormat;
|
return detector_shm()->rxFileFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slsDetector::getFileIndex() { return detector_shm()->receiver_fileIndex; }
|
int slsDetector::getFileIndex() { return detector_shm()->rxFileIndex; }
|
||||||
|
|
||||||
int slsDetector::setFileIndex(int i) {
|
int slsDetector::setFileIndex(int i) {
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
@ -3971,20 +3971,22 @@ int slsDetector::setFileIndex(int i) {
|
|||||||
ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort);
|
ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort);
|
||||||
ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
|
ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
|
||||||
FILE_LOG(logDEBUG1) << "Receiver file index: " << retval;
|
FILE_LOG(logDEBUG1) << "Receiver file index: " << retval;
|
||||||
detector_shm()->receiver_fileIndex = retval;
|
detector_shm()->rxFileIndex = retval;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return detector_shm()->receiver_fileIndex;
|
return getFileIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int slsDetector::getFileIndex() const { return detector_shm()->rxFileIndex; }
|
||||||
|
|
||||||
int slsDetector::incrementFileIndex() {
|
int slsDetector::incrementFileIndex() {
|
||||||
if (detector_shm()->rxFileWrite) {
|
if (detector_shm()->rxFileWrite) {
|
||||||
return setFileIndex(detector_shm()->receiver_fileIndex + 1);
|
return setFileIndex(detector_shm()->rxFileIndex + 1);
|
||||||
}
|
}
|
||||||
return detector_shm()->receiver_fileIndex;
|
return detector_shm()->rxFileIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slsDetector::startReceiver() {
|
int slsDetector::startReceiver() {
|
||||||
|
@ -2647,19 +2647,14 @@ std::string slsDetectorCommand::helpOverwrite(int action) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string slsDetectorCommand::cmdFileIndex(int narg, char *args[], int action, int detPos) {
|
std::string slsDetectorCommand::cmdFileIndex(int narg, char *args[], int action, int detPos) {
|
||||||
char ans[100];
|
|
||||||
int i;
|
|
||||||
myDet->setReceiverOnline(ONLINE_FLAG, detPos);
|
myDet->setReceiverOnline(ONLINE_FLAG, detPos);
|
||||||
if (action == HELP_ACTION) {
|
if (action == HELP_ACTION) {
|
||||||
return helpFileName(action);
|
return helpFileName(action);
|
||||||
} else if (action == PUT_ACTION) {
|
} else if (action == PUT_ACTION) {
|
||||||
if (!sscanf(args[1], "%d", &i))
|
int i = std::stoi(args[1]);
|
||||||
return std::string("cannot parse file index");
|
|
||||||
myDet->setFileIndex(i, detPos);
|
myDet->setFileIndex(i, detPos);
|
||||||
}
|
}
|
||||||
|
return std::to_string(myDet->getFileIndex(detPos));
|
||||||
sprintf(ans, "%d", myDet->getFileIndex(detPos));
|
|
||||||
return std::string(ans);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string slsDetectorCommand::helpFileIndex(int action) {
|
std::string slsDetectorCommand::helpFileIndex(int action) {
|
||||||
|
Reference in New Issue
Block a user