diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index d87899bd0..9f06f7ab2 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -5656,7 +5656,7 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){ } } - }else enable = dataSocketsStarted; + } int ret=-100, ret1; for (int idet=0; idetnumberOfDetectors; idet++) { @@ -5670,11 +5670,11 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){ ret=-1; } } - /* - if(enable == -1) - return dataSocketsStarted; - */ - return (dataSocketsStarted & ret); + + if(ret != dataSocketsStarted) + return -1; + + return ret; } int multiSlsDetector::enableReceiverCompression(int i){ diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index b6850500f..230666be6 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -1319,7 +1319,15 @@ string slsDetectorCommand::cmdAcquire(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); - myDet->setReceiverOnline(ONLINE_FLAG); + if (myDet->setReceiverOnline(ONLINE_FLAG) == ONLINE_FLAG) { + //if it was not off + if (myDet->enableDataStreamingFromReceiver(-1) != 0){ + //switch it off, if error + if (myDet->enableDataStreamingFromReceiver(0) != 0) { + return string("could not disable data streaming in receiver\n"); + } + } + } if(myDet->acquire() == FAIL) return string("acquire unsuccessful"); @@ -4830,12 +4838,23 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); - myDet->setReceiverOnline(ONLINE_FLAG); + int receivers = myDet->setReceiverOnline(ONLINE_FLAG); if(cmd=="receiver"){ if (action==PUT_ACTION) { - if(!strcasecmp(args[1],"start")) + if(!strcasecmp(args[1],"start")) { + //to ensure data streaming enable is the same across client and receiver + if (receivers == ONLINE_FLAG) { + //if it was not off + if (myDet->enableDataStreamingFromReceiver(-1) != 0){ + //switch it off, if error + if (myDet->enableDataStreamingFromReceiver(0) != 0) { + return string("could not disable data streaming in receiver\n"); + } + } + } myDet->startReceiver(); + } else if(!strcasecmp(args[1],"stop")){ //myDet->stopReceiver(); // myDet->startReceiverReadout(); diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp index 2da38b73d..c47b43980 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp @@ -62,18 +62,6 @@ int slsDetectorUtils::acquire(int delflag){ bool receiver = (setReceiverOnline()==ONLINE_FLAG); if(!receiver){ setDetectorIndex(-1); - }else{ - //put receiver read frequency to random if no gui - int ret = setReadReceiverFrequency(0); - if(ret>0 && (dataReady == NULL)){ - ret = setReadReceiverFrequency(1,0); - std::cout << "No Data call back and hence receiver read frequency reset to " << ret <<" (Random)" << std::endl; - } - - //start/stop data streaming threads if threads in client enabled/disabled - ret = enableDataStreamingFromReceiver(-1); - // cout<<"getting datastream:"<