From 95324fc9291d9fa56d53e922245b50776f564ac1 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Wed, 2 Sep 2015 11:06:07 +0200 Subject: [PATCH 1/2] resets footer frame numbers --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 35 ++++++++++++++---- slsDetectorSoftware/eigerDetectorServer/Beb.h | 1 + .../eigerDetectorServer/FebRegisterDefs.h | 2 + .../bin/eigerDetectorServer | Bin 242224 -> 242261 bytes .../slsDetectorFunctionList.c | 5 +++ 5 files changed, 36 insertions(+), 7 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index b0522622f..7b60185ea 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -154,7 +154,7 @@ void Beb_GetModuleCopnfiguration(int* master, int* top){ //open file pointer int fd = Beb_open(XPAR_PLB_GPIO_SYS_BASEADDR,&baseaddr); if(fd < 0){ - cprintf(RED,"Module Configuration FAIL\n"); + cprintf(BG_RED,"Module Configuration FAIL\n"); }else{ //read data ret = Beb_Read32(baseaddr, MODULE_CONFIGURATION_MASK); @@ -177,7 +177,7 @@ u_int32_t Beb_GetFirmwareRevision(){ //open file pointer int fd = Beb_open(XPAR_VERSION,&baseaddr); if(fd < 0) - cprintf(RED,"Firmware Revision Read FAIL\n"); + cprintf(BG_RED,"Firmware Revision Read FAIL\n"); else{ //read revision existing bit @@ -185,7 +185,7 @@ u_int32_t Beb_GetFirmwareRevision(){ printf("Firmware Revision Read OK\n"); //error reading if(!(value&REVISION_EXISTING_BIT)){ - cprintf(RED,"Firmware Revision Number does not exist in this version\n"); + cprintf(BG_RED,"Firmware Revision Number does not exist in this version\n"); value = 0; }else{ //read revision number @@ -203,6 +203,27 @@ u_int32_t Beb_GetFirmwareRevision(){ return value; } + +void Beb_ResetFrameNumber(){ + //mapping new memory to read master top module configuration + u_int32_t baseaddr; + //open file pointer + int fd = Beb_open(XPAR_PLB_GPIO_SYS_BASEADDR,&baseaddr); + if(fd < 0){ + cprintf(BG_RED,"Reset Frame Number FAIL\n"); + }else{ + //write a 1 + Beb_Write32(baseaddr, FRAME_NUM_RESET_OFFSET, 1); + usleep(100000); //100ms + //write a 0 + Beb_Write32(baseaddr, FRAME_NUM_RESET_OFFSET, 0); + printf("Frame Number Reset OK\n"); + //close file pointer + Beb_close(fd); + } +} + + void Beb_ClearBebInfos(){ //unsigned int i; //for(i=0;i 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 delta 25330 zcmb_^3s_av_U{^V!{#B61p@MB^HNmQt*C*bQlV`V4L#^l!`zk?78({76$X|imKwIy ziHSz#gHB{5+SatBlMgy+Sw}lsRCKZvw&+PTnqS=O(|06zN@;qL`s$SXBL7j{_}G1zip zu2!F)tsS{x6T48X)o*%SJCiF|qNi!}2nl%R+t|gUTKl*tEpA4l zkPdF`<1yjv=W^{>R+x50G^@1mtOe}nI$(NfFJ*a&W^Gn)_VWQ?V)1Ec&)P=xsAj(@ zR(t!Vqx8LYo;3yBU-o6R2?3fZ6SXxKl>IssI_JH(LMsaxS=gOlGx8;29vcJ z;|2)Dib{$!zZpHXxX05BmHJSSR&dL|+0PxAVV1VSHtkQ@!h(NzAMOZ;k3)2uDm7oB z-)N29x`jeu@GPzE&FBV?2|bCdx}@nj(^yBYR-f~*Ywn{bCe!+cxf6#F>nPIpy_2B5 zGs$X<_E5v@+j^2_9yd~ZBX^d-3Fj=EoI>$h{p6d;Q|p-An|18eqNj|L;u;>C5)DCZ zTGd~s7#$wd?#WArGL0{VX|LqP&|FwrOeXqP?Mc8Wg!$ z3f-SID8e$sUCPd!5gm51O|Ju9r~`dmb>L!~wql0v%^Vh2UTB)_%HIw~X zt7Xo`kVjy*`?YO%$GL_bc~6vKg9Poddu--kTSYn0EK?%2f8TS0k`RQMTIZHtT91OO zj(EL5H(O)D4anKff-9^uA8hHG^}d-dQQPn9Vx2`28>Kn#*E?HYm!?n9J}&&8Zq#

^@u+ADZ@6~!dqWb5+f_gpY3i+!UMg&?zZn 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 Date: Thu, 3 Sep 2015 15:16:48 +0200 Subject: [PATCH 2/2] 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();