From 8f7872d056f214d79e41ce67e8c7d7eff5829823 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Mon, 12 Nov 2012 15:48:28 +0000 Subject: [PATCH] gotthard receiver works so far without cpu file write and tcp generic socket lock git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@337 951219d9-93cf-4727-9268-0efd64621fa3 --- .../MySocketTCP/genericSocket.h | 2 +- .../commonFiles/sls_detector_defs.h | 4 + .../commonFiles/sls_detector_funcs.h | 4 +- .../gotthardDetectorServer/server_funcs.c | 2 +- .../multiSlsDetector/multiSlsDetector.cpp | 51 ++++- .../multiSlsDetector/multiSlsDetector.h | 13 ++ .../slsDetector/slsDetector.cpp | 88 ++++++++- slsDetectorSoftware/slsDetector/slsDetector.h | 12 ++ .../slsDetector/slsDetectorBase.h | 5 + .../slsDetector/slsDetectorCommand.cpp | 11 -- .../slsDetector/slsDetectorUtils.cpp | 175 +++++++----------- .../slsDetector/slsDetectorUtils.h | 13 ++ .../slsDetectorAnalysis/fileIO.cpp | 56 +++--- .../slsDetectorAnalysis/postProcessing.cpp | 74 ++++---- .../slsDetectorAnalysis/postProcessing.h | 3 +- .../slsReceiver/slsReceiverFunctionList.c | 98 ++++++++-- .../slsReceiver/slsReceiverFunctionList.h | 6 +- .../slsReceiver/slsReceiver_funcs.c | 96 +++++++++- .../slsReceiver/slsReceiver_funcs.h | 3 + .../receiverInterface.cpp | 136 +------------- .../slsReceiverInterface/receiverInterface.h | 8 +- 21 files changed, 516 insertions(+), 344 deletions(-) diff --git a/slsDetectorSoftware/MySocketTCP/genericSocket.h b/slsDetectorSoftware/MySocketTCP/genericSocket.h index a80604469..b380cd181 100644 --- a/slsDetectorSoftware/MySocketTCP/genericSocket.h +++ b/slsDetectorSoftware/MySocketTCP/genericSocket.h @@ -340,7 +340,7 @@ enum communicationProtocol{ socketDescriptor=-1; } file_des=-1; - } + } }; diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index ead8467a5..27e0c848c 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -16,6 +16,8 @@ #define MAXMODS 24 /** maxmimum number of detectors ina multidetector structure*/ #define MAXDET 100 +/** header length for data :gotthard*/ +#define HEADERLENGTH 12 typedef double double32_t; typedef float float32_t; @@ -503,6 +505,8 @@ enum angleConversionParameter { SAMPLE_Y /**< sample displacement orthogonal to the beam */ }; + + //typedef struct { //float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */ //float ecenter; /**< error in the center determination */ diff --git a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h index 6d43e33c9..cbd7018e6 100644 --- a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h @@ -124,7 +124,9 @@ enum { F_LOCK_RECEIVER, /**< locks receiver */ - F_GET_FRAME_INDEX /**< gets the frame index */ + F_GET_FRAME_INDEX, /**< gets the frame index */ + + F_RESET_FRAMES_CAUGHT /**< resets the frames caught */ /* Always append functions hereafter!!! */ diff --git a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c index c41200b09..14ab9a7a0 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c @@ -1939,7 +1939,7 @@ int read_frame(int file_des) { return OK; } else { //might add delay???? - if(getFrames()>-2) {printf("in hereeee: frames:%d\n",getFrames()); + if(getFrames()>-2) { dataret=FAIL; sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+2)); printf("%s\n",mess); diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 19b2f5b67..927ac8c2c 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -123,7 +123,8 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1) strcpy(thisMultiDetector->fileName,"run"); /** set fileIndex to default to 0*/ thisMultiDetector->fileIndex=0; - + /** set frames per file to default to 1*/ + thisMultiDetector->framesPerFile=1; /** set progress Index to default to 0*/ thisMultiDetector->progressIndex=0; @@ -229,7 +230,7 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1) filePath=thisMultiDetector->filePath; fileName=thisMultiDetector->fileName; fileIndex=&thisMultiDetector->fileIndex; - + framesPerFile=&thisMultiDetector->framesPerFile; for (int i=0; inumberOfDetectors; i++) { @@ -3714,6 +3715,52 @@ int multiSlsDetector::getCurrentFrameIndex() { +int multiSlsDetector::resetFramesCaught(int index) { + int ret=-100, ret1; + for (int i=0; inumberOfDetectors; i++){ + if (detectors[i]){ + ret1=detectors[i]->resetFramesCaught(index); + if (ret==-100) + ret=ret1; + else if (ret!=ret1) + ret=-1; + } + } + + return ret; +} + + + +int* multiSlsDetector::readFrameFromReceiver(){ + int nel=(thisMultiDetector->dataBytes)/sizeof(int); + int n; + int* retval=new int[nel]; + int *retdet, *p=retval; + + for (int id=0; idnumberOfDetectors; id++) { + if (detectors[id]) { + retdet=detectors[id]->readFrameFromReceiver(); + if (retdet) { + n=detectors[id]->getDataBytes(); + memcpy(p,retdet,n); + delete [] retdet; + p+=n/sizeof(int); + }else { +#ifdef VERBOSE + cout << "Receiver for detector " << id << " does not have data left " << endl; +#endif + delete [] retval; + return NULL; + } + } + } + return retval; +}; + + + + int multiSlsDetector::lockReceiver(int lock) { int ret=-100, ret1; diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index f13293dfa..4df55efae 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -111,6 +111,8 @@ class multiSlsDetector : public slsDetectorUtils { char fileName[MAX_STR_LENGTH]; /** path of the output files */ char filePath[MAX_STR_LENGTH]; + /** max frames per file */ + int framesPerFile; /** corrections to be applied to the data \see ::correctionFlags */ int correctionMask; @@ -1084,6 +1086,17 @@ class multiSlsDetector : public slsDetectorUtils { */ int getCurrentFrameIndex(); + /** + * resets framescaught + * @param index frames caught by receiver + * @param index if frame index is needed + */ + int resetFramesCaught(int index=-1); + + /** + /returns a frame read from recever + */ + int* readFrameFromReceiver(); /** Locks/Unlocks the connection to the receiver /param lock sets (1), usets (0), gets (-1) the lock diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 740ce48c9..6f2d2ce81 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -442,7 +442,7 @@ slsDetectorDefs::detectorType slsDetector::getDetectorType(int id) { int slsDetector::initializeDetectorSize(detectorType type) { char *goff; goff=(char*)thisDetector; - + // cout << "init detector size" << endl; /** if the shared memory has newly be created, initialize the detector variables */ @@ -674,6 +674,9 @@ int slsDetector::initializeDetectorSize(detectorType type) { filePath=thisDetector->filePath; fileName=parentDet->fileName; fileIndex=parentDet->fileIndex; + framesPerFile=parentDet->framesPerFile; + if(thisDetector->myDetectorType==GOTTHARD) + setFramesPerFile(20000); thisReceiver = new receiverInterface(dataSocket); @@ -3946,7 +3949,7 @@ int slsDetector::executeTrimming(trimMode mode, int par1, int par2, int imod){ }; double* slsDetector::decodeData(int *datain, double *fdata) { - + double *dataout; if (fdata) dataout=fdata; @@ -5557,12 +5560,6 @@ int slsDetector::stopReceiver(){ ret=updateReceiver(); } - //increment file index - if(ret==OK){ - fileIO::setFileIndex(fileIO::getFileIndex()+1); - setFileIndex(fileIO::getFileIndex()); - } - return ret; } @@ -5665,6 +5662,81 @@ int slsDetector::getCurrentFrameIndex(){ + +int slsDetector::resetFramesCaught(int index){ + int fnum=F_RESET_FRAMES_CAUGHT; + int ret = FAIL; + int retval=-1; + int arg=index; + + if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) { +#ifdef VERBOSE + std::cout << "Reset Frames Caught by Receiver:" << arg << std::endl; +#endif + ret=thisReceiver->sendInt(fnum,retval,arg); + if(ret==FORCE_UPDATE) + ret=updateReceiver(); + } + + return ret; +} + + + + +int* slsDetector::readFrameFromReceiver(){ + int fnum=F_READ_FRAME; + int nel=(thisDetector->dataBytes+HEADERLENGTH)/sizeof(int);//2572/ + int* retval=new int[nel]; + int* origVal=new int[nel]; + int ret=FAIL; + int n; + char mess[100]="Nothing"; + + + if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) { +#ifdef VERBOSE + std::cout<< "slsDetector: Reading frame from receiver "<< thisDetector->dataBytes+HEADERLENGTH << " " <Connect()>=0) { + dataSocket->SendDataOnly(&fnum,sizeof(fnum)); + dataSocket->ReceiveDataOnly(&ret,sizeof(ret)); + + if (ret==FAIL) { + n= dataSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned: " << mess << " " << n << std::endl; + delete [] origVal; + delete [] retval; + return NULL; + } else { + n=dataSocket->ReceiveDataOnly(origVal,thisDetector->dataBytes+HEADERLENGTH); +#ifdef VERBOSE + std::cout<< "Received "<< n << " data bytes" << std::endl; +#endif + if (n!=thisDetector->dataBytes+HEADERLENGTH) { + std::cout<dataBytes+HEADERLENGTH << std::endl; + ret=FAIL; + delete [] origVal; + delete [] retval; + return NULL; + }//worked + else{ + memcpy(retval,((char*) origVal)+2, getDataBytes()/2); + memcpy((((char*)retval)+getDataBytes()/2), ((char*) origVal)+8+getDataBytes()/2, getDataBytes()/2); + } + } + dataSocket->Disconnect(); + } + } + } + delete [] origVal; + return retval;//(retval+HEADERLENGTH/sizeof(int)); +}; + + + + int slsDetector::lockReceiver(int lock){ int fnum=F_LOCK_RECEIVER; int ret = FAIL; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index d81ceb18e..c00a66e57 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1459,6 +1459,18 @@ class slsDetector : public slsDetectorUtils, public energyConversion { */ int getCurrentFrameIndex(); + /** + * resets framescaught + * @param index frames caught by receiver + * @param index if frame index is needed + */ + int resetFramesCaught(int index=-1); + + /** + /returns a frame read from recever + */ + int* readFrameFromReceiver(); + /** Locks/Unlocks the connection to the receiver /param lock sets (1), usets (0), gets (-1) the lock /returns lock status of the receiver diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index 0fd3233d8..48c99ab7a 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -462,6 +462,11 @@ class slsDetectorBase : public virtual slsDetectorDefs { virtual int lockReceiver(int lock=-1)=0; + /** + /returns a frame read from recever + */ + virtual int* readFrameFromReceiver()=0; + /** returns detector type string from detector type index \param t string can be Mythen, Pilatus, Eiger, Gotthard, Agipd, Unknown \returns MYTHEN, PILATUS, EIGER, GOTTHARD, AGIPD, GENERIC diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 01b28e88a..8e6aa8614 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -778,19 +778,8 @@ string slsDetectorCommand::cmdAcquire(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); - bool receiver=(myDet->setReceiverOnline()==ONLINE_FLAG); - - if(receiver) - if(myDet->startReceiver()==OK) - usleep(2000000); - else return string("could not start receiver"); - myDet->acquire(); - if(receiver) - myDet->stopReceiver(); - - return string(""); } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp index af2f80eaa..2b31ce330 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp @@ -41,6 +41,8 @@ slsDetectorUtils::slsDetectorUtils() { void slsDetectorUtils::acquire(int delflag){ + bool receiver = (setReceiverOnline()==ONLINE_FLAG); + // setTotalProgress(); //moved these 2 here for measurement change progressIndex=0; @@ -109,6 +111,25 @@ void slsDetectorUtils::acquire(int delflag){ ns1=1; } + if(receiver){ + if(getReceiverStatus()!=IDLE) + stopReceiver(); + if(setReceiverOnline()==OFFLINE_FLAG) + *stoppedFlag=1; + + + //resets frames caught in receiver + if ((timerValue[FRAME_NUMBER]*timerValue[CYCLES_NUMBER])>1) + resetFramesCaught(1); + else + resetFramesCaught(0); + + if(setReceiverOnline()==OFFLINE_FLAG) + *stoppedFlag=1; + else + setReceiverAcquiring(1); + } + if (*threadedProcessing) { startThread(delflag); @@ -178,7 +199,7 @@ void slsDetectorUtils::acquire(int delflag){ pthread_mutex_lock(&mp); - createFileName(); + createFileName(); pthread_mutex_unlock(&mp); if (*stoppedFlag==0) { @@ -192,9 +213,6 @@ void slsDetectorUtils::acquire(int delflag){ if (*stoppedFlag==0) { - - - executeAction(headerBefore); if (*correctionMask&(1<< ANGULAR_CONVERSION) || aclog || eclog) { @@ -202,27 +220,43 @@ void slsDetectorUtils::acquire(int delflag){ setCurrentPosition(getDetectorPosition()); } - + if (aclog) - aclog->addStep(getCurrentPosition(), getCurrentFileName()); - - + aclog->addStep(getCurrentPosition(), getCurrentFileName()); + if (eclog) - eclog->addStep(setDAC(-1,THRESHOLD), getCurrentFileName()); - + eclog->addStep(setDAC(-1,THRESHOLD), getCurrentFileName()); if (*correctionMask&(1<< I0_NORMALIZATION)) { if (get_i0) get_i0(0, IOarg); } - + if ((timerValue[FRAME_NUMBER]*timerValue[CYCLES_NUMBER])>1) { setFrameIndex(0); } else { setFrameIndex(-1); } + if(receiver){ + //send receiver file name + pthread_mutex_lock(&mp); + createFileName(); + pthread_mutex_unlock(&mp); + setFileName(fileIO::getFileName()); + if(setReceiverOnline()==OFFLINE_FLAG){ + stopReceiver(); + break; + } + //start receiver + startReceiver(); + if(setReceiverOnline()==OFFLINE_FLAG){ + stopReceiver(); + break; + } + } + startAndReadAll(); #ifdef VERBOSE cout << "returned! " << endl; @@ -244,18 +278,19 @@ void slsDetectorUtils::acquire(int delflag){ cout << "done! " << endl; #endif - + if (*threadedProcessing==0){ #ifdef VERBOSE cout << "start unthreaded process data " << endl; #endif + processData(delflag); } } else break; - + if(setReceiverOnline()==OFFLINE_FLAG){ // wait until data processing thread has finished the data #ifdef VERBOSE @@ -268,19 +303,27 @@ void slsDetectorUtils::acquire(int delflag){ usleep(100000); } - closeDataFile(); + if((*correctionMask)&(1<=0) - frameIndex=iframe; + cout <<"iframe " << iframe << endl; - if (*framesPerFile<2) - frameIndex=-1; + if (iframe<0) + iframe=frameIndex; + //if (iframe>=0) + // frameIndex=iframe; - if ((frameIndex%(*framesPerFile))==0 || (frameIndex<0)) { - createFileName(); - filefd = fopen(currentFileName.c_str(), "w"); - } - if (filefd){ - if (iframe%(*framesPerFile)) { - fileIOStatic::writeBinaryDataFile(filefd,getDataBytes() , data); - frameIndex++; - } - } - if ((frameIndex%(*framesPerFile)==0) || (frameIndex<0)) { - if (filefd) - fclose(filefd); - filefd=NULL; - } - + if ((*framesPerFile)<2) + iframe=-1; + //frameIndex=-1; + if ((iframe%(*framesPerFile))==0 || (iframe<0)) { + //if ((frameIndex%(*framesPerFile))==0 || (frameIndex<0)) { + createFileName(); + filefd = fopen((currentFileName+string(".raw")).c_str(), "w"); + } + if (filefd){ + //if (iframe%(*framesPerFile)) { + /*if(setDynamicRange(-1)==16){ + fileIOStatic::writeBinaryDataFile(filefd,getDataBytes()*2, data); + frameIndex+=2; + } + else{*/ + fileIOStatic::writeBinaryDataFile(filefd,getDataBytes(), data);cout<<"write frameIndex:"<=0)&&(getReceiverStatus()==RUNNING)){ +/* else if((index>=0)&&(getReceiverStatus()==RUNNING)){ strcpy(mess,"Can not set file index while receiver running\n"); ret = FAIL; } - else +*/ else retval=setFileIndex(index); } @@ -423,7 +425,7 @@ int get_frames_caught(int file_des) { /* execute action if the arguments correctly arrived*/ #ifdef SLS_RECEIVER_FUNCTION_LIST - retval=getFramesCaught(); + retval=getTotalFramesCaught(); #endif if(ret==OK && differentClients){ @@ -447,14 +449,14 @@ int get_frames_caught(int file_des) { -int get_frame_index(int file_des) { +int get_frame_index(int file_des) {printf("Getting frame Index\n");fflush(stdout); int ret=OK; int n=0; int retval=-1; /* execute action if the arguments correctly arrived*/ #ifdef SLS_RECEIVER_FUNCTION_LIST - retval=getFrameIndex(); + retval=getAcquisitionIndex(); #endif if(ret==OK && differentClients){ @@ -465,6 +467,55 @@ int get_frame_index(int file_des) { /* send answer */ n = sendDataOnly(file_des,&ret,sizeof(ret)); n = sendDataOnly(file_des,&retval,sizeof(retval)); + printf("returnrdf:%d\n",retval); + /*return ok/fail*/ + return ret; +} + + + + + + + +int reset_frames_caught(int file_des) { + int ret=OK; + int n=0; + int retval=-1; + int index=-1; + + strcpy(mess,"Could not reset frames caught\n"); + + + /* receive arguments */ + n = receiveDataOnly(file_des,&index,sizeof(index)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + /* execute action if the arguments correctly arrived*/ +#ifdef SLS_RECEIVER_FUNCTION_LIST + if (lockStatus==1 && differentClients==1){//necessary??? + sprintf(mess,"Receiver locked by %s\n", lastClientIP); + ret=FAIL; + } + else + retval=resetTotalFramesCaught(index); +#endif + } + + if(ret==OK && differentClients){ + printf("Force update\n"); + ret=FORCE_UPDATE; + } + + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if(ret==FAIL) + n = sendDataOnly(file_des,mess,sizeof(mess)); + n = sendDataOnly(file_des,&retval,sizeof(retval)); /*return ok/fail*/ return ret; } @@ -475,6 +526,37 @@ int get_frame_index(int file_des) { +int read_frame(int file_des) { + int ret=OK; + int n=0; + char* retval=NULL; + char buffer[1286*2]; + + strcpy(mess,"Could not read frame\n"); + + + /* execute action if the arguments correctly arrived*/ +#ifdef SLS_RECEIVER_FUNCTION_LIST + retval=readFrame(); +#endif + + + if(ret==OK && differentClients){ + printf("Force update\n"); + ret=FORCE_UPDATE; + } + if(getReceiverStatus==IDLE){ + ret=FAIL; +printf("*************STOPPPED***\n"); + } + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if(ret==FAIL) + n = sendDataOnly(file_des,mess,sizeof(mess)); + n = sendDataOnly(file_des,retval,sizeof(buffer)); + /*return ok/fail*/ + return ret; +} diff --git a/slsDetectorSoftware/slsReceiver/slsReceiver_funcs.h b/slsDetectorSoftware/slsReceiver/slsReceiver_funcs.h index b1f32ea1c..a5827640b 100644 --- a/slsDetectorSoftware/slsReceiver/slsReceiver_funcs.h +++ b/slsDetectorSoftware/slsReceiver/slsReceiver_funcs.h @@ -36,6 +36,9 @@ int stop_receiver(int); int get_receiver_status(int); int get_frames_caught(int); int get_frame_index(int); +int reset_frame_index(int); +int reset_frames_caught(int); +int read_frame(int); diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp index 9e9d41a77..6b9fcfa5a 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp @@ -118,141 +118,7 @@ int receiverInterface::executeFunction(int fnum){ } - - /* - set or read the acquisition timers - enum timerIndex { - FRAME_NUMBER, - ACQUISITION_TIME, - FRAME_PERIOD, - DELAY_AFTER_TRIGGER, - GATES_NUMBER, - PROBES_NUMBER - CYCLES_NUMBER, - GATE_INTEGRATED_TIME - } - */ - /* -int64_t receiverInterface::setTimer(timerIndex index, int64_t t){ - - - int fnum=F_SET_TIMER; - int64_t retval; - uint64_t ut; - char mess[100]; - int ret=OK; - int n=0; - - if (index!=MEASUREMENTS_NUMBER) { - - -#ifdef VERBOSE - std::cout<< "Setting timer "<< index << " to " << t << "ns" << std::endl; -#endif - ut=t; - if (thisDetector->onlineFlag==ONLINE_FLAG) { - if (controlSocket) { - if (controlSocket->Connect()>=0) { - controlSocket->SendDataOnly(&fnum,sizeof(fnum)); - controlSocket->SendDataOnly(&index,sizeof(index)); - n=controlSocket->SendDataOnly(&t,sizeof(t)); - controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); - if (ret==slsDetectorDefs::FAIL) { - controlSocket->ReceiveDataOnly(mess,sizeof(mess)); - std::cout<< "Detector returned error: " << mess << std::endl; - } else { - controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); - thisDetector->timerValue[index]=retval; - } - controlSocket->Disconnect(); - if (ret==FORCE_UPDATE) { - updateDetector(); -#ifdef VERBOSE - std::cout<< "Updated!" << std::endl; -#endif - - } - } - } - } else { - //std::cout<< "offline " << std::endl; - if (t>=0) - thisDetector->timerValue[index]=t; - } - } else { - if (t>=0) - thisDetector->timerValue[index]=t; - } -#ifdef VERBOSE - std::cout<< "Timer " << index << " set to "<< thisDetector->timerValue[index] << "ns" << std::endl; -#endif - if (index==PROBES_NUMBER) { - setDynamicRange(); - //cout << "Changing probes: data size = " << thisDetector->dataBytes <timerValue[index]; - -}; - - */ - - - - - - - /* - - - -int64_t receiverInterface::getTimeLeft(timerIndex index){ - - - int fnum=F_GET_TIME_LEFT; - int64_t retval; - char mess[100]; - int ret=OK; - -#ifdef VERBOSE - std::cout<< "Getting timer "<< index << std::endl; -#endif - if (thisDetector->onlineFlag==ONLINE_FLAG) { - if (stopSocket) { - if (stopSocket->Connect()>=0) { - stopSocket->SendDataOnly(&fnum,sizeof(fnum)); - stopSocket->SendDataOnly(&index,sizeof(index)); - stopSocket->ReceiveDataOnly(&ret,sizeof(ret)); - if (ret==slsDetectorDefs::FAIL) { - stopSocket->ReceiveDataOnly(mess,sizeof(mess)); - std::cout<< "Detector returned error: " << mess << std::endl; - } else { - stopSocket->ReceiveDataOnly(&retval,sizeof(retval)); - } - stopSocket->Disconnect(); - } - } - } -#ifdef VERBOSE - std::cout<< "Time left is "<< retval << std::endl; -#endif - return retval; - -}; - - - - - - +/* int receiverInterface::exitServer(){ diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h index ce9dc40c2..00ae988bc 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h @@ -53,7 +53,7 @@ public: /** - * Send a string to receiver + * Send an integer to receiver * @param fnum function enum to determine what parameter * @param retval return value * @param arg value to send @@ -63,7 +63,7 @@ public: /** - * Send a string to receiver + * Get an integer value from receiver * @param fnum function enum to determine what parameter * @param retval return value * \returns success of operation @@ -72,7 +72,7 @@ public: /** - * Send a string to receiver + * Get last client ip connected to receiver * @param fnum function enum to get last client up * @param retval return value * \returns success of operation @@ -81,7 +81,7 @@ public: /** - * Send a string to receiver + * Send a function number to execute function * @param fnum function enum to determine which function to execute * \returns success of operation */