mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 06:50:02 +02:00
included propix for client
This commit is contained in:
parent
74fc443db5
commit
a8fc34c92b
48
slsDetectorSoftware/gotthardDetectorServer/Makefile.propix
Executable file
48
slsDetectorSoftware/gotthardDetectorServer/Makefile.propix
Executable file
@ -0,0 +1,48 @@
|
||||
# $Id: Makefile,v 1.1.1.1 2006/02/04 03:35:01 freza Exp $
|
||||
# first compile
|
||||
# make cris-axis-linux-gnu
|
||||
|
||||
|
||||
CROSS = bfin-uclinux-
|
||||
CC = $(CROSS)gcc
|
||||
|
||||
CFLAGS += -Wall -DGOTTHARDD -DPROPIXD -DMCB_FUNCS -DDACS_INT -DDEBUG # -DVERBOSE #-DVERYVERBOSE #-DVIRTUAL #-DDACS_INT_CSERVER
|
||||
|
||||
|
||||
PROGS= propixDetectorServer
|
||||
INSTDIR= /tftpboot
|
||||
INSTMODE= 0777
|
||||
|
||||
|
||||
|
||||
BINS = testlib_sharedlibc
|
||||
SRCS = server.c server_funcs.c communication_funcs.c firmware_funcs.c mcb_funcs.c trimming_funcs.c sharedmemory.c
|
||||
OBJS = $(SRCS:%.c=%.o)
|
||||
|
||||
|
||||
|
||||
all: clean $(PROGS)
|
||||
|
||||
boot: $(OBJS)
|
||||
|
||||
$(PROGS): $(OBJS)
|
||||
echo $(OBJS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@)
|
||||
|
||||
|
||||
install: $(PROGS)
|
||||
$(INSTALL) -d $(INSTDIR)
|
||||
$(INSTALL) -m $(INSTMODE) $(PROGS) $(INSTDIR)
|
||||
|
||||
|
||||
romfs:
|
||||
$(ROMFSINST) /bin/$(PROGS)
|
||||
|
||||
clean:
|
||||
rm -rf $(PROGS) *.o *.gdb
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -20,6 +20,8 @@ int (*flist[256])(int);
|
||||
//defined in the detector specific file
|
||||
#ifdef MYTHEND
|
||||
const enum detectorType myDetectorType=MYTHEN;
|
||||
#elif PROPIXD
|
||||
const enum detectorType myDetectorType=PROPIX;
|
||||
#elif GOTTHARDD
|
||||
const enum detectorType myDetectorType=GOTTHARD;
|
||||
#elif EIGERD
|
||||
@ -67,8 +69,12 @@ int init_detector( int b) {
|
||||
}
|
||||
|
||||
if (b) {
|
||||
printf("***This is a GOTTHARD detector with %d chips per module***\n", NCHIP);
|
||||
printf("\nBoard Revision:0x%x\n",(bus_r(PCB_REV_REG)&BOARD_REVISION_MASK));
|
||||
#ifdef PROPIXD
|
||||
printf("***This is a PROPIX detector***\n");
|
||||
#else
|
||||
printf("***This is a GOTTHARD detector with %d chips per module***\n", NCHIP);
|
||||
#endif
|
||||
printf("\nBoard Revision:0x%x\n",(bus_r(PCB_REV_REG)&BOARD_REVISION_MASK));
|
||||
#ifdef MCB_FUNCS
|
||||
initDetector();
|
||||
printf("Initializing Detector\n");
|
||||
@ -1582,7 +1588,12 @@ int get_threshold_energy(int file_des) {
|
||||
int n;
|
||||
int imod;
|
||||
|
||||
#ifdef PROPIXD
|
||||
strcpy(mess,"cannot get threshold for propix");
|
||||
#else
|
||||
strcpy(mess,"cannot get threshold for gotthard");
|
||||
#endif
|
||||
|
||||
|
||||
n = receiveDataOnly(file_des,&imod,sizeof(imod));
|
||||
if (n < 0)
|
||||
@ -1603,7 +1614,12 @@ int set_threshold_energy(int file_des) {
|
||||
int arg[3];
|
||||
int n;
|
||||
|
||||
#ifdef PROPIXD
|
||||
strcpy(mess,"cannot set threshold for propix");
|
||||
#else
|
||||
strcpy(mess,"cannot set threshold for gotthard");
|
||||
#endif
|
||||
|
||||
|
||||
n = receiveDataOnly(file_des,&arg,sizeof(arg));
|
||||
if (n < 0)
|
||||
@ -2066,7 +2082,12 @@ int set_timer(int file_des) {
|
||||
retval=setGates(tns);
|
||||
break;
|
||||
case PROBES_NUMBER:
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't set/get number of probes for propix\n");
|
||||
#else
|
||||
sprintf(mess,"can't set/get number of probes for gotthard\n");
|
||||
#endif
|
||||
|
||||
ret=FAIL;
|
||||
break;
|
||||
case CYCLES_NUMBER:
|
||||
@ -2268,35 +2289,41 @@ int set_roi(int file_des) {
|
||||
ret=FAIL;
|
||||
}
|
||||
|
||||
if(nroi!=-1){
|
||||
n = receiveDataOnly(file_des,arg,nroi*sizeof(ROI));
|
||||
if (n != (nroi*sizeof(ROI))) {
|
||||
sprintf(mess,"Received wrong number of bytes for ROI\n");
|
||||
ret=FAIL;
|
||||
}
|
||||
//#ifdef VERBOSE
|
||||
printf("Setting ROI to:");
|
||||
for( i=0;i<nroi;i++)
|
||||
printf("%d\t%d\t%d\t%d\n",arg[i].xmin,arg[i].xmax,arg[i].ymin,arg[i].ymax);
|
||||
//#endif
|
||||
}
|
||||
/* execute action if the arguments correctly arrived*/
|
||||
#ifdef MCB_FUNCS
|
||||
if (lockStatus==1 && differentClients==1){//necessary???
|
||||
sprintf(mess,"Detector locked by %s\n", lastClientIP);
|
||||
ret=FAIL;
|
||||
}
|
||||
else{
|
||||
retval=setROI(nroi,arg,&retvalsize,&ret);
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't set roi for propix\n");
|
||||
ret = FAIL;
|
||||
#endif
|
||||
if(ret != FAIL){
|
||||
if(nroi!=-1){
|
||||
n = receiveDataOnly(file_des,arg,nroi*sizeof(ROI));
|
||||
if (n != (nroi*sizeof(ROI))) {
|
||||
sprintf(mess,"Received wrong number of bytes for ROI\n");
|
||||
ret=FAIL;
|
||||
}
|
||||
//#ifdef VERBOSE
|
||||
printf("Setting ROI to:");
|
||||
for( i=0;i<nroi;i++)
|
||||
printf("%d\t%d\t%d\t%d\n",arg[i].xmin,arg[i].xmax,arg[i].ymin,arg[i].ymax);
|
||||
//#endif
|
||||
}
|
||||
/* execute action if the arguments correctly arrived*/
|
||||
|
||||
if (ret==FAIL){
|
||||
printf("mess:%s\n",mess);
|
||||
sprintf(mess,"Could not set all roi, should have set %d rois, but only set %d rois\n",nroi,retvalsize);
|
||||
}
|
||||
}
|
||||
#ifdef MCB_FUNCS
|
||||
if (lockStatus==1 && differentClients==1){//necessary???
|
||||
sprintf(mess,"Detector locked by %s\n", lastClientIP);
|
||||
ret=FAIL;
|
||||
}
|
||||
else{
|
||||
retval=setROI(nroi,arg,&retvalsize,&ret);
|
||||
|
||||
if (ret==FAIL){
|
||||
printf("mess:%s\n",mess);
|
||||
sprintf(mess,"Could not set all roi, should have set %d rois, but only set %d rois\n",nroi,retvalsize);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
if(ret==OK && differentClients){
|
||||
printf("Force update\n");
|
||||
@ -2330,7 +2357,12 @@ int set_speed(int file_des) {
|
||||
receiveDataOnly(file_des,&arg,sizeof(arg));
|
||||
receiveDataOnly(file_des,&val,sizeof(val));
|
||||
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't set speed variable for propix\n");
|
||||
#else
|
||||
sprintf(mess,"can't set speed variable for gotthard\n");
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
sendDataOnly(file_des,&ret,sizeof(ret));
|
||||
@ -2350,7 +2382,11 @@ int set_readout_flags(int file_des) {
|
||||
|
||||
receiveDataOnly(file_des,&arg,sizeof(arg));
|
||||
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't set readout flags for propix\n");
|
||||
#else
|
||||
sprintf(mess,"can't set readout flags for gotthard\n");
|
||||
#endif
|
||||
|
||||
sendDataOnly(file_des,&ret,sizeof(ret));
|
||||
sendDataOnly(file_des,mess,sizeof(mess));
|
||||
@ -2368,7 +2404,12 @@ int execute_trimming(int file_des) {
|
||||
int ret=FAIL;
|
||||
enum trimMode mode;
|
||||
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't set execute trimming for propix\n");
|
||||
#else
|
||||
sprintf(mess,"can't set execute trimming for gotthard\n");
|
||||
#endif
|
||||
|
||||
|
||||
receiveDataOnly(file_des,&mode,sizeof(mode));
|
||||
receiveDataOnly(file_des,arg,sizeof(arg));
|
||||
@ -2655,6 +2696,11 @@ int load_image(int file_des) {
|
||||
ret=FAIL;
|
||||
}
|
||||
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't load image for propix\n");
|
||||
ret = FAIL;
|
||||
#endif
|
||||
|
||||
switch (index) {
|
||||
case DARK_IMAGE :
|
||||
#ifdef VERBOSE
|
||||
@ -2814,6 +2860,12 @@ int read_counter_block(int file_des) {
|
||||
ret=FAIL;
|
||||
}
|
||||
|
||||
|
||||
#ifdef PROPIXD
|
||||
sprintf(mess,"can't read counter block for propix\n");
|
||||
ret = FAIL;
|
||||
#endif
|
||||
|
||||
if (ret==OK) {
|
||||
if (differentClients==1 && lockStatus==1) {
|
||||
ret=FAIL;
|
||||
|
@ -44,6 +44,12 @@ int slsDetector::initSharedMemory(detectorType type, int id) {
|
||||
nc=10;
|
||||
nd=13; // dacs+adcs
|
||||
break;
|
||||
case PROPIX:
|
||||
nch=22*22;
|
||||
nm=1;
|
||||
nc=1;
|
||||
nd=13; // dacs+adcs
|
||||
break;
|
||||
case EIGER:
|
||||
nch=256*256; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
@ -553,6 +559,17 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
thisDetector->nModMax[Y]=1;
|
||||
thisDetector->dynamicRange=16;
|
||||
break;
|
||||
case PROPIX:
|
||||
thisDetector->nChan[X]=22;
|
||||
thisDetector->nChan[Y]=22;
|
||||
thisDetector->nChip[X]=1;
|
||||
thisDetector->nChip[Y]=1;
|
||||
thisDetector->nDacs=8;
|
||||
thisDetector->nAdcs=5;
|
||||
thisDetector->nModMax[X]=1;
|
||||
thisDetector->nModMax[Y]=1;
|
||||
thisDetector->dynamicRange=16;
|
||||
break;
|
||||
case MOENCH:
|
||||
thisDetector->nChan[X]=160;
|
||||
thisDetector->nChan[Y]=160;
|
||||
@ -775,7 +792,7 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
fileName=parentDet->fileName;
|
||||
fileIndex=parentDet->fileIndex;
|
||||
framesPerFile=parentDet->framesPerFile;
|
||||
if(thisDetector->myDetectorType==GOTTHARD)
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==PROPIX))
|
||||
setFramesPerFile(MAX_FRAMES_PER_FILE);
|
||||
if (thisDetector->myDetectorType==MOENCH)
|
||||
setFramesPerFile(MOENCH_MAX_FRAMES_PER_FILE);
|
||||
@ -881,6 +898,13 @@ slsDetectorDefs::sls_detector_module* slsDetector::createModule(detectorType t)
|
||||
nd=8; // dacs+adcs
|
||||
na=5;
|
||||
break;
|
||||
case PROPIX:
|
||||
nch=22*22;
|
||||
nm=1;
|
||||
nc=1;
|
||||
nd=8; // dacs+adcs
|
||||
na=5;
|
||||
break;
|
||||
case EIGER:
|
||||
nch=256*256; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
@ -2952,6 +2976,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
case HIGHGAIN:
|
||||
if ( (thisDetector->myDetectorType == MYTHEN) ||
|
||||
(thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH) ||
|
||||
(thisDetector->myDetectorType == EIGER)) {
|
||||
ssettings="/highgain";
|
||||
@ -2960,6 +2985,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case DYNAMICGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/dynamicgain";
|
||||
thisDetector->currentSettings=DYNAMICGAIN;
|
||||
@ -2967,6 +2993,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case LOWGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/lowgain";
|
||||
thisDetector->currentSettings=LOWGAIN;
|
||||
@ -2974,6 +3001,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case MEDIUMGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/mediumgain";
|
||||
thisDetector->currentSettings=MEDIUMGAIN;
|
||||
@ -2981,6 +3009,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case VERYHIGHGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/veryhighgain";
|
||||
thisDetector->currentSettings=VERYHIGHGAIN;
|
||||
@ -3025,6 +3054,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case MOENCH:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
case JUNGFRAUCTB:
|
||||
//settings is saved in myMod.reg
|
||||
myMod->reg=thisDetector->currentSettings;
|
||||
@ -3055,6 +3085,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
switch(thisDetector->myDetectorType){
|
||||
case MOENCH:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
case JUNGFRAUCTB:
|
||||
ostfn << thisDetector->settingsDir << ssettings << ssettings << ".settings";
|
||||
break;
|
||||
@ -3168,7 +3199,9 @@ int slsDetector::updateDetectorNoWait() {
|
||||
n = controlSocket->ReceiveDataOnly( &t,sizeof(t));
|
||||
thisDetector->currentSettings=t;
|
||||
|
||||
if((thisDetector->myDetectorType!= GOTTHARD)&&(thisDetector->myDetectorType!= MOENCH)){
|
||||
if((thisDetector->myDetectorType!= GOTTHARD)&&
|
||||
(thisDetector->myDetectorType!= PROPIX)&&
|
||||
(thisDetector->myDetectorType!= MOENCH)){
|
||||
//thr=getThresholdEnergy();
|
||||
n = controlSocket->ReceiveDataOnly( &thr,sizeof(thr));
|
||||
thisDetector->currentThresholdEV=thr;
|
||||
@ -3640,7 +3673,9 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t){
|
||||
//std::cout<< "offline " << std::endl;
|
||||
if (t>=0)
|
||||
thisDetector->timerValue[index]=t;
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==MOENCH))
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||
|
||||
(thisDetector->myDetectorType==PROPIX)||
|
||||
(thisDetector->myDetectorType==MOENCH))
|
||||
thisDetector->timerValue[PROBES_NUMBER]=0;
|
||||
}
|
||||
} else {
|
||||
@ -5722,7 +5757,9 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
|
||||
// "trimen",
|
||||
// "receiverTCPPort",
|
||||
|
||||
if ((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==MOENCH)) {
|
||||
if ((thisDetector->myDetectorType==GOTTHARD)||
|
||||
(thisDetector->myDetectorType==PROPIX)||
|
||||
(thisDetector->myDetectorType==MOENCH)) {
|
||||
names[0]= "hostname";
|
||||
names[1]= "port";
|
||||
names[2]= "stopport";
|
||||
|
@ -534,6 +534,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
case MOENCH: return string("Moench"); \
|
||||
case JUNGFRAU: return string("Jungfrau"); \
|
||||
case JUNGFRAUCTB: return string("JungfrauCTB"); \
|
||||
case PROPIX: return string("Propix"); \
|
||||
default: return string("Unknown"); \
|
||||
}};
|
||||
|
||||
@ -550,6 +551,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
if (type=="Moench") return MOENCH; \
|
||||
if (type=="Jungfrau") return JUNGFRAU; \
|
||||
if (type=="JungfrauCTB") return JUNGFRAUCTB; \
|
||||
if (type=="Propix") return PROPIX; \
|
||||
return GENERIC;};
|
||||
|
||||
|
||||
|
@ -811,6 +811,7 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
names[nvar++]="ratecorr";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
@ -894,6 +895,7 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
case EIGER:
|
||||
case MYTHEN:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
break;
|
||||
|
@ -111,6 +111,7 @@ slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string
|
||||
names[id++]="Vdac7";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[id++]="Vref";
|
||||
names[id++]="VcascN";
|
||||
names[id++]="VcascP";
|
||||
@ -265,6 +266,7 @@ slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string
|
||||
|
||||
case MOENCH:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
//---------------dacs---------------
|
||||
infile.open(myfname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
@ -352,6 +354,7 @@ int energyConversion::writeSettingsFile(string fname, detectorType myDetectorTyp
|
||||
names[id++]="Vdac7";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[id++]="Vref";
|
||||
names[id++]="VcascN";
|
||||
names[id++]="VcascP";
|
||||
|
Loading…
x
Reference in New Issue
Block a user