mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17:59 +02:00
Readoutflags (#61)
* WIP * eiger binary back wih versioning * fixed readout flag in ctbgui, added speedLevel enum * ctbgui: fixed a print out error * ctb readout bug fix * WIP * WIP * WIP
This commit is contained in:
@ -3,13 +3,13 @@ main_inc = ../slsDetectorServer/include/
|
||||
main_src = ../slsDetectorServer/src/
|
||||
support_lib = ../../slsSupportLib/include/
|
||||
|
||||
CROSS = powerpc-4xx-softfloat-
|
||||
BLACKFIN_CC = bfin-uclinux-gcc
|
||||
CROSS = powerpc-4xx-softfloat-
|
||||
CC = $(CROSS)gcc
|
||||
CFLAGS += -Wall -DEIGERD -DSTOP_SERVER -I$(main_inc) -I$(support_lib) -I$(current_dir)#-DVERBOSEI #-DVERBOSE
|
||||
LDLIBS += -lm
|
||||
PROGS = eigerDetectorServer
|
||||
DESTDIR ?= bin
|
||||
DESTDIR = bin
|
||||
INSTMODE = 0777
|
||||
|
||||
SRCS = slsDetectorFunctionList.c HardwareIO.c LocalLinkInterface.c FebInterface.c FebControl.c Beb.c
|
||||
@ -17,7 +17,7 @@ SRCS += $(main_src)communication_funcs.c $(main_src)slsDetectorServer.c $(main_
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
all: clean versioning $(PROGS) #hv9m_blackfin_server
|
||||
all: clean versioning $(PROGS) #hv9m_blackfin_server
|
||||
|
||||
|
||||
boot: $(OBJS)
|
||||
|
Binary file not shown.
@ -56,7 +56,7 @@ int eiger_theo_highvoltage = 0;
|
||||
int eiger_iodelay = 0;
|
||||
int eiger_photonenergy = 0;
|
||||
int eiger_dynamicrange = 0;
|
||||
int eiger_readoutmode = 0;
|
||||
int eiger_parallelmode = 0;
|
||||
int eiger_storeinmem = 0;
|
||||
int eiger_overflow32 = 0;
|
||||
int eiger_readoutspeed = 0;
|
||||
@ -439,9 +439,9 @@ void setupDetector() {
|
||||
setTimer(CYCLES_NUMBER, DEFAULT_NUM_CYCLES);
|
||||
setDynamicRange(DEFAULT_DYNAMIC_RANGE);
|
||||
eiger_photonenergy = DEFAULT_PHOTON_ENERGY;
|
||||
setReadOutFlags(DEFAULT_READOUT_MODE);
|
||||
setReadOutFlags(DEFAULT_READOUT_STOREINRAM_MODE);
|
||||
setReadOutFlags(DEFAULT_READOUT_OVERFLOW32_MODE);
|
||||
setParallelMode(DEFAULT_PARALLEL_MODE);
|
||||
setOverFlowMode(DEFAULT_READOUT_STOREINRAM_MODE);
|
||||
setStoreInRamMode(DEFAULT_READOUT_OVERFLOW32_MODE);
|
||||
setSpeed(CLOCK_DIVIDER, DEFAULT_CLK_SPEED);//clk_devider,half speed
|
||||
setIODelay(DEFAULT_IO_DELAY);
|
||||
setTiming(DEFAULT_TIMING_MODE);
|
||||
@ -543,118 +543,45 @@ int getSpeed(enum speedVariable ind) {
|
||||
return eiger_readoutspeed;
|
||||
}
|
||||
|
||||
|
||||
enum readOutFlags setReadOutFlags(enum readOutFlags val) {
|
||||
|
||||
enum readOutFlags retval = GET_READOUT_FLAGS;
|
||||
if (val!=GET_READOUT_FLAGS) {
|
||||
|
||||
|
||||
if (val&0xF0000) {
|
||||
switch(val) {
|
||||
case PARALLEL:
|
||||
val=E_PARALLEL;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: Parallel\n"));
|
||||
break;
|
||||
case NONPARALLEL:
|
||||
val=E_NON_PARALLEL;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: Non Parallel\n"));
|
||||
break;
|
||||
default:
|
||||
FILE_LOG(logERROR, ("Cannot set unknown readout flag. 0x%x\n", val));
|
||||
return -1;
|
||||
}
|
||||
int setParallelMode(int mode) {
|
||||
mode = (mode == 0 ? E_NON_PARALLEL : E_PARALLEL);
|
||||
#ifndef VIRTUAL
|
||||
if (Feb_Control_SetReadoutMode(val))
|
||||
#endif
|
||||
eiger_readoutmode = val;
|
||||
#ifndef VIRTUAL
|
||||
else return -1;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
else if (val&0xF00000) {
|
||||
switch(val) {
|
||||
case SHOW_OVERFLOW:
|
||||
val=1;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: Overflow in 32 bit mode\n"));
|
||||
break;
|
||||
case NOOVERFLOW:
|
||||
val=0;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: No overflow in 32 bit mode\n"));
|
||||
break;
|
||||
default:
|
||||
FILE_LOG(logERROR, ("Cannot set unknown readout flag. 0x%x\n", val));
|
||||
return -1;
|
||||
}
|
||||
#ifndef VIRTUAL
|
||||
if (Beb_Set32bitOverflow(val) != -1)
|
||||
#endif
|
||||
eiger_overflow32 = val;
|
||||
#ifndef VIRTUAL
|
||||
else return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
switch(val) {
|
||||
case STORE_IN_RAM:
|
||||
val=1;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: Store in Ram\n"));
|
||||
break;
|
||||
case CONTINOUS_RO:
|
||||
val=0;
|
||||
FILE_LOG(logDEBUG1, ("Setting Read out Flag: Continuous Readout\n"));
|
||||
break;
|
||||
|
||||
default:
|
||||
FILE_LOG(logERROR, ("Cannot set unknown readout flag. 0x%x\n", val));
|
||||
return -1;
|
||||
}
|
||||
eiger_storeinmem = val;
|
||||
|
||||
}
|
||||
if (!Feb_Control_SetReadoutMode(mode)) {
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
switch(eiger_readoutmode) {
|
||||
case E_PARALLEL:
|
||||
retval=PARALLEL;
|
||||
break;
|
||||
case E_NON_PARALLEL:
|
||||
retval=NONPARALLEL;
|
||||
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;
|
||||
}
|
||||
|
||||
FILE_LOG(logDEBUG1, ("Read out Flag: 0x%x\n", retval));
|
||||
return retval;
|
||||
#endif
|
||||
eiger_parallelmode = mode;
|
||||
return OK;
|
||||
}
|
||||
|
||||
int getParallelMode() {
|
||||
return (eiger_parallelmode == E_PARALLEL ? 1 : 0);
|
||||
}
|
||||
|
||||
int setOverFlowMode(int mode) {
|
||||
mode = (mode == 0 ? 0 : 1);
|
||||
#ifndef VIRTUAL
|
||||
if (Beb_Set32bitOverflow(mode == 0 ? 0 : 1) == -1) {
|
||||
return FAIL;
|
||||
}
|
||||
#endif
|
||||
eiger_overflow32 = mode;
|
||||
return OK;
|
||||
}
|
||||
|
||||
int getOverFlowMode() {
|
||||
return eiger_overflow32;
|
||||
}
|
||||
|
||||
void setStoreInRamMode(int mode) {
|
||||
mode = (mode == 0 ? 0 : 1);
|
||||
FILE_LOG(logINFO, ("Setting Store in Ram mode to %d\n", mode));
|
||||
eiger_storeinmem = mode;
|
||||
}
|
||||
|
||||
|
||||
int getStoreInRamMode() {
|
||||
return eiger_storeinmem;
|
||||
}
|
||||
|
||||
|
||||
/* parameters - timer */
|
||||
|
@ -9,7 +9,6 @@
|
||||
#define STATUS_ERROR 2
|
||||
|
||||
/* Enums */
|
||||
enum CLK_SPEED_INDEX {FULL_SPEED, HALF_SPEED, QUARTER_SPEED};
|
||||
enum DACINDEX {SVP,VTR,VRF,VRS,SVN,VTGSTV,VCMP_LL,VCMP_LR,CAL,VCMP_RL,RXB_RB,RXB_LB,VCMP_RR,VCP,VCN,VIS,VTHRESHOLD};
|
||||
#define DEFAULT_DAC_VALS { \
|
||||
0, /* SvP */ \
|
||||
@ -31,7 +30,7 @@ enum DACINDEX {SVP,VTR,VRF,VRS,SVN,VTGSTV,VCMP_LL,VCMP_LR,CAL,VCMP_RL,RX
|
||||
};
|
||||
enum ADCINDEX {TEMP_FPGAEXT, TEMP_10GE, TEMP_DCDC, TEMP_SODL, TEMP_SODR, TEMP_FPGA, TEMP_FPGAFEBL, TEMP_FPGAFEBR};
|
||||
enum NETWORKINDEX {TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G};
|
||||
enum {E_PARALLEL, E_NON_PARALLEL, E_SAFE};
|
||||
enum {E_PARALLEL, E_NON_PARALLEL};
|
||||
|
||||
/* Hardware Definitions */
|
||||
#define NCHAN (256 * 256)
|
||||
@ -62,9 +61,9 @@ enum {E_PARALLEL, E_NON_PARALLEL, E_SAFE};
|
||||
#define DEFAULT_SUBFRAME_DEADTIME (0)
|
||||
#define DEFAULT_DYNAMIC_RANGE (16)
|
||||
|
||||
#define DEFAULT_READOUT_MODE (NONPARALLEL)
|
||||
#define DEFAULT_READOUT_STOREINRAM_MODE (CONTINOUS_RO)
|
||||
#define DEFAULT_READOUT_OVERFLOW32_MODE (NOOVERFLOW)
|
||||
#define DEFAULT_PARALLEL_MODE (0)
|
||||
#define DEFAULT_READOUT_STOREINRAM_MODE (0)
|
||||
#define DEFAULT_READOUT_OVERFLOW32_MODE (0)
|
||||
#define DEFAULT_CLK_SPEED (HALF_SPEED)
|
||||
#define DEFAULT_IO_DELAY (650)
|
||||
#define DEFAULT_TIMING_MODE (AUTO_TIMING)
|
||||
|
Reference in New Issue
Block a user