done for eiger, some checks for frameindex=-1,socket closing earlier than last socket etc

This commit is contained in:
Dhanya Maliakal
2016-09-20 15:11:39 +02:00
parent d751c626b3
commit a1df8bdc15
8 changed files with 27 additions and 13 deletions

View File

@@ -5046,7 +5046,9 @@ void multiSlsDetector::startReceivingData(){
cout << "Subframe index: " << currentSubFrameIndex << endl; cout << "Subframe index: " << currentSubFrameIndex << endl;
cout << "File name: " << currentFileName << endl; cout << "File name: " << currentFileName << endl;
#endif #endif
if(currentFrameIndex ==-1) cprintf(RED,"multi frame index -1!!\n");
} }
// close the message // close the message
zmq_msg_close(&message); zmq_msg_close(&message);
@@ -5058,9 +5060,9 @@ void multiSlsDetector::startReceivingData(){
//end of socket ("end") //end of socket ("end")
if (len < 1024*256 ) { if (len < 1024*256 ) {
if(!len) cprintf(RED,"Received no data in socket for %d\n", ithread); if(!len) cprintf(RED,"Received no data in socket for %d\n", ithread);
#ifdef VERYVERBOSE //#ifdef VERYVERBOSE
cprintf(RED,"End of socket for %d\n", ithread); cprintf(RED,"End of socket for %d\n", ithread);
#endif //#endif
zmq_msg_close(&message); zmq_msg_close(&message);
singleframe[ithread] = NULL; singleframe[ithread] = NULL;
pthread_mutex_lock(&ms); pthread_mutex_lock(&ms);
@@ -5173,6 +5175,7 @@ void multiSlsDetector::readFrameFromReceiver(){
//get each frame //get each frame
for(int ireadout=0; ireadout<numReadouts; ++ireadout){ for(int ireadout=0; ireadout<numReadouts; ++ireadout){
//cprintf(BLUE,"multi checking %d mask:0x%x\n",ireadout,receivingDataThreadMask);
idet = ireadout/numReadoutPerDetector; idet = ireadout/numReadoutPerDetector;
if((1 << ireadout) & receivingDataThreadMask){ //if running if((1 << ireadout) & receivingDataThreadMask){ //if running
@@ -5240,7 +5243,7 @@ void multiSlsDetector::readFrameFromReceiver(){
setCurrentProgress(currentAcquisitionIndex+1); setCurrentProgress(currentAcquisitionIndex+1);
} }
cout << "All zmq sockets closed" << endl;
//free resources //free resources
for(int i = 0; i < numReadouts; ++i){ for(int i = 0; i < numReadouts; ++i){
@@ -5474,12 +5477,12 @@ int multiSlsDetector::setReadReceiverFrequency(int getFromReceiver, int freq){
int multiSlsDetector::setDataStreamingFromReceiver(int enable){ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
int ret=-100, ret1; int ret=-100, ret1;
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) { for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
if (detectors[idet]) { if (detectors[idet]) {
ret1=detectors[idet]->setDataStreamingFromReceiver(enable); ret1=detectors[idet]->enableDataStreamingFromReceiver(enable);
if(detectors[idet]->getErrorMask()) if(detectors[idet]->getErrorMask())
setErrorMask(getErrorMask()|(1<<idet)); setErrorMask(getErrorMask()|(1<<idet));
if (ret==-100) if (ret==-100)

View File

@@ -1255,7 +1255,7 @@ class multiSlsDetector : public slsDetectorUtils {
* @param enable 0 to disable 1 to enable -1 to only get the value * @param enable 0 to disable 1 to enable -1 to only get the value
* @returns data streaming * @returns data streaming
*/ */
int setDataStreamingFromReceiver(int enable=-1); int enableDataStreamingFromReceiver(int enable=-1);
/** updates the multidetector offsets */ /** updates the multidetector offsets */
void updateOffsets(); void updateOffsets();

View File

@@ -7462,7 +7462,7 @@ int slsDetector::setReadReceiverFrequency(int getFromReceiver, int freq){
int slsDetector::setDataStreamingFromReceiver(int enable){ int slsDetector::enableDataStreamingFromReceiver(int enable){
int fnum=F_STREAM_DATA_FROM_RECEIVER; int fnum=F_STREAM_DATA_FROM_RECEIVER;
int ret = FAIL; int ret = FAIL;
int retval=-1; int retval=-1;

View File

@@ -1684,7 +1684,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
* @param enable 0 to disable 1 to enable -1 to only get the value * @param enable 0 to disable 1 to enable -1 to only get the value
* @returns data streaming * @returns data streaming
*/ */
int setDataStreamingFromReceiver(int enable=-1); int enableDataStreamingFromReceiver(int enable=-1);
/** enable/disable or get data compression in receiver /** enable/disable or get data compression in receiver
* @param i is -1 to get, 0 to disable and 1 to enable * @param i is -1 to get, 0 to disable and 1 to enable

View File

@@ -240,7 +240,9 @@ int slsDetectorUsers::setReceiverMode(int n){
return myDetector->setReadReceiverFrequency(1,n); return myDetector->setReadReceiverFrequency(1,n);
} }
int slsDetectorUsers::enableDataStreamingFromReceiver(int i){
return myDetector->enableDataStreamingFromReceiver(i);
}
int64_t slsDetectorUsers::getModuleFirmwareVersion(){ int64_t slsDetectorUsers::getModuleFirmwareVersion(){

View File

@@ -450,6 +450,15 @@ class slsDetectorUsers
virtual void finalizeDataset(double *a, double *v, double *e, int &np); virtual void finalizeDataset(double *a, double *v, double *e, int &np);
/**
Enable data streaming from receiver (zmq)
\param i 1 to set, 0 to reset and -1 to get
\returns data streaming enable
*/
int enableDataStreamingFromReceiver(int i=-1);
/** /**
get get Module Firmware Version get get Module Firmware Version
\returns id \returns id

View File

@@ -66,16 +66,16 @@ int slsDetectorUtils::acquire(int delflag){
} }
//start data streaming threads in receiver if enabled //start data streaming threads in receiver if enabled
ret = setDataStreamingFromReceiver(-1); ret = enableDataStreamingFromReceiver(-1);
if(dataReady == NULL){ if(dataReady == NULL){
if(ret){ if(ret){
cout << "Disabling Data Streaming from Receiver" << endl; cout << "Disabling Data Streaming from Receiver" << endl;
setDataStreamingFromReceiver(0); //no call back but streaming enabled, then dont stream. enableDataStreamingFromReceiver(0); //no call back but streaming enabled, then dont stream.
} }
}else{ }else{
if(*threadedProcessing && (!ret)){ if(*threadedProcessing && (!ret)){
cout << "Enabling Data Streaming from Receiver" << endl; cout << "Enabling Data Streaming from Receiver" << endl;
setDataStreamingFromReceiver(1); //call back exists, threaded but streaming disabled, then stream. enableDataStreamingFromReceiver(1); //call back exists, threaded but streaming disabled, then stream.
} }
} }

View File

@@ -700,7 +700,7 @@ virtual int setReadReceiverFrequency(int getFromReceiver, int freq=-1)=0;
* @param enable 0 to disable 1 to enable -1 to only get the value * @param enable 0 to disable 1 to enable -1 to only get the value
* @returns data streaming * @returns data streaming
*/ */
virtual int setDataStreamingFromReceiver(int enable=-1)=0; virtual int enableDataStreamingFromReceiver(int enable=-1)=0;
/** enable/disable or get data compression in receiver /** enable/disable or get data compression in receiver