From 56aaaaf1827339e0a5e55631aa9897101d3a9a4a Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 8 Aug 2016 15:52:09 +0200 Subject: [PATCH] fixed rate correction to not include 16 bit dr --- slsDetectorSoftware/commonFiles/error_defs.h | 9 ++ ....3.14.6 => eigerDetectorServerv2.0.3.14.7} | Bin 277374 -> 277374 bytes .../gotthardDetectorServer/server_funcs.c | 2 +- .../jungfrauDetectorServer/server_funcs.c | 2 +- .../moenchDetectorServer/server_funcs.c | 2 +- .../mythenDetectorServer/server_funcs.c | 2 +- .../slsDetector/slsDetector.cpp | 145 ++++++++++-------- .../slsDetectorServer_funcs.c | 47 ++++-- 8 files changed, 129 insertions(+), 80 deletions(-) rename slsDetectorSoftware/eigerDetectorServer/bin/{eigerDetectorServerv2.0.3.14.6 => eigerDetectorServerv2.0.3.14.7} (72%) diff --git a/slsDetectorSoftware/commonFiles/error_defs.h b/slsDetectorSoftware/commonFiles/error_defs.h index 8bdce3f6e..7bfe093ed 100644 --- a/slsDetectorSoftware/commonFiles/error_defs.h +++ b/slsDetectorSoftware/commonFiles/error_defs.h @@ -59,6 +59,8 @@ using namespace std; #define COULD_NOT_PULSE_CHIP 0x0000000000100000ULL #define COULD_NOT_SET_RATE_CORRECTION 0x0000000000200000ULL #define DETECTOR_NETWORK_PARAMETER 0x0000000000400000ULL +#define RATE_CORRECTION_NOT_32BIT 0x0000000000800000ULL +#define RATE_CORRECTION_NO_TAU_PROVIDED 0x0000000000010000ULL // 0x00000000FFFFFFFFULL /** @short class returning all error messages for error mask */ @@ -190,6 +192,13 @@ public: if(slsErrorMask&DETECTOR_NETWORK_PARAMETER) retval.append("Could not set/get detector network parameter\n"); + if(slsErrorMask&RATE_CORRECTION_NOT_32BIT) + retval.append("Rate correction Deactivated, must be in 32 bit mode\n"); + + if(slsErrorMask&RATE_CORRECTION_NO_TAU_PROVIDED) + retval.append("Rate correction Deactivated. No default tau provided in file\n"); + + diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.0.3.14.6 b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.0.3.14.7 similarity index 72% rename from slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.0.3.14.6 rename to slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.0.3.14.7 index 360ecd50efe728385ebb8ba17fe9af246bba3850..b9b7cebb8a95d1e6ca063b8cb2e32d99afbbf564 100755 GIT binary patch delta 27678 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 delta 27635 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 { std::cout<< "Get max number of modules in wrong dimension " << d << std::endl; @@ -1808,7 +1808,7 @@ slsDetectorDefs::externalSignalFlag slsDetector::setExternalSignalFlags(external externalSignalFlag retval; int ret=FAIL; int fnum=F_SET_EXTERNAL_SIGNAL_FLAG; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; arg[0]=signalindex; arg[1]=pol; @@ -1878,7 +1878,7 @@ slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunication int arg[1]; externalCommunicationMode retval; int fnum=F_SET_EXTERNAL_COMMUNICATION_MODE; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; arg[0]=pol; @@ -1943,7 +1943,7 @@ int64_t slsDetector::getId( idMode mode, int imod){ int64_t retval=-1; int fnum=F_GET_ID,fnum2 = F_GET_RECEIVER_ID; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< std::endl; @@ -2022,7 +2022,7 @@ int slsDetector::digitalTest( digitalTestMode mode, int imod){ int retval; int fnum=F_DIGITAL_TEST; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< std::endl; @@ -2111,7 +2111,7 @@ int slsDetector::writeRegister(int addr, int val){ int fnum=F_WRITE_REGISTER; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg[2]; arg[0]=addr; @@ -2156,7 +2156,7 @@ int slsDetector::writeAdcRegister(int addr, int val){ int fnum=F_WRITE_ADC_REG; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg[2]; arg[0]=addr; @@ -2203,7 +2203,7 @@ int slsDetector::readRegister(int addr){ int fnum=F_READ_REGISTER; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg; arg=addr; @@ -2266,7 +2266,7 @@ dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int mV, int imod){ retval[1] = -1; int fnum=F_SET_DAC; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg[3]; @@ -2330,7 +2330,7 @@ dacs_t slsDetector::getADC(dacIndex index, int imod){ dacs_t retval; int fnum=F_GET_ADC; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg[2]; arg[0]=index; @@ -2429,7 +2429,7 @@ int slsDetector::setChannel(sls_detector_channel chan){ int fnum=F_SET_CHANNEL; int retval; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ichan=chan.chan; int ichip=chan.chip; @@ -2522,7 +2522,7 @@ slsDetectorDefs::sls_detector_channel slsDetector::getChannel(int ichan, int ic sls_detector_channel myChan; int arg[3]; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; arg[0]=ichan; arg[1]=ichip; arg[2]=imod; @@ -2609,7 +2609,7 @@ int slsDetector::setChip(sls_detector_chip chip){ int fnum=F_SET_CHIP; int retval; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ichi=chip.chip; int im=chip.module; @@ -2655,7 +2655,7 @@ slsDetectorDefs::sls_detector_chip slsDetector::getChip(int ichip, int imod){ int chanreg[thisDetector->nChans]; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; myChip.chip=ichip; @@ -2798,7 +2798,7 @@ int slsDetector::setModule(sls_detector_module module, int* gainval, int* offset int fnum=F_SET_MODULE; int retval; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int imod=module.module; @@ -2828,6 +2828,8 @@ int slsDetector::setModule(sls_detector_module module, int* gainval, int* offset else { controlSocket->ReceiveDataOnly(mess,sizeof(mess)); std::cout<< "Detector returned error: " << mess << std::endl; + if(strstr(mess,"default tau")!=NULL) + setErrorMask((getErrorMask())|(RATE_CORRECTION_NO_TAU_PROVIDED)); } disconnectControl(); if (ret==FORCE_UPDATE) @@ -2922,7 +2924,7 @@ slsDetectorDefs::sls_detector_module *slsDetector::getModule(int imod){ //double dac[thisDetector->nDacs], adc[thisDetector->nAdcs]; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; // int n; #ifdef VERBOSE @@ -3059,7 +3061,7 @@ int slsDetector::getThresholdEnergy(int imod){ int fnum= F_GET_THRESHOLD_ENERGY; int retval; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< "Getting threshold energy "<< std::endl; #endif @@ -3090,7 +3092,7 @@ int slsDetector::setThresholdEnergy(int e_eV, int imod, detectorSettings isetti int fnum= F_SET_THRESHOLD_ENERGY; int retval; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< "Setting threshold energy "<< std::endl; #endif @@ -3130,7 +3132,7 @@ slsDetectorDefs::detectorSettings slsDetector::getSettings(int imod){ int fnum=F_SET_SETTINGS; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int retval; int arg[2]; arg[0]=GET_SETTINGS; @@ -3547,7 +3549,7 @@ int slsDetector::updateDetectorNoWait() { int slsDetector::updateDetector() { int fnum=F_UPDATE_CLIENT; int ret=OK; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; if (thisDetector->onlineFlag==ONLINE_FLAG) { if (connectControl() == OK){ @@ -3574,7 +3576,7 @@ int slsDetector::startAcquisition(){ int fnum=F_START_ACQUISITION; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< "Starting acquisition "<< std::endl; @@ -3603,7 +3605,7 @@ int slsDetector::stopAcquisition(){ int fnum=F_STOP_ACQUISITION; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< "Stopping acquisition "<< std::endl; @@ -3631,7 +3633,7 @@ int slsDetector::startReadOut(){ int fnum=F_START_READOUT; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< "Starting readout "<< std::endl; @@ -3656,7 +3658,7 @@ int slsDetector::startReadOut(){ slsDetectorDefs::runStatus slsDetector::getRunStatus(){ int fnum=F_GET_RUN_STATUS; int ret=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; strcpy(mess,"aaaaa"); runStatus retval=ERROR; //#ifdef VERBOSE @@ -3724,7 +3726,7 @@ int* slsDetector::getDataFromDetector(int *retval){ retval=new int[nel]; int ret=FAIL; - char mess[100]="Nothing"; + char mess[MAX_STR_LENGTH]="Nothing"; #ifdef VERBOSE std::cout<< "getting data "<< thisDetector->dataBytes << " " << nel<< std::endl; @@ -3939,7 +3941,7 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t){ int fnum=F_SET_TIMER,fnum2=F_SET_RECEIVER_TIMER; int64_t retval = -1; int64_t ut = -2; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; int n=0; @@ -4059,7 +4061,7 @@ int slsDetector::lockServer(int lock) { int fnum=F_LOCK_SERVER; int retval=-1; int ret=OK; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; if (thisDetector->onlineFlag==ONLINE_FLAG) { if (connectControl() == OK){ @@ -4088,7 +4090,7 @@ string slsDetector::getLastClientIP() { int fnum=F_GET_LAST_CLIENT_IP; char clientName[INET_ADDRSTRLEN]; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; if (thisDetector->onlineFlag==ONLINE_FLAG) { @@ -4117,7 +4119,7 @@ int slsDetector::setPort(portType index, int num){ int fnum=F_SET_PORT, fnum2 = F_SET_RECEIVER_PORT; int retval; // uint64_t ut; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=FAIL; bool online=false; MySocketTCP *s; @@ -4406,7 +4408,7 @@ int slsDetector::setSpeed(speedVariable sp, int value) { int fnum=F_SET_SPEED; int retval=-1; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; int n=0; #ifdef VERBOSE @@ -4448,7 +4450,7 @@ int64_t slsDetector::getTimeLeft(timerIndex index){ int fnum=F_GET_TIME_LEFT; int64_t retval; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; #ifdef VERBOSE @@ -4484,8 +4486,8 @@ int slsDetector::setDynamicRange(int n){ // cout << "single " << endl; int fnum=F_SET_DYNAMIC_RANGE,fnum2=F_SET_RECEIVER_DYNAMIC_RANGE; int retval=-1,retval1; - char mess[100]; - int ret=OK; + char mess[MAX_STR_LENGTH]=""; + int ret=OK, rateret=OK; #ifdef VERBOSE std::cout<< "Setting dynamic range to "<< n << std::endl; @@ -4499,6 +4501,16 @@ int slsDetector::setDynamicRange(int n){ if (connectControl() == OK){ controlSocket->SendDataOnly(&fnum,sizeof(fnum)); controlSocket->SendDataOnly(&n,sizeof(n)); + //rate correction is switched off if not 32 bit mode + if(thisDetector->myDetectorType == EIGER){ + controlSocket->ReceiveDataOnly(&rateret,sizeof(rateret)); + if (rateret==FAIL) { + controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned error: " << mess << std::endl; + if(strstr(mess,"Rate Correction")!=NULL) + setErrorMask((getErrorMask())|(RATE_CORRECTION_NOT_32BIT)); + } + } controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); if (ret==FAIL) { controlSocket->ReceiveDataOnly(mess,sizeof(mess)); @@ -4605,7 +4617,7 @@ slsDetectorDefs::ROI* slsDetector::getROI(int &n){ int slsDetector::sendROI(int n,ROI roiLimits[]){ int ret=FAIL; int fnum=F_SET_ROI; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int arg = n; int retvalsize=0; ROI retval[MAX_ROIS]; @@ -4679,7 +4691,7 @@ int slsDetector::setReadOutFlags(readOutFlags flag){ int fnum=F_SET_READOUT_FLAGS; readOutFlags retval; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; #ifdef VERBOSE @@ -4728,7 +4740,7 @@ int slsDetector::executeTrimming(trimMode mode, int par1, int par2, int imod){ int fnum= F_EXECUTE_TRIMMING; int retval=FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; int arg[3]; arg[0]=imod; @@ -5051,7 +5063,7 @@ int slsDetector::setRateCorrection(double t){ if (getDetectorsType() == EIGER){ int fnum=F_SET_RATE_CORRECT; int ret=FAIL; - char mess[1000]=""; + char mess[MAX_STR_LENGTH]=""; int64_t arg = t; int64_t retval = -1; #ifdef VERBOSE @@ -5065,7 +5077,12 @@ int slsDetector::setRateCorrection(double t){ if (ret==FAIL) { controlSocket->ReceiveDataOnly(mess,sizeof(mess)); std::cout<< "Detector returned error: " << mess << std::endl; - setErrorMask((getErrorMask())|(COULD_NOT_SET_RATE_CORRECTION)); + if(strstr(mess,"default tau")!=NULL) + setErrorMask((getErrorMask())|(RATE_CORRECTION_NO_TAU_PROVIDED)); + if(strstr(mess,"32")!=NULL) + setErrorMask((getErrorMask())|(RATE_CORRECTION_NOT_32BIT)); + else + setErrorMask((getErrorMask())|(COULD_NOT_SET_RATE_CORRECTION)); } disconnectControl(); if (ret==FORCE_UPDATE) @@ -5129,7 +5146,7 @@ double slsDetector::getRateCorrectionTau(){ if(thisDetector->myDetectorType == EIGER){ int fnum=F_GET_RATE_CORRECT; int ret=FAIL; - char mess[1000]=""; + char mess[MAX_STR_LENGTH]=""; int64_t retval = -1; #ifdef VERBOSE std::cout<< "Setting Rate Correction to " << arg << endl; @@ -5708,7 +5725,7 @@ int slsDetector::configureMAC(){ int i; int ret=FAIL; int fnum=F_CONFIGURE_MAC,fnum2=F_RECEIVER_SHORT_FRAME; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; char arg[6][50]; char cword[50]="", *pcword; string sword; @@ -5942,7 +5959,7 @@ int slsDetector::sendImageToDetector(imageType index,short int imageVals[]){ int ret=FAIL; int retval; int fnum=F_LOAD_IMAGE; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<<"Sending image to detector " <onlineFlag==ONLINE_FLAG) { if (connectControl() == OK){ @@ -6019,7 +6036,7 @@ int slsDetector::resetCounterBlock(int startACQ){ int ret=FAIL; int fnum=F_RESET_COUNTER_BLOCK; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<< std::endl<< "Resetting Counter"; @@ -6052,7 +6069,7 @@ int slsDetector::setCounterBit(int i){ int fnum=F_SET_COUNTER_BIT; int ret = FAIL; int retval=-1; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; if(thisDetector->onlineFlag==ONLINE_FLAG){ #ifdef VERBOSE @@ -6435,7 +6452,7 @@ int slsDetector::saveSettingsFile(string fname, int imod) { int slsDetector::setAllTrimbits(int val, int imod){ int fnum=F_SET_ALL_TRIMBITS; int retval; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; #ifdef VERBOSE @@ -6575,7 +6592,7 @@ slsDetectorDefs::masterFlags slsDetector::setMaster(masterFlags flag) { int fnum=F_SET_MASTER; masterFlags retval=GET_MASTER; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; #ifdef VERBOSE @@ -6619,7 +6636,7 @@ slsDetectorDefs::synchronizationMode slsDetector::setSynchronization(synchroniza int fnum=F_SET_SYNCHRONIZATION_MODE; synchronizationMode retval=GET_SYNCHRONIZATION_MODE; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; int ret=OK; #ifdef VERBOSE @@ -6946,7 +6963,7 @@ int slsDetector::startReceiver(){ int slsDetector::stopReceiver(){ int fnum=F_STOP_RECEIVER; int ret = FAIL; - char mess[] = ""; + char mess[MAX_STR_LENGTH] = ""; if(thisDetector->myDetectorType != EIGER && thisDetector->myDetectorType != JUNGFRAU) detectorSendToReceiver(false); @@ -6998,7 +7015,7 @@ int slsDetector::detectorSendToReceiver(bool set){ if(set) fnum=F_START_RECEIVER; else fnum=F_STOP_RECEIVER; int ret = FAIL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; if (thisDetector->onlineFlag==ONLINE_FLAG) { #ifdef VERBOSE @@ -7098,7 +7115,7 @@ int slsDetector::getReceiverCurrentFrameIndex(){ int slsDetector::resetFramesCaught(){ int fnum=F_RESET_RECEIVER_FRAMES_CAUGHT; int ret = FAIL; - char mess[] = ""; + char mess[MAX_STR_LENGTH] = ""; if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) { #ifdef VERBOSE @@ -7124,7 +7141,7 @@ int* slsDetector::readFrameFromReceiver(char* fName, int &acquisitionIndex, int int* retval=new int[nel]; int ret=FAIL; int n; - char mess[100]="Nothing"; + char mess[MAX_STR_LENGTH]="Nothing"; if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) { #ifdef VERBOSE @@ -7257,7 +7274,7 @@ int slsDetector::updateReceiverNoWait() { int slsDetector::updateReceiver() { int fnum=F_UPDATE_RECEIVER_CLIENT; int ret=OK; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; if (setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG) { if (connectData() == OK){ @@ -7420,7 +7437,7 @@ int slsDetector::calibratePedestal(int frames){ int ret=FAIL; int retval=-1; int fnum=F_CALIBRATE_PEDESTAL; - char mess[100]; + char mess[MAX_STR_LENGTH]=""; #ifdef VERBOSE std::cout<<"Calibrating Pedestal " <=0 && retval!=dr) + ret=FAIL; + //look at rate correction only if dr change worked + if((ret==OK) && (dr!=32) && (dr!=-1) && (getRateCorrectionEnable())){ + setRateCorrection(0); + strcpy(mess,"Switching off Rate Correction. Must be in 32 bit mode\n"); + cprintf(RED,"%s",mess); + rateret = FAIL; + } + } #endif if (dr>=0 && retval!=dr) ret=FAIL; - if (ret!=OK) { - sprintf(mess,"set dynamic range failed\n"); - } else if (differentClients) + if ((ret==OK) && (differentClients)) ret=FORCE_UPDATE; #ifdef SLS_DETECTOR_FUNCTION_LIST if (dr>=0) dataBytes=calculateDataBytes(); #endif + //rate correction ret + //ret could be swapped during sendData + rateret1 = rateret; + n = sendData(file_des,&rateret1,sizeof(rateret),INT32); + if (rateret==FAIL) + n = sendData(file_des,mess,sizeof(mess),OTHER); + + //dynamic range ret //ret could be swapped during sendData ret1 = ret; n = sendData(file_des,&ret1,sizeof(ret),INT32); - if (ret==FAIL) { + if (ret==FAIL) n = sendData(file_des,mess,sizeof(mess),OTHER); - } else { + else n = sendData(file_des,&retval,sizeof(retval),INT32); - } return ret; } @@ -3960,13 +3976,20 @@ int set_rate_correct(int file_des) { //set rate else{ - int64_t retval = setRateCorrection(tau_ns); //tau_ns will not be -1 here - if(tau_ns != retval){ - if(retval == -1) - strcpy(mess,"Rate correction Deactivated, (tau/subexptime) must be < 0.0015\n"); + //not 32 bit mode + if((setDynamicRange(-1)!=32) && (tau_ns!=0)){ + strcpy(mess,"Rate correction Deactivated, must be in 32 bit mode\n"); cprintf(RED,"%s",mess); ret=FAIL; } + //32 bit mode + else{ + int64_t retval = setRateCorrection(tau_ns); //tau_ns will not be -1 here + if(tau_ns != retval){ + cprintf(RED,"%s",mess); + ret=FAIL; + } + } } } }