From e4dcd1cb6b3ab88090f7d0c0fc46e0ed2f122822 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Mon, 7 Nov 2016 15:34:47 +0100 Subject: [PATCH] setting and getting printouts, changed the rx mess to 1000 --- .../jungfrauDetectorServer/firmware_funcs.c | 39 ++++++++++++------ .../jungfrauDetectorServerv2.2.0 | Bin 126220 -> 126920 bytes .../jungfrauDetectorServer/server_funcs.c | 36 +++++++++------- .../multiSlsDetector/multiSlsDetector.cpp | 4 +- .../slsDetector/slsDetector.cpp | 11 ++--- .../receiverInterface.cpp | 18 ++++---- .../slsReceiverInterface/receiverInterface.h | 3 +- 7 files changed, 66 insertions(+), 45 deletions(-) diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c index 0d34b10a9..46532b854 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c @@ -1177,7 +1177,10 @@ int64_t get64BitReg(int aLSB, int aMSB){ int64_t setFrames(int64_t value){ if(value!=-1) printf("\nSetting number of frames to %lld\n",(long long int)value); - return set64BitReg(value, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + + int64_t retval = set64BitReg(value, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); + printf("Getting number of frames: %lld\n",(long long int)retval); + return retval; } int64_t getFrames(){ @@ -1186,10 +1189,12 @@ int64_t getFrames(){ int64_t setExposureTime(int64_t value){ if (value!=-1){ - printf("\nSetting exptime to %lld\n",(long long int)value); + printf("\nSetting exptime to %lldns\n",(long long int)value); value*=(1E-3*clockdivider); } - return set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + int64_t retval = set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + printf("Getting exptime: %lldns\n",(long long int)retval); + return retval; } int64_t getExposureTime(){ @@ -1199,7 +1204,10 @@ int64_t getExposureTime(){ int64_t setGates(int64_t value){ if(value!=-1) printf("\nSetting number of gates to %lld\n",(long long int)value); - return set64BitReg(value, SET_GATES_LSB_REG, SET_GATES_MSB_REG); + + int64_t retval = set64BitReg(value, SET_GATES_LSB_REG, SET_GATES_MSB_REG); + printf("Getting number of gates: %lld\n",(long long int)retval); + return retval; } int64_t getGates(){ @@ -1208,11 +1216,13 @@ int64_t getGates(){ int64_t setPeriod(int64_t value){ if (value!=-1){ - printf("\nSetting period to %lld\n",(long long int)value); + printf("\nSetting period to %lldns\n",(long long int)value); value*=(1E-3*clockdivider); } - return set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + int64_t retval = set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + printf("Getting period: %lldns\n",(long long int)retval); + return retval; } int64_t getPeriod(){ @@ -1221,10 +1231,13 @@ int64_t getPeriod(){ int64_t setDelay(int64_t value){ if (value!=-1){ - printf("\nSetting delay to %lld\n",(long long int)value); + printf("\nSetting delay to %lldns\n",(long long int)value); value*=(1E-3*clockdivider); } - return set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + + int64_t retval = set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-3*clockdivider);//(1E-9*CLK_FREQ); + printf("Getting delay: %lldns\n",(long long int)retval); + return retval; } int64_t getDelay(){ @@ -1234,7 +1247,10 @@ int64_t getDelay(){ int64_t setTrains(int64_t value){ if(value!=-1) printf("\nSetting number of cycles to %lld\n",(long long int)value); - return set64BitReg(value, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + + int64_t retval = set64BitReg(value, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); + printf("Getting number of cycles: %lld\n",(long long int)retval); + return retval; } int64_t getTrains(){ @@ -1589,7 +1605,7 @@ int configureInterface(uint32_t destip,uint64_t destmac,uint64_t sourcemac,int //int configureMAC(int ipad,long long int macad,long long int detectormacad, int detipad, int ival, int udpport){ - volatile u_int32_t conf= bus_r(CONFIG_REG); + /*volatile u_int32_t conf= bus_r(CONFIG_REG);*/ long int checksum=calcChecksum(sourceip, destip); #ifdef NEW_GBE_INTERFACE @@ -1679,7 +1695,6 @@ int configureMAC(uint32_t destip,uint64_t destmac,uint64_t sourcemac,int source uint32_t sourceport = 0x7e9a; // 0xE185; int interface=0; int ngb; - volatile u_int32_t conf= bus_r(CONFIG_REG); #ifdef NEW_GBE_INTERFACE ngb=2; @@ -1760,7 +1775,7 @@ int startStateMachine(){ int stopStateMachine(){ //#ifdef VERBOSE - printf("*******Stopping State Machine*******\n"); + cprintf(BG_RED,"*******Stopping State Machine*******\n"); //#endif #ifdef SHAREDMEMORY write_stop_sm(1); diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerv2.2.0 b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerv2.2.0 index ab073fe9b623ebb9379530b8aece4ab1246d440e..57db3054e6f492b29e3f48afdb57951c8643872c 100755 GIT binary patch delta 53624 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 delta 52435 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 bsU|Jta@-TK`ulOQLzEqwLy8GQ4z>J$fSbi8 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c index 3403f901e..9eb31029a 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c @@ -1603,7 +1603,12 @@ int start_acquisition(int file_des) { if (differentClients==1 && lockStatus==1) { ret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); - } else { + } else if (setPeriod(-1)==0){ + ret=FAIL; + sprintf(mess,"Frame Period is 0. Set it to start acquisition\n"); + cprintf(RED,"%s",mess); + } + else { ret=startStateMachine(); } if (ret==FAIL) @@ -1754,7 +1759,7 @@ int get_run_status(int file_des) { } int read_frame(int file_des) { - + dataret=FAIL; if (differentClients==1 && lockStatus==1) { dataret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); @@ -1772,19 +1777,17 @@ int read_frame(int file_des) { if (getFrames()+1>0) { dataret=FAIL; sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+1)); + cprintf(RED,"%s\n",mess); } else { dataret=FINISHED; sprintf(mess,"acquisition successfully finished\n"); + printf("%s",mess); if (differentClients) dataret=FORCE_UPDATE; } #endif sendDataOnly(file_des,&dataret,sizeof(dataret)); sendDataOnly(file_des,mess,sizeof(mess)); - if(dataret == FAIL) - cprintf(RED,"%s\n",mess); - else - printf("%s",mess); return dataret; } @@ -1833,7 +1836,6 @@ int set_timer(int file_des) { int64_t retval; int ret=OK; - sprintf(mess,"can't set timer\n"); n = receiveDataOnly(file_des,&ind,sizeof(ind)); @@ -1891,16 +1893,19 @@ int set_timer(int file_des) { } } } - if (ret!=OK) { - printf(mess); - if (differentClients) - ret=FORCE_UPDATE; + + if(ret == OK && (retval!=tns) && (tns != -1)){ + ret = FAIL; + sprintf(mess,"Setting timer %d of failed: wrote %lld but read %lld\n", ind, (long long int)tns, (long long int)retval); + cprintf(RED,"%s",mess); + }else if (ret!=OK) { + cprintf(RED,"%s",mess); + cprintf(RED,"set timer failed\n"); } - if (ret!=OK) { - printf(mess); - printf("set timer failed\n"); - } + if (ret==OK && differentClients) + ret=FORCE_UPDATE; + n = sendDataOnly(file_des,&ret,sizeof(ret)); if (ret==FAIL) { @@ -2024,7 +2029,6 @@ int set_dynamic_range(int file_des) { int retval; int ret=OK; - printf("Set dynamic range\n"); sprintf(mess,"can't set dynamic range\n"); diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index dea773460..6a69c9b5a 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1350,7 +1350,6 @@ int multiSlsDetector::startAcquisition(){ int multiSlsDetector::stopAcquisition(){ - int i=0; int ret=OK, ret1=OK; @@ -1447,7 +1446,8 @@ int* multiSlsDetector::getDataFromDetector() { } //eiger returns only null - if(getDetectorsType() == EIGER) + detectorType types = getDetectorsType(); + if(types == EIGER || types == JUNGFRAU) return NULL; if (nodatadet>=0) { diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 6d0652588..71a3a8eb6 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -3640,7 +3640,6 @@ int slsDetector::startAcquisition(){ }; int slsDetector::stopAcquisition(){ - int fnum=F_STOP_ACQUISITION; int ret=FAIL; char mess[MAX_STR_LENGTH]=""; @@ -4088,20 +4087,22 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t){ args[1] = timerValue[ACQUISITION_TIME]; } - + char mess[MAX_STR_LENGTH]=""; if (connectData() == OK) - ret=thisReceiver->sendIntArray(fnum2,retval,args); + ret=thisReceiver->sendIntArray(fnum2,retval,args,mess); disconnectData(); if((args[1] != retval)|| (ret==FAIL)){ ret = FAIL; if(index==FRAME_PERIOD){ //exptime sent if acq period = 0 if(retval){ - cout << "ERROR:Acquisition Period in receiver set incorrectly to " << retval << " instead of " << args[1] << endl; + if(strstr(mess,"receiver not idle")==NULL) + cout << "ERROR:Acquisition Period in receiver set incorrectly to " << retval << " instead of " << args[1] << endl; setErrorMask((getErrorMask())|(RECEIVER_ACQ_PERIOD_NOT_SET)); } }else{ - cout << "ERROR:Number of Frames (* Number of cycles) in receiver set incorrectly to " << retval << " instead of " << args[1] << endl; + if(strstr(mess,"receiver not idle")==NULL) + cout << "ERROR:Number of Frames (* Number of cycles) in receiver set incorrectly to " << retval << " instead of " << args[1] << endl; setErrorMask((getErrorMask())|(RECEIVER_FRAME_NUM_NOT_SET)); } } diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp index 463d51a71..c3771e7e0 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp @@ -23,7 +23,7 @@ receiverInterface::~receiverInterface(){ int receiverInterface::sendString(int fnum, char retval[], char arg[]){ int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(arg,MAX_STR_LENGTH); @@ -42,7 +42,7 @@ int receiverInterface::sendString(int fnum, char retval[], char arg[]){ int receiverInterface::sendUDPDetails(int fnum, char retval[], char arg[3][MAX_STR_LENGTH]){ char args[3][MAX_STR_LENGTH]; int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(arg,sizeof(args)); @@ -60,7 +60,7 @@ int receiverInterface::sendUDPDetails(int fnum, char retval[], char arg[3][MAX_S int receiverInterface::sendInt(int fnum, int &retval, int arg){ int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(&arg,sizeof(arg)); @@ -78,7 +78,7 @@ int receiverInterface::sendInt(int fnum, int &retval, int arg){ int receiverInterface::getInt(int fnum, int &retval){ int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->ReceiveDataOnly(&ret,sizeof(ret)); @@ -95,7 +95,7 @@ int receiverInterface::getInt(int fnum, int &retval){ int receiverInterface::sendInt(int fnum, int64_t &retval, int64_t arg){ int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(&arg,sizeof(arg)); @@ -111,15 +111,15 @@ int receiverInterface::sendInt(int fnum, int64_t &retval, int64_t arg){ -int receiverInterface::sendIntArray(int fnum, int64_t &retval, int64_t arg[2]){ +int receiverInterface::sendIntArray(int fnum, int64_t &retval, int64_t arg[2], char mess[]){ int64_t args[2]; + char messs[MAX_STR_LENGTH]; int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(arg,sizeof(args)); dataSocket->ReceiveDataOnly(&ret,sizeof(ret)); if (ret==slsDetectorDefs::FAIL){ - dataSocket->ReceiveDataOnly(mess,sizeof(mess)); + dataSocket->ReceiveDataOnly(mess,sizeof(messs)); std::cout<< "Receiver returned error: " << mess << std::endl; } dataSocket->ReceiveDataOnly(&retval,sizeof(retval)); @@ -132,7 +132,7 @@ int receiverInterface::sendIntArray(int fnum, int64_t &retval, int64_t arg[2]){ int receiverInterface::sendIntArray(int fnum, int &retval, int arg[2]){ int args[2]; int ret = slsDetectorDefs::FAIL; - char mess[100] = ""; + char mess[MAX_STR_LENGTH] = ""; dataSocket->SendDataOnly(&fnum,sizeof(fnum)); dataSocket->SendDataOnly(arg,sizeof(args)); dataSocket->ReceiveDataOnly(&ret,sizeof(ret)); diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h index 11e433a08..0f221f171 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h @@ -91,9 +91,10 @@ public: * @param fnum function enum to determine what parameter * @param retval return value * @param arg values to send + * @param mess message returned * \returns success of operation */ - int sendIntArray(int fnum, int64_t &retval, int64_t arg[2]); + int sendIntArray(int fnum, int64_t &retval, int64_t arg[2],char mess[]); /**