From 3e36b603f95f7e50c0489a470ee454387c73dbb4 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Thu, 31 Jul 2014 12:13:15 +0200 Subject: [PATCH] receiver nth frame and acquisition indices for eiger --- .../slsReceiver/slsReceiverTCPIPInterface.cpp | 3 + .../slsReceiver/slsReceiverUDPFunctions.cpp | 63 ++++++++++++------- .../slsReceiver/slsReceiverUDPFunctions.h | 4 +- 3 files changed, 46 insertions(+), 24 deletions(-) diff --git a/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp index cadde6508..cc143efc4 100644 --- a/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/slsReceiver/slsReceiverTCPIPInterface.cpp @@ -1318,7 +1318,9 @@ int slsReceiverTCPIPInterface::eiger_read_frame(){ /**send garbage with -1 index to try again*/ if(!receiverBase->getFramesCaught()){ arg=-1; +#ifdef VERBOSE cout<<"haven't caught any frame yet"<fnum); + tempframenum += (startFrameIndex-1); //eiger frame numbers start at 1, so need to -1 }else if ((myDetectorType == GOTTHARD) && (shortFrame == -1)) tempframenum = (((((uint32_t)(*((uint32_t*)(wbuf[ithread] + HEADER_SIZE_NUM_TOT_PACKETS))))+1)& (frameIndexMask)) >> frameIndexOffset); else @@ -1840,6 +1852,7 @@ int loop; void slsReceiverUDPFunctions::startFrameIndices(int ithread){ if (myDetectorType == EIGER) + //add currframenum later in this method for scans startFrameIndex = htonl(*(unsigned int*)((eiger_image_header *)((char*)(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS)))->fnum); //gotthard has +1 for frame number and not a short frame else if ((myDetectorType == GOTTHARD) && (shortFrame == -1)) @@ -1850,9 +1863,6 @@ void slsReceiverUDPFunctions::startFrameIndices(int ithread){ & (frameIndexMask)) >> frameIndexOffset); - cout << "startFrameIndex:" << startFrameIndex<push(buffer[ithread]); @@ -1898,37 +1917,37 @@ int i; cout << ithread << " going to push in dummy buffer:" << (void*)buffer[ithread] << " with num packets:"<< (*((uint16_t*)(buffer[ithread]))) << endl; #endif while(!fifo[ithread]->push(buffer[ithread])); -//#ifdef VERYDEBUG +#ifdef VERYDEBUG cout << ithread << " pushed in dummy buffer:" << (void*)buffer[ithread] << endl; -//#endif +#endif } //reset mask and exit loop pthread_mutex_lock(&status_mutex); listeningthreads_mask^=(1< 1) cout << "Waiting for listening to be done.. current mask:" << hex << listeningthreads_mask << endl; -//#endif +#endif while(listeningthreads_mask) usleep(5000); -//#ifdef VERYDEBUG +#ifdef VERYDEBUG t = 0; for(i=0;i