mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 01:58:00 +02:00
gotthard receiver works so far without cpu file write and tcp generic socket lock
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@337 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
@ -123,7 +123,8 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
||||
strcpy(thisMultiDetector->fileName,"run");
|
||||
/** set fileIndex to default to 0*/
|
||||
thisMultiDetector->fileIndex=0;
|
||||
|
||||
/** set frames per file to default to 1*/
|
||||
thisMultiDetector->framesPerFile=1;
|
||||
|
||||
/** set progress Index to default to 0*/
|
||||
thisMultiDetector->progressIndex=0;
|
||||
@ -229,7 +230,7 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
||||
filePath=thisMultiDetector->filePath;
|
||||
fileName=thisMultiDetector->fileName;
|
||||
fileIndex=&thisMultiDetector->fileIndex;
|
||||
|
||||
framesPerFile=&thisMultiDetector->framesPerFile;
|
||||
|
||||
|
||||
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++) {
|
||||
@ -3714,6 +3715,52 @@ int multiSlsDetector::getCurrentFrameIndex() {
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::resetFramesCaught(int index) {
|
||||
int ret=-100, ret1;
|
||||
for (int i=0; i<thisMultiDetector->numberOfDetectors; i++){
|
||||
if (detectors[i]){
|
||||
ret1=detectors[i]->resetFramesCaught(index);
|
||||
if (ret==-100)
|
||||
ret=ret1;
|
||||
else if (ret!=ret1)
|
||||
ret=-1;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int* multiSlsDetector::readFrameFromReceiver(){
|
||||
int nel=(thisMultiDetector->dataBytes)/sizeof(int);
|
||||
int n;
|
||||
int* retval=new int[nel];
|
||||
int *retdet, *p=retval;
|
||||
|
||||
for (int id=0; id<thisMultiDetector->numberOfDetectors; id++) {
|
||||
if (detectors[id]) {
|
||||
retdet=detectors[id]->readFrameFromReceiver();
|
||||
if (retdet) {
|
||||
n=detectors[id]->getDataBytes();
|
||||
memcpy(p,retdet,n);
|
||||
delete [] retdet;
|
||||
p+=n/sizeof(int);
|
||||
}else {
|
||||
#ifdef VERBOSE
|
||||
cout << "Receiver for detector " << id << " does not have data left " << endl;
|
||||
#endif
|
||||
delete [] retval;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::lockReceiver(int lock) {
|
||||
|
||||
int ret=-100, ret1;
|
||||
|
@ -111,6 +111,8 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
char fileName[MAX_STR_LENGTH];
|
||||
/** path of the output files */
|
||||
char filePath[MAX_STR_LENGTH];
|
||||
/** max frames per file */
|
||||
int framesPerFile;
|
||||
|
||||
/** corrections to be applied to the data \see ::correctionFlags */
|
||||
int correctionMask;
|
||||
@ -1084,6 +1086,17 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
*/
|
||||
int getCurrentFrameIndex();
|
||||
|
||||
/**
|
||||
* resets framescaught
|
||||
* @param index frames caught by receiver
|
||||
* @param index if frame index is needed
|
||||
*/
|
||||
int resetFramesCaught(int index=-1);
|
||||
|
||||
/**
|
||||
/returns a frame read from recever
|
||||
*/
|
||||
int* readFrameFromReceiver();
|
||||
|
||||
/** Locks/Unlocks the connection to the receiver
|
||||
/param lock sets (1), usets (0), gets (-1) the lock
|
||||
|
Reference in New Issue
Block a user