From 7e44648da984368b44d62bfcfec93de0249239b4 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 12 Mar 2015 12:22:19 +0100 Subject: [PATCH] different between acquisition index and frame index --- .../eigerDetectorServer/Makefile | 2 +- .../eigerDetectorServer/ansi.h | 1 + .../bin/eigerDetectorServer | Bin 237969 -> 238313 bytes .../slsDetectorFunctionList.c | 4 +++ .../multiSlsDetector/multiSlsDetector.cpp | 10 +++---- .../multiSlsDetector/multiSlsDetector.h | 5 ++-- .../slsDetector/slsDetector.cpp | 5 ++-- slsDetectorSoftware/slsDetector/slsDetector.h | 5 ++-- .../slsDetector/slsDetectorBase.h | 5 ++-- .../slsDetector/slsDetectorUtils.h | 5 ++-- .../slsDetectorAnalysis/postProcessing.cpp | 27 +++++++++--------- .../slsDetectorServer_funcs.c | 2 +- 12 files changed, 41 insertions(+), 30 deletions(-) create mode 120000 slsDetectorSoftware/eigerDetectorServer/ansi.h diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index bd3adec6e..8b15d7a2e 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,6 +1,6 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer diff --git a/slsDetectorSoftware/eigerDetectorServer/ansi.h b/slsDetectorSoftware/eigerDetectorServer/ansi.h new file mode 120000 index 000000000..a122db0ad --- /dev/null +++ b/slsDetectorSoftware/eigerDetectorServer/ansi.h @@ -0,0 +1 @@ +../../slsReceiverSoftware/include/ansi.h \ No newline at end of file diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index e1f63a1a5b2e1c1bca0b5b724ab53655c4a97b5b..4e656f58890bd71f35f43c2a268d680bb534f84e 100755 GIT binary patch delta 43012 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 UUmR-pM|{53t1kZ5;r}uIKSvh|8~^|S delta 43273 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 t*ZL}xd!V-k=*PgR0JgUo3O5&rdataBytes)/sizeof(int); if(nel <= 0){ cout << "Multislsdetector databytes not valid :" << thisMultiDetector->dataBytes << endl; - fIndex = -1; + acquisitionIndex = -1; return NULL; } @@ -4586,11 +4586,11 @@ int* multiSlsDetector::readFrameFromReceiver(char* fName, int &fIndex){ for (int id=0; idnumberOfDetectors; id++) { if (detectors[id]) { n=detectors[id]->getDataBytes(); - retdet=detectors[id]->readFrameFromReceiver(fName,fIndex); + retdet=detectors[id]->readFrameFromReceiver(fName, acquisitionIndex, frameIndex); if(detectors[id]->getErrorMask()) setErrorMask(getErrorMask()|(1<dataBytes/sizeof(int); int* retval=new int[nel]; @@ -6472,7 +6472,8 @@ int* slsDetector::readFrameFromReceiver(char* fName, int &fIndex){ return NULL; } else { n=dataSocket->ReceiveDataOnly(fName,MAX_STR_LENGTH); - n=dataSocket->ReceiveDataOnly(&fIndex,sizeof(fIndex)); + n=dataSocket->ReceiveDataOnly(&acquisitionIndex,sizeof(acquisitionIndex)); + n=dataSocket->ReceiveDataOnly(&frameIndex,sizeof(frameIndex)); n=dataSocket->ReceiveDataOnly(retval,thisDetector->dataBytes); #ifdef VERBOSE diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index c4073f582..9de21e0bc 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1528,10 +1528,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion { /** * Reads a frame from receiver * @param fName file name of current frame() - * @param fIndex current frame index + * @param acquisitionIndex current acquisition index + * @param frameIndex current frame index (for each scan) /returns a frame read from recever */ - int* readFrameFromReceiver(char* fName, int &fIndex); + int* readFrameFromReceiver(char* fName, int &acquisitionIndex, int &frameIndex); /** Locks/Unlocks the connection to the receiver /param lock sets (1), usets (0), gets (-1) the lock diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index 6f5b2a15e..ff3774ac4 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -496,10 +496,11 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef /** * Reads a frame from receiver * @param fName file name of current frame() - * @param fIndex current frame index + * @param acquisitionIndex current acquisition index + * @param frameIndex current frame index (for each scan) /returns a frame read from recever */ - virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0; + virtual int* readFrameFromReceiver(char* fName, int &acquisitionIndex, int &frameIndex)=0; /** Sets the read receiver frequency diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index 387923f94..2b27abee1 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -628,10 +628,11 @@ virtual int resetFramesCaught()=0; /** * Reads a frame from receiver * @param fName file name of current frame() - * @param fIndex current frame index + * @param acquisitionIndex current acquisition index + * @param frameIndex current frame index (for each scan) /returns a frame read from recever */ -virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0; +virtual int* readFrameFromReceiver(char* fName, int &acquisitionIndex, int &frameIndex)=0; /** diff --git a/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.cpp b/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.cpp index 67f8046e1..25971e6d5 100644 --- a/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.cpp +++ b/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.cpp @@ -497,7 +497,8 @@ void* postProcessing::processData(int delflag) { int progress = -1; char currentfName[MAX_STR_LENGTH]=""; - int currentfIndex = -1; + int currentAcquisitionIndex = -1; + int currentFrameIndex = -1; bool newData = false; int nthframe = setReadReceiverFrequency(0); #ifdef VERBOSE @@ -526,14 +527,14 @@ void* postProcessing::processData(int delflag) { //get progress pthread_mutex_lock(&mg); if(setReceiverOnline() == ONLINE_FLAG) - currentfIndex = getReceiverCurrentFrameIndex(); + currentAcquisitionIndex = getReceiverCurrentFrameIndex(); pthread_mutex_unlock(&mg); //updating progress - if(currentfIndex != -1) - setCurrentProgress(currentfIndex+1); + if(currentAcquisitionIndex != -1) + setCurrentProgress(currentAcquisitionIndex+1); #ifdef VERY_VERY_DEBUG - cout << "currentfIndex:" << currentfIndex << endl; + cout << "currentAcquisitionIndex:" << currentAcquisitionIndex << endl; #endif @@ -579,10 +580,10 @@ void* postProcessing::processData(int delflag) { if (dataReady){ //for random reads, ask only if it has new data if(!newData){ - if(currentfIndex > progress) + if(currentAcquisitionIndex > progress) newData = true; #ifdef VERY_VERY_DEBUG - cout << "currentfindex:" << currentfIndex << " progress:" << progress << endl; + cout << "currentAcquisitionIndex:" << currentAcquisitionIndex << " progress:" << progress << endl; #endif } @@ -595,7 +596,7 @@ void* postProcessing::processData(int delflag) { strcpy(currentfName,""); pthread_mutex_lock(&mg); //int* receiverData = new int [getTotalNumberOfChannels()]; - int* receiverData = readFrameFromReceiver(currentfName,currentfIndex); + int* receiverData = readFrameFromReceiver(currentfName,currentAcquisitionIndex,currentFrameIndex); pthread_mutex_unlock(&mg); //if detector returned null @@ -604,18 +605,18 @@ void* postProcessing::processData(int delflag) { //no data or wrong data for print out if(receiverData == NULL){ - currentfIndex = -1; + currentAcquisitionIndex = -1; cout<<"****Detector Data returned is NULL***"< progress){ + }else if (currentAcquisitionIndex > progress){ #ifdef VERY_VERY_DEBUG cout << "GOT data" << endl; #endif @@ -624,10 +625,10 @@ void* postProcessing::processData(int delflag) { if ((fdata) && (dataReady)){ // cout << "DATAREADY 3" << endl; thisData = new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentfName,getTotalNumberOfChannels()); - dataReady(thisData, currentfIndex, pCallbackArg); + dataReady(thisData, currentFrameIndex, pCallbackArg); delete thisData; fdata = NULL; - progress = currentfIndex; + progress = currentAcquisitionIndex; #ifdef VERY_VERY_DEBUG cout << "progress:" << progress << endl; #endif diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 0488ceb29..f65df5587 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -805,7 +805,7 @@ enum externalCommunicationMode{ #endif default: ret = FAIL; - sprintf("This timing mode %d not implemented in this detector\n",(int)arg); + sprintf(mess,"This timing mode %d not implemented in this detector\n",(int)arg); break; } }