getFileIndex

This commit is contained in:
Erik Frojdh 2019-04-10 14:16:04 +02:00
parent 92b674354d
commit 4b7c5c5950
6 changed files with 46 additions and 34 deletions

View File

@ -505,7 +505,7 @@ class Detector {
}
int getFileIndex() {
return det.setFileIndex(-1);
return det.getFileIndex();
}
//time in ns

View File

@ -1654,6 +1654,8 @@ class multiSlsDetector : public virtual slsDetectorDefs {
*/
int setFileIndex(int i, int detPos = -1);
int getFileIndex(int detPos = -1) const;
/**
* increments file index
* @param detPos -1 for all detectors in list or specific detector position

View File

@ -216,7 +216,7 @@ struct sharedSlsDetector {
slsDetectorDefs::frameDiscardPolicy receiver_frameDiscardMode;
/** receiver partial frames padding enable */
bool receiver_framePadding;
bool rxFramePadding;
/** activated receiver */
bool activated;
@ -234,7 +234,7 @@ struct sharedSlsDetector {
char receiver_fileName[MAX_STR_LENGTH];
/** file index */
int receiver_fileIndex;
int rxFileIndex;
/** file format */
slsDetectorDefs::fileFormat rxFileFormat;
@ -1508,6 +1508,12 @@ class slsDetector : public virtual slsDetectorDefs{
*/
int setFileIndex(int i);
/**
* Gets the file index
* @returns file index
*/
int getFileIndex() const;
/**
* increments file index
* @returns the file index

View File

@ -2978,6 +2978,13 @@ int multiSlsDetector::setFileIndex(int i, int detPos) {
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) {
// single
if (detPos >= 0) {

View File

@ -343,13 +343,13 @@ void slsDetector::initializeDetectorStructure(detectorType type) {
detector_shm()->detectorStopAPIVersion = 0;
detector_shm()->receiverAPIVersion = 0;
detector_shm()->receiver_frameDiscardMode = NO_DISCARD;
detector_shm()->receiver_framePadding = true;
detector_shm()->rxFramePadding = true;
detector_shm()->activated = true;
detector_shm()->receiver_deactivatedPaddingEnable = true;
detector_shm()->receiver_silentMode = false;
sls::strcpy_safe(detector_shm()->receiver_filePath, "/");
sls::strcpy_safe(detector_shm()->receiver_fileName, "run");
detector_shm()->receiver_fileIndex = 0;
detector_shm()->rxFileIndex = 0;
detector_shm()->rxFileFormat = BINARY;
switch (detector_shm()->myDetectorType) {
case GOTTHARD:
@ -2127,11 +2127,11 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
<< "\ndetector id:" << detId << "\ndetector hostname:" << detector_shm()->hostname
<< "\nfile path:" << detector_shm()->receiver_filePath
<< "\nfile name:" << detector_shm()->receiver_fileName
<< "\nfile index:" << detector_shm()->receiver_fileIndex
<< "\nfile index:" << detector_shm()->rxFileIndex
<< "\nfile format:" << detector_shm()->rxFileFormat
<< "\nr_framesperfile:" << detector_shm()->rxFramesPerFile
<< "\nr_discardpolicy:" << detector_shm()->receiver_frameDiscardMode
<< "\nr_padding:" << detector_shm()->receiver_framePadding
<< "\nr_padding:" << detector_shm()->rxFramePadding
<< "\nwrite enable:" << detector_shm()->rxFileWrite
<< "\noverwrite enable:" << detector_shm()->rxFileOverWrite
<< "\nframe index needed:"
@ -2163,11 +2163,11 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
setReceiverUDPSocketBufferSize(0);
setFilePath(detector_shm()->receiver_filePath);
setFileName(detector_shm()->receiver_fileName);
setFileIndex(detector_shm()->receiver_fileIndex);
setFileIndex(detector_shm()->rxFileIndex);
setFileFormat(detector_shm()->rxFileFormat);
setFramesPerFile(detector_shm()->rxFramesPerFile);
setReceiverFramesDiscardPolicy(detector_shm()->receiver_frameDiscardMode);
setReceiverPartialFramesPadding(detector_shm()->receiver_framePadding);
setReceiverPartialFramesPadding(detector_shm()->rxFramePadding);
setFileWrite(detector_shm()->rxFileWrite);
setFileOverWrite(detector_shm()->rxFileOverWrite);
setTimer(FRAME_PERIOD, detector_shm()->timerValue[FRAME_PERIOD]);
@ -3686,7 +3686,7 @@ int slsDetector::updateCachedReceiverVariables() const {
// index
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->receiver_fileIndex = i32;
detector_shm()->rxFileIndex = i32;
// file format
n += receiver.receiveData(&i32, sizeof(i32));
@ -3702,15 +3702,15 @@ int slsDetector::updateCachedReceiverVariables() const {
// frame padding
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->receiver_framePadding = i32;
detector_shm()->rxFramePadding = static_cast<bool>(i32);
// file write enable
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->rxFileWrite = i32;
detector_shm()->rxFileWrite = static_cast<bool>(i32);
// file overwrite enable
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->rxFileOverWrite = i32;
detector_shm()->rxFileOverWrite = static_cast<bool>(i32);
// gap pixels
n += receiver.receiveData(&i32, sizeof(i32));
@ -3734,21 +3734,21 @@ int slsDetector::updateCachedReceiverVariables() const {
// receiver streaming enable
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->receiver_upstream = i32;
detector_shm()->receiver_upstream = static_cast<bool>(i32);
// activate
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->activated = i32;
detector_shm()->activated = static_cast<bool>(i32);
// deactivated padding enable
n += receiver.receiveData(&i32, sizeof(i32));
detector_shm()->receiver_deactivatedPaddingEnable = i32;
detector_shm()->receiver_deactivatedPaddingEnable = static_cast<bool>(i32);
// silent mode
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(
"Could not update receiver: " + std::string(detector_shm()->receiver_hostname) +
", received 0 bytes\n");
@ -3775,7 +3775,7 @@ void slsDetector::sendMultiDetectorSize() {
FILE_LOG(logDEBUG1) << "Receiver multi size returned: " << retval;
}
if (ret == FORCE_UPDATE) {
ret = updateCachedReceiverVariables();
updateCachedReceiverVariables();
}
}
@ -3793,7 +3793,7 @@ void slsDetector::setDetectorId() {
FILE_LOG(logDEBUG1) << "Receiver Position Id returned: " << retval;
}
if (ret == FORCE_UPDATE) {
ret = updateCachedReceiverVariables();
updateCachedReceiverVariables();
}
}
@ -3923,12 +3923,12 @@ 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 = static_cast<bool>(retval);
detector_shm()->rxFramePadding = static_cast<bool>(retval);
}
if (ret == FORCE_UPDATE) {
updateCachedReceiverVariables();
}
return detector_shm()->receiver_framePadding;
return detector_shm()->rxFramePadding;
}
slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) {
@ -3957,7 +3957,7 @@ slsDetectorDefs::fileFormat slsDetector::getFileFormat() const {
return detector_shm()->rxFileFormat;
}
int slsDetector::getFileIndex() { return detector_shm()->receiver_fileIndex; }
int slsDetector::getFileIndex() { return detector_shm()->rxFileIndex; }
int slsDetector::setFileIndex(int i) {
if (i >= 0) {
@ -3971,20 +3971,22 @@ int slsDetector::setFileIndex(int i) {
ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort);
ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
FILE_LOG(logDEBUG1) << "Receiver file index: " << retval;
detector_shm()->receiver_fileIndex = retval;
detector_shm()->rxFileIndex = retval;
}
if (ret == FORCE_UPDATE) {
updateCachedReceiverVariables();
}
}
return detector_shm()->receiver_fileIndex;
return getFileIndex();
}
int slsDetector::getFileIndex() const { return detector_shm()->rxFileIndex; }
int slsDetector::incrementFileIndex() {
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() {

View File

@ -2647,19 +2647,14 @@ std::string slsDetectorCommand::helpOverwrite(int action) {
}
std::string slsDetectorCommand::cmdFileIndex(int narg, char *args[], int action, int detPos) {
char ans[100];
int i;
myDet->setReceiverOnline(ONLINE_FLAG, detPos);
if (action == HELP_ACTION) {
return helpFileName(action);
} else if (action == PUT_ACTION) {
if (!sscanf(args[1], "%d", &i))
return std::string("cannot parse file index");
int i = std::stoi(args[1]);
myDet->setFileIndex(i, detPos);
}
sprintf(ans, "%d", myDet->getFileIndex(detPos));
return std::string(ans);
return std::to_string(myDet->getFileIndex(detPos));
}
std::string slsDetectorCommand::helpFileIndex(int action) {