From cae286941a70a3a9f60d408c9dd2b4a53455f5ab Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 3 Sep 2015 15:16:48 +0200 Subject: [PATCH] added subframe exposure time settable --- .../commonFiles/sls_detector_defs.h | 5 + slsDetectorSoftware/eigerDetectorServer/Beb.c | 6 +- .../eigerDetectorServer/FebControl.c | 139 ++++-------------- .../eigerDetectorServer/FebControl.h | 32 ++-- .../eigerDetectorServer/FebRegisterDefs.h | 3 +- .../bin/eigerDetectorServer | Bin 242261 -> 252650 bytes .../slsDetectorFunctionList.c | 18 ++- .../slsDetector/slsDetector.cpp | 5 + .../slsDetector/slsDetectorBase.h | 1 + .../slsDetector/slsDetectorCommand.cpp | 12 +- .../slsDetector/slsDetectorUtils.h | 2 +- .../slsDetectorServer/slsDetectorServer.c | 3 + .../slsDetectorServer_funcs.c | 34 ++++- .../slsDetectorServer_funcs.h | 1 + 14 files changed, 121 insertions(+), 140 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index 796883d09..29c624b8d 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -10,6 +10,8 @@ //#include #include "sls_receiver_defs.h" +#define REQUIRED_FIRMWARE_VERSION 10 + /** default maximum string length */ #define MAX_SCAN_STEPS 2000 /** maxmimum number of modules per controller*/ @@ -19,6 +21,9 @@ /** header length for data :gotthard*/ #define HEADERLENGTH 12 +#define DEFAULT_SUBFRAME_EXPOSURE_VAL 2621440 /** default value for sub frame value 2.6ms*/ +#define MAX_SUBFRAME_EXPOSURE_VAL 0x1FFFFFFF /** 29 bit register for max subframe exposure value */ + /** maximum rois */ #define MAX_ROIS 100 diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 7b60185ea..9e80e1307 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -182,7 +182,7 @@ u_int32_t Beb_GetFirmwareRevision(){ else{ //read revision existing bit value = Beb_Read32(baseaddr, REVISION_EXISTING_OFFSET); - printf("Firmware Revision Read OK\n"); + //printf("Firmware Revision Read OK\n"); //error reading if(!(value&REVISION_EXISTING_BIT)){ cprintf(BG_RED,"Firmware Revision Number does not exist in this version\n"); @@ -190,8 +190,8 @@ u_int32_t Beb_GetFirmwareRevision(){ }else{ //read revision number value = Beb_Read32(baseaddr, 0); - printf("Firmware Revision Number Read OK\n"); - printf("Rev: 0x%x.%x\n\n",value & REVISION_MASK,value & SUB_REVISION_MASK); + //printf("Firmware Revision Number Read OK\n"); + //printf("Rev: 0x%x.%x\n\n",value & REVISION_MASK,value & SUB_REVISION_MASK); value &= REVISION_MASK; } } diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 25a97b4a7..bdbbefe83 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -46,8 +46,9 @@ unsigned int Feb_Control_subFrameMode; unsigned int Feb_Control_photon_energy_eV; unsigned int Feb_Control_nimages; -double Feb_Control_exposure_time_in_sec; -double Feb_Control_exposure_period_in_sec; +double Feb_Control_exposure_time_in_sec; +int Feb_Control_subframe_exposure_time_in_10nsec; +double Feb_Control_exposure_period_in_sec; unsigned int Feb_Control_trimbit_size; unsigned int* Feb_Control_last_downloaded_trimbits; @@ -1380,6 +1381,13 @@ int Feb_Control_SetExposureTime(double the_exposure_time_in_sec){ } double Feb_Control_GetExposureTime(){return Feb_Control_exposure_time_in_sec;} +int Feb_Control_SetSubFrameExposureTime(int the_subframe_exposure_time_in_10nsec){ + Feb_Control_subframe_exposure_time_in_10nsec = the_subframe_exposure_time_in_10nsec; + printf("Sub Frame Exposure time set to: %d\n",Feb_Control_subframe_exposure_time_in_10nsec); + return 1; +} +int Feb_Control_GetSubFrameExposureTime(){return Feb_Control_subframe_exposure_time_in_10nsec;} + int Feb_Control_SetExposurePeriod(double the_exposure_period_in_sec){ Feb_Control_exposure_period_in_sec = the_exposure_period_in_sec; printf("Exposure period set to: %f\n",Feb_Control_exposure_period_in_sec); @@ -1542,129 +1550,40 @@ int Feb_Control_PrepareForAcquisition(){//return 1; reg_vals[3]=Feb_Control_ConvertTimeToRegister(Feb_Control_exposure_period_in_sec); reg_nums[4]=DAQ_REG_CHIP_CMDS; reg_vals[4]=(Feb_Control_acquireNReadoutMode|Feb_Control_triggerMode|Feb_Control_externalEnableMode|Feb_Control_subFrameMode); - + reg_nums[5]=DAQ_REG_SUBFRAME_EXPOSURES; + reg_vals[5]= Feb_Control_subframe_exposure_time_in_10nsec; //(1 means 10ns, 100 means 1000ns) // if(!Feb_Interface_WriteRegisters((Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1])),20,reg_nums,reg_vals,0,0)){ - if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),5,reg_nums,reg_vals,0,0)){ + if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),6,reg_nums,reg_vals,0,0)){ printf("Trouble starting acquisition....\n");; return 0; } - //*/ - /* if(!Feb_Control_am_i_master) - Feb_Control_StartAcquisition();*/ return 1; } -int Feb_Control_StartAcquisition(){printf("****** starting acquisition********* \n"); +int Feb_Control_StartAcquisition(){ + printf("****** starting acquisition********* \n"); -static unsigned int reg_nums[20]; -static unsigned int reg_vals[20]; -/* - Feb_Control_PrintAcquisitionSetup(); - - // if(!Reset()||!ResetDataStream()){ - if(!Feb_Control_Reset()){ - printf("Trouble reseting daq or data stream...\n");; - return 0; - } - - if(!Feb_Control_SetStaticBits1(Feb_Control_staticBits&(DAQ_STATIC_BIT_M4|DAQ_STATIC_BIT_M8))){ - printf("Trouble setting static bits ...\n");; - return 0; - } - - if(!Feb_Control_SendBitModeToBebServer()){ - printf("Trouble sending static bits to server ...\n");; - return 0; - } - - if(!Feb_Control_ResetChipCompletely()){ - printf("Trouble resetting chips ...\n");; - return 0; - } + static unsigned int reg_nums[20]; + static unsigned int reg_vals[20]; - reg_nums[0]=DAQ_REG_CTRL; - reg_vals[0]=0; - reg_nums[1]=DAQ_REG_NEXPOSURES; - reg_vals[1]=Feb_Control_nimages; - reg_nums[2]=DAQ_REG_EXPOSURE_TIMER; - reg_vals[2]=Feb_Control_ConvertTimeToRegister(Feb_Control_exposure_time_in_sec); - reg_nums[3]=DAQ_REG_EXPOSURE_REPEAT_TIMER; - reg_vals[3]=Feb_Control_ConvertTimeToRegister(Feb_Control_exposure_period_in_sec); - */ + int i; + for(i=0;i<14;i++){ + reg_nums[i]=DAQ_REG_CTRL; + reg_vals[i]=0; + } + reg_nums[14]=DAQ_REG_CTRL; + reg_vals[14]=ACQ_CTRL_START; -/* - reg_nums[4]=DAQ_REG_CHIP_CMDS; - reg_vals[4]=(Feb_Control_acquireNReadoutMode|Feb_Control_triggerMode|Feb_Control_externalEnableMode|Feb_Control_subFrameMode); - */ + if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),15,reg_nums,reg_vals,0,0)){ + printf("Trouble starting acquisition....\n");; + return 0; + } -/* - if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),4,reg_nums,reg_vals,0,0)){ - printf("Trouble starting acquisition....\n");; - return 0; - } - unsigned int masterHalfModuleMode = 0; - reg_nums[0]=DAQ_REG_CHIP_CMDS; - reg_vals[0]=(masterHalfModuleMode|Feb_Control_acquireNReadoutMode|Feb_Control_triggerMode|Feb_Control_externalEnableMode|Feb_Control_subFrameMode); - if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),1,reg_nums,reg_vals,0,0)){ - printf("Trouble writing commands....\n");; - return 0; - } - masterHalfModuleMode = 0x80000000; - reg_nums[0]=DAQ_REG_CHIP_CMDS; - reg_vals[0]=(masterHalfModuleMode|Feb_Control_acquireNReadoutMode|Feb_Control_triggerMode|Feb_Control_externalEnableMode|Feb_Control_subFrameMode); - if(!Feb_Interface_WriteRegisters((Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1])),1,reg_nums,reg_vals,0,0)){ - printf("Trouble writing commands....\n");; - return 0; - } - - int i; - for(i=0;i<14;i++){ - reg_nums[i]=DAQ_REG_CTRL; - reg_vals[i]=0; - } - reg_nums[14]=DAQ_REG_CTRL; - reg_vals[14]=ACQ_CTRL_START; - - if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),15,reg_nums,reg_vals,0,0)){ - printf("Trouble starting acquisition....\n");; - return 0; - } - */ -///* -int i; -for(i=0;i<14;i++){ - reg_nums[i]=DAQ_REG_CTRL; - reg_vals[i]=0; -} -reg_nums[14]=DAQ_REG_CTRL; -reg_vals[14]=ACQ_CTRL_START; - -if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),15,reg_nums,reg_vals,0,0)){ - printf("Trouble starting acquisition....\n");; - return 0; -} -//*/ -/* - int i; - for(i=5;i<19;i++){ - reg_nums[i]=DAQ_REG_CTRL; - reg_vals[i]=0; - } - reg_nums[19]=DAQ_REG_CTRL; - reg_vals[19]=ACQ_CTRL_START; - - if(!Feb_Interface_WriteRegisters(Feb_Control_AddressToAll(),20,reg_nums,reg_vals,0,0)){ - printf("Trouble starting acquisition....\n");; - return 0; -} - */ - -//*/ -return 1; + return 1; } int Feb_Control_StopAcquisition(){ diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.h b/slsDetectorSoftware/eigerDetectorServer/FebControl.h index 5f929f5fd..b72103e1c 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.h @@ -155,23 +155,21 @@ int Feb_Control_GetModuleNumber(); int Feb_Control_WaitForStartedFlag(int sleep_time_us, int prev_flag); //functions for setting up exposure - void Feb_Control_PrintAcquisitionSetup(); - int Feb_Control_SetNExposures(unsigned int n_images); - unsigned int Feb_Control_GetNExposures(); - int Feb_Control_SetExposureTime(double the_exposure_time_in_sec); - double Feb_Control_GetExposureTime(); - int Feb_Control_SetExposurePeriod(double the_exposure_period_in_sec); - double Feb_Control_GetExposurePeriod(); - int Feb_Control_SetDynamicRange(unsigned int four_eight_sixteen_or_thirtytwo); - unsigned int Feb_Control_GetDynamicRange(); - /*int Feb_Control_SetReadoutSpeed(unsigned int readout_speed=0); //0->full,1->half,2->quarter or 3->super_slow*/ - int Feb_Control_SetReadoutSpeed(unsigned int readout_speed); //0->full,1->half,2->quarter or 3->super_slow - /* int Feb_Control_SetReadoutMode(unsigned int readout_mode=0); //0->parallel,1->non-parallel,2-> safe_mode*/ - int Feb_Control_SetReadoutMode(unsigned int readout_mode); //0->parallel,1->non-parallel,2-> safe_mode - /* int Feb_Control_SetTriggerMode(unsigned int trigger_mode=0, int polarity=1);*/ - int Feb_Control_SetTriggerMode(unsigned int trigger_mode, int polarity); - /*int Feb_Control_SetExternalEnableMode(int use_external_enable=0, int polarity=1);*/ - int Feb_Control_SetExternalEnableMode(int use_external_enable, int polarity); + void Feb_Control_PrintAcquisitionSetup(); + int Feb_Control_SetNExposures(unsigned int n_images); + unsigned int Feb_Control_GetNExposures(); + int Feb_Control_SetExposureTime(double the_exposure_time_in_sec); + double Feb_Control_GetExposureTime(); + int Feb_Control_SetSubFrameExposureTime(int the_subframe_exposure_time_in_10nsec); + int Feb_Control_GetSubFrameExposureTime(); + int Feb_Control_SetExposurePeriod(double the_exposure_period_in_sec); + double Feb_Control_GetExposurePeriod(); + int Feb_Control_SetDynamicRange(unsigned int four_eight_sixteen_or_thirtytwo); + unsigned int Feb_Control_GetDynamicRange(); + int Feb_Control_SetReadoutSpeed(unsigned int readout_speed); //0 was default, 0->full,1->half,2->quarter or 3->super_slow + int Feb_Control_SetReadoutMode(unsigned int readout_mode); ///0 was default,0->parallel,1->non-parallel,2-> safe_mode + int Feb_Control_SetTriggerMode(unsigned int trigger_mode, int polarity);//0 and 1 was default, + int Feb_Control_SetExternalEnableMode(int use_external_enable, int polarity);//0 and 1 was default, //functions for testing /*int Feb_Control_SetTestModeVariable(int on=1);*/ diff --git a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h index 9b4bc1236..77c5cb95b 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h @@ -17,7 +17,8 @@ #define DAQ_REG_NEXPOSURES 3 #define DAQ_REG_EXPOSURE_TIMER 4 // == (31 downto 3) * 10^(2 downto 0) #define DAQ_REG_EXPOSURE_REPEAT_TIMER 5 // == (31 downto 3) * 10^(2 downto 0) -#define DAQ_REG_STATUS 6 //also pg and fifo status register +#define DAQ_REG_SUBFRAME_EXPOSURES 6 +#define DAQ_REG_STATUS 7 //also pg and fifo status register #define DAQ_CTRL_RESET 0x80000000 #define DAQ_CTRL_START 0x40000000 diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index dbff8d7c9dddbe752189071f843d7bccf7ec5c3b..1a2700d2b560004430a9ec4d8e46d2a00f8f4bb0 100755 GIT binary patch delta 64419 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 K>2dtt%6|hxH29(b delta 57318 zcmb@v4SWN=WlxL%yo|PXA=-6wbiK`Egh|tcrBiYy>{!OJkDR?aJZ-0ARaC)#S&nijb zu_y-Z{&q>~)=5pS?qUrl-+X zcxTB4(x#xkMUvEBFK|dwq@FI7q$oW-QIewdv{RBg=;;bj(9>0t6r-nWB&nmGc1uzx zJ-t+tV)b-A+V8Aq)=5&Fo^F(+E_!;4Bz4u(&61R$r}s!wqMmNSXz1yWBq>=>ACaW) zdisPUne}w5B=w-Qi+X=fk}P_`B}q!r(^n-aO-uI!Zn~Zhlcb({+9XLCdOBW`GWE1s zlCt!4h9vdU(^g5!*3))Ly1TcYDUzfdJ?)UBK6<)TlB{}qq9o<&X{RLR>FEkdvgzq6 z+1x%MIsJy~BmSy8*>kmzTat=5N@0$mjEfG5g*ezh7s(Ub=Y@VV382ezefv1xzd+v7 zJ~`bQHs~ML$RVw!AlK+-z%@08qRfovsA~a1CHK_MbjUsS(I8* zQyUUg@w6}9=s>MJeq6Hh{7}|eF6uBl-M)t^ z5vPlKfoM1+AxUmyBaWcd8}gA3$*#O=;u}IsU6fK%Q)o5?*_YY(KyZ@1MUraUk#JMb zW1LKA$D|2DAE#}OptQ~oDX76))*zKSf>Pcm0aCx+?V+G#?OX-MYFhhr?RZ(C}^c`UJC*GrNJ(<*7O z@Ss=6x`WLE=KMAlUCG3dv}$=f@?DWXqUDQ_4@bU5%R@AlYsfci`H9G%N4` zfTgR~02Kfn0)ku1S0Von@}ygsC*ML$maWJ;wfth_*CSu59VA2510F0EcceEtiGoTM9N06EHEwWb1sj8LO>O$yC{wz#^f=>EO z$jz&+8zM!z+zy)2VT;VFR@H~+RikDY%o?L9hX#UF4at+=>og_Ke4a|%&=rGjmn&lL zjx&$^C5*7n7EIJ!v&W-T#+<8?Te~K{eQ)PMA-wBRlmV9b=n1=R<}Lg5!7{uye%;yF0U5yp$QO_Z-(xw6SG#f z4z|lCi{52WeQ(;7pwRDX9YK-HdF zL%(Z4a*TYHl9(BhF>>EbBwHOp?T^b2jq)y7v`SQ8m>8|gy$*TI>kI*!lQ)2#Yl;R-| zDCGB6M^L*cq6!&ZB^anq@^3YC4ay}_0kXKjyGZ4_B`@*(V+0u+l5gD*$t2`^Pp`bi zKsJ?lTE#@BMqyF(Mj_46^<>IHY_UV)b2Vm`16~JM0TCl3=nl_YO#K3#6>@7%+$g5n z5tkHO;yHT-?L~r&-L(ueW}|1Xs3we*XKV$*T_7a1$=Bo30_PtqABGwU)CnwF$h=<8phJW_+({oxPk4Hx*s zXXy<){NZzIH9Dhxa2Khti<2A6})4)aegjP@y$2!ymrzx(2WGhu1dN zx`crgE0#eLPcGIfR2wR={LH$E8ob6I{82LRRiuHm~R&=6u%jQl_4I> zlkV^b!%tx)o`0?The(y&4Y7FS zntw?0wpMGuBicye%q~!Pn4j4y7v;xA{E+QMbml)fG*7IE+Ts*c8;V6IG_O`$C1b&6 ztlG}c`FO@IXbcnz4wZ5|Rz0UH*LFJZztnuqdgGBR+(0yWQer0Cp58E94+BmtjAbGG? zLc;~iMi+};>#h3~kYK8zoLk-B?*xe`xu7s%T%Kkf?D2(W;kAjeckruI(erGhQv)d- zQE{Lz*j5OVLP}Q;Qd*O&+~MJD`P;WTj5@VR>kjQmN!F>i)}m7j2@kEAedT$y-PE-2 z)O~XH;0f?CpB~&Z;qNDXNcJ$=ld7ut_xG`Wr^qkel_p0HNw)lbUx4IqBg#t-{^LS< z57mhIZ))_u9P8j$J~4HQKahtS zRxgK4?#fRrlp}{G#2M|u334K7(==Lc84{OwB3BHGOUfwm{G|>QgKEPteZzDg^0O#{ z5ocPUV6j{}?oRpRp^4E(<@oDL**dICh~$u5H)PYWWd7Ij03>kN`)aN$a1uT-D6R4yHs$hM+FTqrro&z_X8g5c+KH4@8?6A9K&E*+lCpSvPg z4e!Y=%IhezU1T=P86�a*>`aS0UX^q&v%dMkMnU$5)N$$v#&Iw)Q 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index cfb865f6c..708a47fe7 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -40,12 +40,10 @@ int eiger_extgating = 0; int eiger_extgatingpolarity = 0; - int eiger_nexposures = 1; int eiger_ncycles = 1; - int send_to_ten_gig = 0; int ndsts_in_use=32; unsigned int nimages_per_request=1; @@ -65,14 +63,13 @@ int master = 0; #define TEN_GIGA_BUFFER_SIZE 4112 #define ONE_GIGA_BUFFER_SIZE 1040 + int initDetector(){ int imod,i,n; n = getNModBoard(1); - printf("This is the EIGER Server of revision %llx\n", getDetectorId(DETECTOR_SOFTWARE_VERSION)); - //#ifdef VERBOSE - printf("Board is for %d half modules\n",n); + printf("This Server is for 1 Eiger half module\n"); //#endif @@ -131,6 +128,7 @@ int initDetector(){ //setting default measurement parameters setTimer(FRAME_NUMBER,1); setTimer(ACQUISITION_TIME,1E9); + setTimer(SUBFRAME_ACQUISITION_TIME,DEFAULT_SUBFRAME_EXPOSURE_VAL); setTimer(FRAME_PERIOD,1E9); setDynamicRange(16); setThresholdEnergy(8000,0); @@ -619,12 +617,22 @@ int64_t setTimer(enum timerIndex ind, int64_t val){ nimages_per_request = eiger_nexposures * eiger_ncycles; } }return eiger_nexposures; + case ACQUISITION_TIME: if(val >= 0){ printf(" Setting exp time: %fs\n",val/(1E9)); Feb_Control_SetExposureTime(val/(1E9)); } return (Feb_Control_GetExposureTime()*(1E9)); + + case SUBFRAME_ACQUISITION_TIME: + if(val >= 0){ + printf(" Setting sub exp time: %dns\n",(int)val/10); + Feb_Control_SetSubFrameExposureTime(val/10); + } + return (Feb_Control_GetSubFrameExposureTime()*10); + + case FRAME_PERIOD: if(val >= 0){ printf(" Setting acq period: %fs\n",val/(1E9)); diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 26fe15bd0..37a645494 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -3213,6 +3213,11 @@ int slsDetector::updateDetectorNoWait() { n = controlSocket->ReceiveDataOnly( &retval,sizeof(int64_t)); thisDetector->timerValue[ACQUISITION_TIME]=retval; + if(thisDetector->myDetectorType!= EIGER){ + //retval=setSubFrameExposureTime(tns); + n = controlSocket->ReceiveDataOnly( &retval,sizeof(int64_t)); + thisDetector->timerValue[SUBFRAME_ACQUISITION_TIME]=retval; +} //retval=setPeriod(tns); n = controlSocket->ReceiveDataOnly( &retval,sizeof(int64_t)); thisDetector->timerValue[FRAME_PERIOD]=retval; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index 8f6e4d6db..98529bcaa 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -369,6 +369,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef */ virtual int64_t setTimer(timerIndex index, int64_t t=-1)=0; int64_t setExposureTime(int64_t t=-1){return setTimer(ACQUISITION_TIME,t);}; + int64_t setSubFrameExposureTime(int64_t t=-1){return setTimer(SUBFRAME_ACQUISITION_TIME,t);}; int64_t setExposurePeriod(int64_t t=-1){return setTimer(FRAME_PERIOD,t);}; int64_t setDelayAfterTrigger(int64_t t=-1){return setTimer(DELAY_AFTER_TRIGGER,t);}; int64_t setNumberOfGates(int64_t t=-1){return setTimer(GATES_NUMBER,t);}; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 0234bbf82..4f18a06f5 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -733,6 +733,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdTimer; i++; + descrToFuncMap[i].m_pFuncName="subexptime"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdTimer; + i++; + descrToFuncMap[i].m_pFuncName="period"; // descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdTimer; i++; @@ -3783,6 +3787,8 @@ string slsDetectorCommand::cmdTimer(int narg, char *args[], int action) { if (cmd=="exptime") index=ACQUISITION_TIME; + else if (cmd=="subexptime") + index=SUBFRAME_ACQUISITION_TIME; else if (cmd=="period") index=FRAME_PERIOD; else if (cmd=="delay") @@ -3806,7 +3812,7 @@ string slsDetectorCommand::cmdTimer(int narg, char *args[], int action) { ; else return string("cannot scan timer value ")+string(args[1]); - if (index==ACQUISITION_TIME || index==FRAME_PERIOD || index==DELAY_AFTER_TRIGGER) + if (index==ACQUISITION_TIME || index==SUBFRAME_ACQUISITION_TIME || index==FRAME_PERIOD || index==DELAY_AFTER_TRIGGER) t=(int64_t)(val*1E+9); else t=(int64_t)val; } @@ -3815,7 +3821,7 @@ string slsDetectorCommand::cmdTimer(int narg, char *args[], int action) { myDet->setOnline(ONLINE_FLAG); ret=myDet->setTimer(index,t); - if (index==ACQUISITION_TIME || index==FRAME_PERIOD || index==DELAY_AFTER_TRIGGER) + if (index==ACQUISITION_TIME || index==SUBFRAME_ACQUISITION_TIME || index==FRAME_PERIOD || index==DELAY_AFTER_TRIGGER) rval=(double)ret*1E-9; else rval=ret; @@ -3843,6 +3849,7 @@ string slsDetectorCommand::helpTimer(int narg, char *args[], int action) { ostringstream os; if (action==PUT_ACTION || action==HELP_ACTION) { os << "exptime t \t sets the exposure time in s" << std::endl; + os << "subexptime t \t sets the exposure time of subframe in s" << std::endl; os << "period t \t sets the frame period in s" << std::endl; os << "delay t \t sets the delay after trigger in s" << std::endl; os << "frames t \t sets the number of frames per cycle (e.g. after each trigger)" << std::endl; @@ -3855,6 +3862,7 @@ string slsDetectorCommand::helpTimer(int narg, char *args[], int action) { if (action==GET_ACTION || action==HELP_ACTION) { os << "exptime \t gets the exposure time in s" << std::endl; + os << "subexptime \t gets the exposure time of subframe in s" << std::endl; os << "period \t gets the frame period in s" << std::endl; os << "delay \t gets the delay after trigger in s" << std::endl; os << "frames \t gets the number of frames per cycle (e.g. after each trigger)" << std::endl; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index 43baf223d..e1bdea683 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -37,7 +37,7 @@ using namespace std; #include "slsDetectorActions.h" #include "postProcessing.h" -#define MAX_TIMERS 11 +//#define MAX_TIMERS 11 #define MAXPOS 50 #define DEFAULT_HOSTNAME "localhost" diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer.c index 3bedf8fd0..acda828c2 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer.c @@ -22,6 +22,9 @@ int main(int argc, char *argv[]){ int portno, b; int retval=OK; int sd, fd; + + checkFirmwareCompatibility(); + #ifdef STOP_SERVER char cmd[100]; #endif diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index c97f7652b..17b11eece 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -42,6 +42,24 @@ int dataBytes = 10; +void checkFirmwareCompatibility(){ + cprintf(BLUE,"\n\n********************************************************\n" + "**********************EIGER Server**********************\n" + "********************************************************\n"); + cprintf(BLUE,"\nFirmware Version: %llx\nSoftware Version: %llx\n\n", + getDetectorId(DETECTOR_FIRMWARE_VERSION), getDetectorId(DETECTOR_SOFTWARE_VERSION)); + + //check for firmware version compatibility + if(getDetectorId(DETECTOR_FIRMWARE_VERSION) < REQUIRED_FIRMWARE_VERSION){ + cprintf(RED,"FATAL ERROR: This firmware version is incompatible.\n" + "Please update it to v%d to be compatible with this server\n\n", + REQUIRED_FIRMWARE_VERSION); + + cprintf(RED,"Exiting Server. Goodbye!\n\n"); + exit(-1); + } +} + int init_detector(int b) { #ifdef VIRTUAL @@ -401,6 +419,10 @@ int send_update(int file_des) { retval=setTimer(ACQUISITION_TIME,GET_FLAG); #endif n += sendData(file_des,&retval,sizeof(int64_t),INT64); +#ifdef SLS_DETECTOR_FUNCTION_LIST + retval=setTimer(SUBFRAME_ACQUISITION_TIME,GET_FLAG); +#endif + n += sendData(file_des,&retval,sizeof(int64_t),INT64); #ifdef SLS_DETECTOR_FUNCTION_LIST retval=setTimer(FRAME_PERIOD,GET_FLAG); #endif @@ -2428,6 +2450,16 @@ int set_timer(int file_des) { sprintf(mess,"Detector locked by %s\n",lastClientIP); } else { switch(ind) { +#ifdef EIGERD + case SUBFRAME_ACQUISITION_TIME: + if (tns > MAX_SUBFRAME_EXPOSURE_VAL ){ + ret=FAIL; + strcpy(mess,"Sub Frame exposure time should not exceed 5.368 seconds\n"); + break; + } +#endif + retval = setTimer(ind,tns); + break; case PROBES_NUMBER: #ifndef MYTHEND ret=FAIL; @@ -2444,7 +2476,7 @@ int set_timer(int file_des) { break; default: ret=FAIL; - sprintf(mess,"timer index unknown %d\n",ind); + sprintf(mess,"timer index unknown for this detector %d\n",ind); break; } diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.h index 7f1e44ab8..3de728aa8 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.h @@ -11,6 +11,7 @@ //basic server functions +void checkFirmwareCompatibility(); int init_detector(int); int decode_function(int); int function_table();