From cb635d800a5e1de6cf3330f03a98ffc382879cf3 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 22 May 2018 18:43:13 +0200 Subject: [PATCH] eiger server: added overflow, noverflow to the flags to show/not show saturation when there is overflow in any of the single subframes in 32 bit mode --- .../commonFiles/sls_detector_defs.h | 2 + slsDetectorSoftware/eigerDetectorServer/Beb.c | 64 ++++++++++++++++-- slsDetectorSoftware/eigerDetectorServer/Beb.h | 1 + .../eigerDetectorServer/FebRegisterDefs.h | 7 +- .../bin/eigerDetectorServer_developer | Bin 297671 -> 297757 bytes .../eigerDetectorServer/gitInfo.txt | 10 +-- .../eigerDetectorServer/gitInfoEiger.h | 8 +-- .../slsDetectorFunctionList.c | 33 ++++++++- .../slsDetectorServer_defs.h | 5 +- .../slsDetector/slsDetector.cpp | 10 --- .../slsDetector/slsDetectorBase.h | 21 ++++++ .../slsDetector/slsDetectorCommand.cpp | 15 ++-- .../slsDetector/slsDetectorUsers.cpp | 6 ++ .../slsDetector/slsDetectorUsers.h | 7 ++ .../slsDetectorServer_funcs.c | 2 + 15 files changed, 158 insertions(+), 33 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index 6ab8ca615..465ee4956 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -490,6 +490,8 @@ enum readOutFlags { DIGITAL_ONLY=0x80000, /** chiptest board read only digital bits (not adc values)*/ ANALOG_AND_DIGITAL=0x100000, /** chiptest board read adc values and digital bits digital bits */ DUT_CLK=0x200000, /** chiptest board fifo clock comes from device under test */ + SHOW_OVERFLOW=0x400000, /** eiger 32 bit mode, show saturated for overflow of single subframes */ + NOOVERFLOW=0x800000 /** eiger 32 bit mode, do not show saturated for overflow of single subframes */ }; /** trimming modes diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 15ced3006..074980d8c 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -415,6 +415,43 @@ int Beb_Activate(int enable){ } +int Beb_Set32bitOverflow(int val) { + if(!Beb_activated) + return val; + + //mapping new memory + u_int32_t* csp0base=0; + u_int32_t valueread = 0; + u_int32_t offset = FLOW_REG_OFFSET; + if(val>0) val = 1; + + //open file pointer + int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); + if(fd < 0){ + cprintf(BG_RED,"Could not read register to set overflow flag in 32 bit mode. FAIL\n"); + return -1; + } + else{ + if(val > -1){ + // reset bit + valueread = Beb_Read32(csp0base, offset); + Beb_Write32(csp0base, offset,valueread & ~FLOW_REG_OVERFLOW_32_BIT_MSK); + + // set bit + valueread = Beb_Read32(csp0base, offset); + Beb_Write32(csp0base, offset,valueread | + ((val << FLOW_REG_OVERFLOW_32_BIT_OFST) & FLOW_REG_OVERFLOW_32_BIT_MSK)); + } + + valueread = (Beb_Read32(csp0base, offset) & FLOW_REG_OVERFLOW_32_BIT_MSK) >> FLOW_REG_OVERFLOW_32_BIT_OFST; + } + //close file pointer + if(fd > 0) + Beb_close(fd,csp0base); + + return valueread; +} + int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val){ if(!Beb_activated) @@ -441,7 +478,7 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val){ strcpy(modename,"Transmission Delay Frame"); break; case FLOWCTRL_10G: - offset = TXM_FLOW_CONTROL_10G; + offset = FLOW_REG_OFFSET; strcpy(modename,"Flow Control for 10G"); if(val>0) val = 1; break; @@ -455,14 +492,29 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val){ } else{ if(val > -1){ - valueread = Beb_Read32(csp0base, offset); - //cprintf(BLUE, "%s value before:%d\n",modename,valueread); - Beb_Write32(csp0base, offset,val); - cprintf(BLUE,"%s value:%d\n", modename,valueread); + if (mode != FLOWCTRL_10G) { + valueread = Beb_Read32(csp0base, offset); + Beb_Write32(csp0base, offset,val); + } + // flow control reg has other bits for other control + else { + // reset bit + valueread = Beb_Read32(csp0base, offset); + Beb_Write32(csp0base, offset,valueread & ~FLOW_REG_TXM_FLOW_CNTRL_10G_MSK); + + // set bit + valueread = Beb_Read32(csp0base, offset); + Beb_Write32(csp0base, offset,valueread | + ((val << FLOW_REG_TXM_FLOW_CNTRL_10G_OFST) & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK)); + + } + } valueread = Beb_Read32(csp0base, offset); - //cprintf(BLUE,"%s value:%d\n", modename,valueread); + if (mode == FLOWCTRL_10G) + valueread = (valueread & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK) >> FLOW_REG_TXM_FLOW_CNTRL_10G_OFST; + } //close file pointer if(fd > 0) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.h b/slsDetectorSoftware/eigerDetectorServer/Beb.h index a0229dd3b..73718db03 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.h +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.h @@ -51,6 +51,7 @@ struct BebInfo{ int Beb_SetMasterViaSoftware(); int Beb_SetSlaveViaSoftware(); int Beb_Activate(int enable); + int Beb_Set32bitOverflow(int val); int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val); int Beb_ResetToHardwareSettings(); u_int32_t Beb_GetFirmwareRevision(); diff --git a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h index 5950a85f8..1562fe1e4 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebRegisterDefs.h @@ -139,7 +139,12 @@ #define TXM_DELAY_LEFT_OFFSET 0x180 #define TXM_DELAY_RIGHT_OFFSET 0x1A0 #define TXM_DELAY_FRAME_OFFSET 0x1C0 -#define TXM_FLOW_CONTROL_10G 0x140 +#define FLOW_REG_OFFSET 0x140 + +#define FLOW_REG_TXM_FLOW_CNTRL_10G_OFST (0) +#define FLOW_REG_TXM_FLOW_CNTRL_10G_MSK (0x1 << FLOW_REG_TXM_FLOW_CNTRL_10G_OFST) +#define FLOW_REG_OVERFLOW_32_BIT_OFST (2) +#define FLOW_REG_OVERFLOW_32_BIT_MSK (0x1 << FLOW_REG_OVERFLOW_32_BIT_OFST) //command memory #define LEFT_OFFSET 0x0 diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_developer index a0cd4082d07d5cbb90896af7b246f10de384d263..980781aad7b4b0a106246876a45579937ab4419e 100755 GIT binary patch delta 60236 zcmbrne_T~X{y%=^@I$zvT@8?5;uR4E6)*Usi-Mx59R(E?3rp>4YN(i4SXkh_q;6zGwKc0;~+CNE>izGRr9QB<< zyNvd9wDW%zCx#g=ml|d5-#%aRXCHal8uhHNjTrZ3`t>9vcwe6Xmp-;ANiwieB%{v{ zMoEgjPn1zNOq8!>V(<{H{#rIh*2}Xb$wx2Gmn2`koCl)ya)BiI>*XR4tC!bEQUJ;} zHt@AFNea{(DnXE5u9l=Ay}Uz`I_u>+N$R4P_e;{fdie;j>E#oW)KxE^m85QZ`GO?f zrZO;*N>Yqo&XlCydO2H?`sn3Zk`$+x=Sxywy__dW z{q%ByB*p9HB1uZn%WEX5zfFHAlcWK9xl)o6^>Vc&4bsayB+0Co>m(^jFYlM6WW9Vu zk_PML6OuGUFQ1j9p?dj(B;7B{^R8c(B#Yi~O_Ead@=Zw^u9t61(g?kLSCUdi`FmeU zO4G|hk~C5;2TRf@y&R=Rb&l-uqwSRZraijt&LF!ajovB+C_Z0LQY7N1$aA--*`1T; zEh|9P{K{T!O+^9nn`((<9A!89mJ=zqH0p;ib-NVIx~j*dF!ehrDt)VD9aU@e9o1m; z9dWcNYQ$fgOrx5NzP2l^StX->h_d}PG=Icj+uCgFTGP|3r2!+_euz?AI`=1Gv?)P0 zsYAL9@{6@R-W03mc6q+n5ZgLQ0?HtZ)b=k$lEW-kNw(M}VyTrR#pkPWYJF5lC+o6O zl#i*Vd;7+3w?Gf;drAzFL2NIwMi!R$l%i^TO8v4W-;qT=K81?U#dT`_y^%A2VXcgO zkP?+D8D+DED-Gkdp;rJnkz=<>0T|N{y?Qv{w-PhpeT(k#DYV~nwVdPFDrK=cvvea^ zy>{=zBzWU}@%JpsC`_{&eN&d8GT#_Ev^>cq5#H6{Q&^F3wVahpMo9q-RYm`+m3Wqu ztjlV3m=eIK4aUg$8a{tLfb$5|&+3e9r&M_)`=Jo&=&d=kynyS)J`q|12!> zW!S#>MP1Wv5UEu6cgrA^8}GXxMazAC$v3L?zR+RIS{0whEA6o~-g3us{u?&w!43J4 z*Ty}xX)FopUlXsh=BI+{(_mtg zc*cazAI5W|c+SD|Zag=L=UhB*!E?QM&d2jQJlBe6%<%k51=gFbE5s?^j*3M9u#0Di z>iL;?&KJ++c%Fb~t9Y))a|)ib#PcpZ$KyF&JlEqn9M5L)dMUYNQ$Y8={G`te>7-X|6Of3S6 zO`2eo2VSjIYeTwYy$*#u7P1aF0z7fBe)Q=QejJt9M@!3U-uz9}Ziqoy*|K$yBQHhSM5qW5?5f2vOL`FOjU9``8e zqgKbgAb&*mnfgxi@qemO@%eC(T9`1*|EX3K2deu~d^%Y1`QVn?%8El!JfIHf|2Rof z%lp3|AMUIM4|t4BQVRyGCh_W>0ZYhib^gHBBt>l*IGwCjQxjK{xoSh=c=>(8=BxG| zG!}rlgA!w&&Q^R5IIYoEv7FM=R*ek@j;V(j7^LaIPNoXN;ApEZJzXlmma75gK_MkN z1PnTtlO)sAb!w(Ll5|yb&7;yrV{y3EM*CTd)Tx%4I7rd~5A%LfA0u%wtd1(hi_sUOTozv9OqEi8`BC@k`0O1}Rbhc*@L;B7E1 z+EVTB%$_w`_c5tAVf5|J(F+baN8k6IT9q`I)Tw8aBK%k6DL(stQEw(i$E_$r@w`rv z*}9?%&&Tkb$`)EPK3D5hbMk{BbqrfZ+qJHIZq^mhoqaRZvgF~06-P88-h+50k0Lu% z36yUqktjDBnT3PAeDsqFgJ=Frjj#C}RS0 zsVHLta*-%w0&>16XQMn{l;@*t%MlMnc;L!omI@iw>7pKzBM%YfBPjP1<+CV9iE
    EBJh=#E!pAzL9l#hrqC?)lxoR9JjQC@>` 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 delta 59412 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 X^UQkNAEP~Y++mBed7it=wq5)uEl7mI diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt index ba9b56634..2aad5bbd5 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: 23d73ae5aee55e52d1d05452c633073ac1c6ad1a -Revision: 334 -Branch: developer +Repsitory UUID: 0ed82d4ef7a10d8a935b5d075a990509da288e32 +Revision: 338 +Branch: 32bitoverflow Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3817 -Last Changed Date: 2018-05-15 16:16:15.000000002 +0200 ./FebRegisterDefs.h +Last Changed Rev: 3831 +Last Changed Date: 2018-05-22 18:04:57.000000002 +0200 ./Beb.c diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h index 4362e67fc..85ae05016 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "23d73ae5aee55e52d1d05452c633073ac1c6ad1a" +#define GITREPUUID "0ed82d4ef7a10d8a935b5d075a990509da288e32" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3817 -#define GITDATE 0x20180515 -#define GITBRANCH "developer" +#define GITREV 0x3831 +#define GITDATE 0x20180522 +#define GITBRANCH "32bitoverflow" diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 7e69314f4..4eb9eb220 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -36,6 +36,7 @@ int eiger_photonenergy = 0; int eiger_dynamicrange = 0; int eiger_readoutmode = 0; int eiger_storeinmem = 0; +int eiger_overflow32 = 0; int eiger_readoutspeed = 0; int eiger_triggermode = 0; int eiger_extgating = 0; @@ -333,7 +334,9 @@ void setupDetector() { setTimer(FRAME_PERIOD, DEFAULT_PERIOD); setDynamicRange(DEFAULT_DYNAMIC_RANGE); eiger_photonenergy = DEFAULT_PHOTON_ENERGY; - setReadOutFlags(DEFAULT_READOUT_FLAG); + setReadOutFlags(DEFAULT_READOUT_MODE); + setReadOutFlags(DEFAULT_READOUT_STOREINRAM_MODE); + setReadOutFlags(DEFAULT_READOUT_OVERFLOW32_MODE); setSpeed(CLOCK_DIVIDER, DEFAULT_CLK_SPEED);//clk_devider,half speed setIODelay(DEFAULT_IO_DELAY, DEFAULT_MOD_INDEX); setTiming(DEFAULT_TIMING_MODE); @@ -430,7 +433,24 @@ enum readOutFlags setReadOutFlags(enum readOutFlags val){ eiger_readoutmode = val; else return -1; - }else{ + } + + else if (val&0xF00000) { + switch(val){ + case SHOW_OVERFLOW: val=1; printf(" Setting Read out Flag: Overflow in 32 bit mode\n"); break; + case NOOVERFLOW: val=0; printf(" Setting Read out Flag: No overflow in 32 bit mode\n"); break; + default: + cprintf(RED,"Cannot set unknown readout flag. 0x%x\n", val); + return -1; + } + printf(" Setting Read out Flag: %d\n",val); + if(Beb_Set32bitOverflow(val) != -1) + eiger_overflow32 = val; + else return -1; + } + + + else{ switch(val){ case STORE_IN_RAM: val=1; printf(" Setting Read out Flag: Store in Ram\n"); break; case CONTINOUS_RO: val=0; printf(" Setting Read out Flag: Continuous Readout\n"); break; @@ -451,10 +471,19 @@ enum readOutFlags setReadOutFlags(enum readOutFlags val){ case E_SAFE: retval=SAFE; break; } + switch(eiger_overflow32){ + case 1: retval|=SHOW_OVERFLOW; break; + case 0: retval|=NOOVERFLOW; break; + } + + switch(eiger_storeinmem){ case 0: retval|=CONTINOUS_RO; break; case 1: retval|=STORE_IN_RAM; break; } + + + printf("Read out Flag: 0x%x\n",retval); return retval; } diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h index 8493a6f50..dfc9befc1 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h @@ -76,7 +76,10 @@ enum NETWORKINDEX {TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G}; #define DEFAULT_SUBFRAME_EXPOSURE (2621440) // 2.6ms #define DEFAULT_SUBFRAME_PERIOD (0) #define DEFAULT_DYNAMIC_RANGE (16) -#define DEFAULT_READOUT_FLAG (NONPARALLEL) + +#define DEFAULT_READOUT_MODE (NONPARALLEL) +#define DEFAULT_READOUT_STOREINRAM_MODE (CONTINOUS_RO) +#define DEFAULT_READOUT_OVERFLOW32_MODE (NOOVERFLOW) #define DEFAULT_CLK_SPEED (HALF_SPEED) #define DEFAULT_IO_DELAY (650) #define DEFAULT_TIMING_MODE (AUTO_TIMING) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 0b20090f5..5d70029a6 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -5440,17 +5440,7 @@ int slsDetector::sendROI(int n,ROI roiLimits[]){ -/* -enum readOutFlags { -NORMAL_READOUT, -setReadOutFlags(STORE_IN_RAM, -READ_HITS, -ZERO_COMPRESSION, -BACKGROUND_CORRECTION -}{}; - -*/ int slsDetector::setReadOutFlags(readOutFlags flag){ diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index cbf613149..c2c47af43 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -407,6 +407,15 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef } \ }; + void setOverflowMode(int value){ \ + if(value>=0){ \ + switch(value){ \ + case 1: setReadOutFlags(SHOW_OVERFLOW);break; \ + case 0: setReadOutFlags(NOOVERFLOW);break; \ + } \ + } \ + }; + /** get readout mode of detector (eiger specific) \returns 0 for nonparallel, 1 for parallel, 2 for safe @@ -417,6 +426,18 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef if (ret&PARALLEL) return 1; \ if (ret&SAFE) return 2; \ return -1; \ + } + + + /** + get readout overflow mode of detector (eiger specific) + \returns 1 for show overflow, 0 for do not show overflow + */ + int getOverflowMode(){ \ + int ret = setReadOutFlags(); \ + if (ret&SHOW_OVERFLOW) return 1; \ + if (ret&NOOVERFLOW) return 0; \ + return -1; \ } \ /** diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 3d12a864e..d925a5eae 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -414,7 +414,7 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { */ /*! \page config - - flags [flag] sets/gets the readout flags to mode. Options: none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, unknown. Used for MYTHEN and EIGER only. \c Returns \c (string). put takes one string and \c returns concatenation of all active flags separated by spaces. + - flags [flag] sets/gets the readout flags to mode. Options: none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, overflow, nooverflow, unknown. Used for MYTHEN and EIGER only. \c Returns \c (string). put takes one string and \c returns concatenation of all active flags separated by spaces. */ descrToFuncMap[i].m_pFuncName="flags"; descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdAdvanced; @@ -6016,6 +6016,10 @@ string slsDetectorCommand::cmdAdvanced(int narg, char *args[], int action) { flag=DIGITAL_ONLY; else if (sval=="analog_digital") flag=ANALOG_AND_DIGITAL; + else if (sval=="overflow") + flag=SHOW_OVERFLOW; + else if (sval=="nooverflow") + flag=NOOVERFLOW; else return string("could not scan flag ")+string(args[1]); } @@ -6044,6 +6048,10 @@ string slsDetectorCommand::cmdAdvanced(int narg, char *args[], int action) { strcat(answer,"digital " ); if (retval & ANALOG_AND_DIGITAL) strcat(answer,"analog_digital "); + if (retval & SHOW_OVERFLOW) + strcat(answer,"overflow "); + if (retval & NOOVERFLOW) + strcat(answer,"nooverflow "); if(strlen(answer)) return string(answer); @@ -6148,7 +6156,7 @@ string slsDetectorCommand::helpAdvanced(int narg, char *args[], int action) { if (action==PUT_ACTION || action==HELP_ACTION) { os << "extsig:i mode \t sets the mode of the external signal i. can be \n \t \t \t off, \n \t \t \t gate_in_active_high, \n \t \t \t gate_in_active_low, \n \t \t \t trigger_in_rising_edge, \n \t \t \t trigger_in_falling_edge, \n \t \t \t ro_trigger_in_rising_edge, \n \t \t \t ro_trigger_in_falling_edge, \n \t \t \t gate_out_active_high, \n \t \t \t gate_out_active_low, \n \t \t \t trigger_out_rising_edge, \n \t \t \t trigger_out_falling_edge, \n \t \t \t ro_trigger_out_rising_edge, \n \t \t \t ro_trigger_out_falling_edge" << std::endl; - os << "flags mode \t sets the readout flags to mode. can be none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, unknown" << std::endl; + os << "flags mode \t sets the readout flags to mode. can be none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, overlow, nooverflow, unknown." << std::endl; os << "programfpga f \t programs the fpga with file f (with .pof extension)." << std::endl; os << "resetfpga f \t resets fpga, f can be any value" << std::endl; @@ -6161,9 +6169,8 @@ string slsDetectorCommand::helpAdvanced(int narg, char *args[], int action) { os << "extsig:i \t gets the mode of the external signal i. can be \n \t \t \t off, \n \t \t \t gate_in_active_high, \n \t \t \t gate_in_active_low, \n \t \t \t trigger_in_rising_edge, \n \t \t \t trigger_in_falling_edge, \n \t \t \t ro_trigger_in_rising_edge, \n \t \t \t ro_trigger_in_falling_edge, \n \t \t \t gate_out_active_high, \n \t \t \t gate_out_active_low, \n \t \t \t trigger_out_rising_edge, \n \t \t \t trigger_out_falling_edge, \n \t \t \t ro_trigger_out_rising_edge, \n \t \t \t ro_trigger_out_falling_edge" << std::endl; - os << "flags \t gets the readout flags. can be none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, unknown" << std::endl; + os << "flags \t gets the readout flags. can be none, storeinram, tot, continous, parallel, nonparallel, safe, digital, analog_digital, overflow, nooverflow, unknown" << std::endl; os << "led \t returns led status (0 off, 1 on)" << std::endl; - os << "flags \t gets the readout flags. can be none, storeinram, tot, continous, parallel, nonparallel, safe, unknown" << std::endl; os << "powerchip \t gets if the chip has been powered on or off" << std::endl; os << "auto_comp_disable \t Currently not implemented. gets if the automatic comparator diable mode is enabled/disabled" << std::endl; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp index 66757b484..6e3f58e42 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp @@ -343,6 +343,12 @@ int slsDetectorUsers::setParallelMode(int value) { return myDetector->getParallelMode(); } +int slsDetectorUsers::setOverflowMode(int value) { + if(value >= 0) + myDetector->setOverflowMode(value); + return myDetector->getOverflowMode(); +} + int slsDetectorUsers::setAllTrimbits(int val, int id) { return myDetector->setAllTrimbits(val, id); } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index 6a5693f6b..bf1e980c9 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -612,6 +612,13 @@ class slsDetectorUsers */ int setParallelMode(int value); + /** + * @short show saturated for overflow in subframes in 32 bit mode (eiger only) + * \param value 0 for do not show saturatd, 1 for show saturated (-1 gets) + * \returns overflow mode enable in 32 bit mode + */ + int setOverflowMode(int value); + /** @short sets all trimbits to value (only available for eiger) \param val value to be set (-1 gets) diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index c716b3fac..cf91185a5 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -3102,6 +3102,8 @@ int set_readout_flags(int file_des) { case PARALLEL: case NONPARALLEL: case SAFE: + case SHOW_OVERFLOW: + case NOOVERFLOW: #endif retval=setReadOutFlags(arg); break;