From a99222cc0249976be270d96506ecab94033d852b Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Mon, 17 Dec 2012 08:16:29 +0000 Subject: [PATCH] included enable write to file in receiver, changed the enablewritetofie function in postprocessing to be modified by slsDetector git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@387 951219d9-93cf-4727-9268-0efd64621fa3 --- .../commonFiles/sls_detector_funcs.h | 4 ++- slsDetectorSoftware/commonFiles/svnInfo.h | 1 - .../multiSlsDetector/multiSlsDetector.cpp | 14 +++++++++ .../multiSlsDetector/multiSlsDetector.h | 9 ++++++ .../slsDetector/slsDetector.cpp | 31 ++++++++++++++++++- slsDetectorSoftware/slsDetector/slsDetector.h | 7 +++++ .../slsDetector/slsDetectorCommand.cpp | 2 +- .../slsDetector/slsDetectorUtils.h | 8 +++++ .../slsDetectorAnalysis/postProcessing.h | 2 +- 9 files changed, 73 insertions(+), 5 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h index 38ab94f0d..d5cbb83c2 100644 --- a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h @@ -126,7 +126,9 @@ enum { F_RESET_FRAMES_CAUGHT, /**< resets the frames caught */ - F_SETUP_UDP /**< sets the receiver udp connection and returns receiver mac address */ + F_SETUP_UDP, /**< sets the receiver udp connection and returns receiver mac address */ + + F_ENABLE_FILE_WRITE /**< sets the receiver file write */ /* Always append functions hereafter!!! */ diff --git a/slsDetectorSoftware/commonFiles/svnInfo.h b/slsDetectorSoftware/commonFiles/svnInfo.h index 1b9a07461..c98ee7312 100644 --- a/slsDetectorSoftware/commonFiles/svnInfo.h +++ b/slsDetectorSoftware/commonFiles/svnInfo.h @@ -20,7 +20,6 @@ public: char fName[100]; strcpy(fName,path.c_str()); strcat(fName,"/svnInfo.txt"); - cout<<"filepath:"<numberOfDetectors; idet++) { + if (detectors[idet]) { + ret1=detectors[idet]->enableWriteToFile(enable); + if (ret==-100) + ret=ret1; + else if (ret!=ret1) + ret=-1; + } + } + + return ret; +} diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index 2137c2ac4..111622df0 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -1117,6 +1117,15 @@ class multiSlsDetector : public slsDetectorUtils { */ int exitReceiver(); + /** + Sets/Gets receiver file write enable + @param enable 1 or 0 to set/reset file write enable + /returns file write enable + */ + int enableWriteToFile(int enable=-1); + + + int fillModuleMask(int *mM); protected: diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 849f39f31..83de1942f 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -4534,6 +4534,7 @@ char* slsDetector::setReceiver(string receiverIP){ setFilePath(fileIO::getFilePath()); setFileName(fileIO::getFileName()); setFileIndex(fileIO::getFileIndex()); + enableWriteToFile(parentDet->enableWriteToFileMask()); setUDPConnection(); }else std::cout << "cannot connect to receiver" << endl; @@ -5955,6 +5956,34 @@ int slsDetector::exitReceiver(){ } return retval; -}; +} + + + +int slsDetector::enableWriteToFile(int enable){ + int fnum=F_ENABLE_FILE_WRITE; + int ret = FAIL; + int retval=-1; + int arg = enable; + + + if(thisDetector->receiverOnlineFlag==OFFLINE_FLAG){ + if(enable>=0) + parentDet->enableWriteToFileMask(enable); + } + + else if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){ +#ifdef VERBOSE + std::cout << "Sending enable file write to receiver " << arg << std::endl; +#endif + ret=thisReceiver->sendInt(fnum,retval,arg); + if(ret!=FAIL) + parentDet->enableWriteToFileMask(retval); + if(ret==FORCE_UPDATE) + updateReceiver(); + } + + return parentDet->enableWriteToFileMask(); +} diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 36d8699e1..c9d160f2e 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1506,6 +1506,13 @@ class slsDetector : public slsDetectorUtils, public energyConversion { */ int exitReceiver(); + /** + Sets/Gets receiver file write enable + @param enable 1 or 0 to set/reset file write enable + /returns file write enable + */ + int enableWriteToFile(int enable=-1); + int fillModuleMask(int *mM); protected: diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index bdafdcf61..fded22afc 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -1413,7 +1413,7 @@ string slsDetectorCommand::cmdEnablefwrite(int narg, char *args[], int action){ myDet->enableWriteToFile(i); else return string("could not decode enable file write"); - + } sprintf(ans,"%d",myDet->enableWriteToFile()); diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index 3a592b1ff..d782857d0 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -643,6 +643,14 @@ virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0; */ virtual int exitReceiver()=0; +/** + Sets/Gets receiver file write enable + @param enable 1 or 0 to set/reset file write enable + /returns file write enable +*/ +virtual int enableWriteToFile(int enable=-1)=0; + + protected: diff --git a/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.h b/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.h index ae15fb2c3..37b93b55b 100644 --- a/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.h +++ b/slsDetectorSoftware/slsDetectorAnalysis/postProcessing.h @@ -100,7 +100,7 @@ class postProcessing : public angularConversion, public fileIO, public badChanne - int enableWriteToFile(int i=-1) {if (i>0) ((*correctionMask)|=(1<>WRITE_FILE) ;}; + int enableWriteToFileMask(int i=-1) {if (i>0) ((*correctionMask)|=(1<>WRITE_FILE) ;}; int setAngularCorrectionMask(int i=-1){if (i==0) (*correctionMask)&=~(1<< ANGULAR_CONVERSION); if (i>0) (*correctionMask)|=(1<< ANGULAR_CONVERSION); return (((*correctionMask)&(1<< ANGULAR_CONVERSION))>>ANGULAR_CONVERSION);};