From 460ffe05493e8625de095f096da79bf23b2fbdc2 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Tue, 26 Feb 2013 08:34:35 +0000 Subject: [PATCH] trying changes git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@470 951219d9-93cf-4727-9268-0efd64621fa3 --- .../eigerDetectorServer/Makefile | 11 +-- .../eigerDetectorServer/communication_funcs.c | 10 +-- .../slsDetectorFunctionList.c | 20 ++--- .../slsDetectorServer_funcs.c | 81 +++++++++---------- .../slsDetector_firmware.c | 18 ++--- .../eigerDetectorServer/sls_detector_defs.h | 36 +++------ 6 files changed, 79 insertions(+), 97 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index c077dc4b4..fd04ecadd 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,13 +1,14 @@ -CC = powerpc-4xx-softfloat-gcc +CC = powerpc-4xx-softfloat-g++ CLAGS += -Wall -DDACS_INT -DSLS_DETECTOR_FUNCTION_LIST -DEIGERD #-DVIRTUAL -LDLIBS += -lm +LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer DESTDIR ?= bin INSTMODE = 0777 -SRC_CLNT = slsDetectorServer.c slsDetectorServer_funcs.c communication_funcs.c slsDetector_firmware.c slsDetectorFunctionList.c -OBJS = $(SRC_CLNT:.cpp=.o) +SRC_CLNT = slsDetectorServer.cpp +SRC_CLNTC = slsDetectorServer_funcs.c communication_funcs.c slsDetector_firmware.c slsDetectorFunctionList.c +OBJS = $(SRC_CLNT:.cpp=.o) $(SRC_CLNTC:%.c=%.o) @@ -18,7 +19,7 @@ boot: $(OBJS) $(PROGS): echo $(OBJS) mkdir -p $(DESTDIR) - $(CC) $(SRC_CLNT) $(CLAGS) $(LDLIBS) -o $@ + $(CC) $(CLAGS) $(SRC_CLNT) $(SRC_CLNTC) $(LDLIBS) -o $@ mv $(PROGS) $(DESTDIR) diff --git a/slsDetectorSoftware/eigerDetectorServer/communication_funcs.c b/slsDetectorSoftware/eigerDetectorServer/communication_funcs.c index d5098bd05..339021929 100755 --- a/slsDetectorSoftware/eigerDetectorServer/communication_funcs.c +++ b/slsDetectorSoftware/eigerDetectorServer/communication_funcs.c @@ -407,7 +407,7 @@ int receiveChip(int file_des, sls_detector_chip* myChip) { if (chdiff<=0) ts+=receiveDataOnly(file_des,myChip->chanregs, sizeof(int)*nChans); else { - ptr=malloc(chdiff*sizeof(int)); + ptr=(int *)malloc(chdiff*sizeof(int)); myChip->nchan=nchanold; ts+=receiveDataOnly(file_des,myChip->chanregs, sizeof(int)*nchanold); ts+=receiveDataOnly(file_des,ptr, sizeof(int)*chdiff); @@ -491,7 +491,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) { #endif } else { - dacptr=malloc(ndacdiff*sizeof(dacs_t)); + dacptr=(dacs_t *)malloc(ndacdiff*sizeof(dacs_t)); myMod->ndac=ndold; ts+=receiveDataOnly(file_des,myMod->dacs, sizeof(dacs_t)*ndold); ts+=receiveDataOnly(file_des,dacptr, sizeof(dacs_t)*ndacdiff); @@ -505,7 +505,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) { printf("adcs received\n"); #endif } else { - adcptr=malloc(nadcdiff*sizeof(dacs_t)); + adcptr=(dacs_t *)malloc(nadcdiff*sizeof(dacs_t)); myMod->nadc=naold; ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*naold); ts+=receiveDataOnly(file_des,adcptr, sizeof(dacs_t)*nadcdiff); @@ -519,7 +519,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) { printf("chips received\n"); #endif } else { - chipptr=malloc(nchipdiff*sizeof(int)); + chipptr=(int *)malloc(nchipdiff*sizeof(int)); myMod->nchip=nchipold; ts+=receiveDataOnly(file_des,myMod->chipregs, sizeof(int)*nchipold); ts+=receiveDataOnly(file_des,chipptr, sizeof(int)*nchipdiff); @@ -533,7 +533,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) { printf("chans received\n"); #endif } else { - chanptr=malloc(nchandiff*sizeof(int)); + chanptr=(int *)malloc(nchandiff*sizeof(int)); myMod->nchan=nchanold; ts+=receiveDataOnly(file_des,myMod->chanregs, sizeof(int)*nchanold); ts+=receiveDataOnly(file_des,chanptr, sizeof(int)*nchandiff); diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index ec8817edc..75fb8948f 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -41,11 +41,11 @@ int initializeDetector(){ #ifdef VERBOSE printf("Board is for %d modules\n",n); #endif - detectorModules=malloc(n*sizeof(sls_detector_module)); - detectorChips=malloc(n*NCHIP*sizeof(int)); - detectorChans=malloc(n*NCHIP*NCHAN*sizeof(int)); - detectorDacs=malloc(n*NDAC*sizeof(int)); - detectorAdcs=malloc(n*NADC*sizeof(int)); + detectorModules=(sls_detector_module *)malloc(n*sizeof(sls_detector_module)); + detectorChips=(int *)malloc(n*NCHIP*sizeof(int)); + detectorChans=(int *)malloc(n*NCHIP*NCHAN*sizeof(int)); + detectorDacs=(dacs_t *)malloc(n*NDAC*sizeof(int)); + detectorAdcs=(dacs_t *)malloc(n*NADC*sizeof(int)); #ifdef VERBOSE printf("modules from 0x%x to 0x%x\n",(unsigned int)(detectorModules), (unsigned int)(detectorModules+n)); printf("chips from 0x%x to 0x%x\n",(unsigned int)(detectorChips), (unsigned int)(detectorChips+n*NCHIP)); @@ -221,7 +221,7 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ //template setSettings() from mcb_funcs.c //reads the dac registers from fpga to confirm which settings, if weird, undefined - return OK; + return GET_SETTINGS; } int startStateMachine(){ @@ -324,7 +324,7 @@ int setSpeed(enum speedVariable arg, int val){ enum readOutFlags setReadOutFlags(enum readOutFlags val){ //template setStoreInRAM from firmware_funcs.c - return -1; + return GET_READOUT_FLAGS; } @@ -380,7 +380,7 @@ int getNumberOfADCsPerModule(){return 0;} enum externalSignalFlag getExtSignal(int signalindex){ //template getExtSignal from firmware_funcs.c //return signals[signalindex]; - return -1; + return GET_EXTERNAL_SIGNAL_FLAG; } @@ -448,7 +448,7 @@ enum externalCommunicationMode setTiming( enum externalCommunicationMode arg){ //if( flag=SIGNAL_OFF and signals[signalindex]==MASTER_SLAVE_SYNCHRONIZATION), return -1, (ensures masterslaveflag !=off now) //else return flag - int ret=GET_EXTERNAL_COMMUNICATION_MODE; + //int ret=(externalCommunicationMode)GET_EXTERNAL_COMMUNICATION_MODE; //sets timingmode variable //ensures that the signals are in acceptance with timing mode and according sets the timing mode /* @@ -551,7 +551,7 @@ enum externalCommunicationMode setTiming( enum externalCommunicationMode arg){ } */ - return ret; + return GET_EXTERNAL_COMMUNICATION_MODE; } diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c index 77fd36862..ec85a1c4d 100755 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c @@ -120,7 +120,7 @@ int decode_function(int file_des) { printf("size of data received %d\n",n); #endif //#ifdef VERBOSE - printf( "calling function fnum = %d %x\n",fnum,flist[fnum]); + printf( "calling function fnum = %d %x\n",fnum,(unsigned int)flist[fnum]); //#endif if (fnum<0 || fnum>255) fnum=255; @@ -289,7 +289,7 @@ int get_detector_type(int file_des) { n += sendDataOnly(file_des,&retval,sizeof(retval)); if (retval!=FAIL) { /* send return argument */ - ret=swap_int32(ret); + ret=(detectorType)swap_int32(ret); n += sendDataOnly(file_des,&ret,sizeof(ret)); } else { n += sendDataOnly(file_des,mess,sizeof(mess)); @@ -317,7 +317,7 @@ int set_number_of_modules(int file_des) { retval=GOODBYE; } if (retval==OK) { - dim=arg[0]; + dim=(dimension)arg[0]; nm=arg[1]; /* execute action */ @@ -428,7 +428,7 @@ int set_external_signal_flag(int file_des) { retval=SIGNAL_OFF; if (ret==OK) { signalindex=arg[0]; - flag=arg[1]; + flag=(externalSignalFlag)arg[1]; /* execute action */ switch (flag) { case GET_EXTERNAL_SIGNAL_FLAG: @@ -527,7 +527,7 @@ enum externalCommunicationMode{ printf("Setting external communication mode to %d\n", arg); #endif } else - ret=FAIL; + ret=(externalCommunicationMode)FAIL; /* send answer */ /* send OK/failed */ @@ -846,7 +846,7 @@ int set_dac(int file_des) { sprintf(mess,"Error reading from socket\n"); ret=FAIL; } - ind=arg[0]; + ind=(dacIndex)arg[0]; imod=arg[1]; n = receiveDataOnly(file_des,&val,sizeof(val)); @@ -949,7 +949,7 @@ int get_adc(int file_des) { sprintf(mess,"Error reading from socket\n"); ret=FAIL; } - ind=arg[0]; + ind=(dacIndex)arg[0]; imod=arg[1]; @@ -1166,7 +1166,7 @@ int set_chip(int file_des) { myChip.nchan=getNumberOfChannelsPerChip(); - ch=malloc((myChip.nchan)*sizeof(int)); + ch=(int *)malloc((myChip.nchan)*sizeof(int)); myChip.chanregs=ch; @@ -1236,7 +1236,7 @@ int get_chip(int file_des) { retval.nchan=getNumberOfChannelsPerChip(); - ch=malloc((retval.nchan)*sizeof(int)); + ch=(int *)malloc((retval.nchan)*sizeof(int)); retval.chanregs=ch; @@ -1291,10 +1291,10 @@ int get_chip(int file_des) { } int set_module(int file_des) { sls_detector_module myModule; - int *myChip=malloc(getNumberOfChipsPerModule()*sizeof(int)); - int *myChan=malloc(getNumberOfChannelsPerModule()*sizeof(int)); - int *myDac=malloc(getNumberOfDACsPerModule()*sizeof(int)); - int *myAdc=malloc(getNumberOfADCsPerModule()*sizeof(int)); + int *myChip=(int *)malloc(getNumberOfChipsPerModule()*sizeof(int)); + int *myChan=(int *)malloc(getNumberOfChannelsPerModule()*sizeof(int)); + int *myDac=(int *)malloc(getNumberOfDACsPerModule()*sizeof(int)); + int *myAdc=(int *)malloc(getNumberOfADCsPerModule()*sizeof(int)); int retval, n; int ret=OK; @@ -1395,10 +1395,10 @@ int get_module(int file_des) { sls_detector_module myModule; - int *myChip=malloc(getNumberOfChipsPerModule()*sizeof(int)); - int *myChan=malloc(getNumberOfChannelsPerModule()*sizeof(int)); - int *myDac=malloc(getNumberOfDACsPerModule()*sizeof(int)); - int *myAdc=malloc(getNumberOfADCsPerModule()*sizeof(int)); + int *myChip=(int *)malloc(getNumberOfChipsPerModule()*sizeof(int)); + int *myChan=(int *)malloc(getNumberOfChannelsPerModule()*sizeof(int)); + int *myDac=(int *)malloc(getNumberOfDACsPerModule()*sizeof(int)); + int *myAdc=(int *)malloc(getNumberOfADCsPerModule()*sizeof(int)); if (myDac) @@ -1551,7 +1551,7 @@ int set_threshold_energy(int file_des) { } ethr=arg[0]; imod=arg[1]; - isett=arg[2]; + isett=(detectorSettings)arg[2]; if (imod>=getTotalNumberOfModules()) { ret=FAIL; @@ -1614,7 +1614,7 @@ int set_settings(int file_des) { ret=FAIL; } imod=arg[1]; - isett=arg[0]; + isett=(detectorSettings)arg[0]; if (imod>=getTotalNumberOfModules()) { @@ -1630,7 +1630,7 @@ int set_settings(int file_des) { ret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); } else { - retval=setSettings(arg[0], imod); + retval=setSettings((detectorSettings)arg[0], imod); #ifdef VERBOSE printf("Settings changed to %d\n", isett); #endif @@ -1885,7 +1885,7 @@ int set_timer(int file_des) { sprintf(mess,"can't set timer\n"); n = receiveDataOnly(file_des,&ind,sizeof(ind)); - ind=swap_int32(ind); + ind=(timerIndex)swap_int32(ind); if (n < 0) { sprintf(mess,"Error reading from socket\n"); ret=FAIL; @@ -2430,11 +2430,10 @@ int set_port(int file_des) { int get_last_client_ip(int file_des) { int ret=OK; - int n; if (differentClients ) ret=FORCE_UPDATE; - n = sendDataOnly(file_des,&ret,sizeof(ret)); - n = sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); + sendDataOnly(file_des,&ret,sizeof(ret)); + sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); return ret; @@ -2451,34 +2450,34 @@ int send_update(int file_des) { int nm; - n = sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); + sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); nm=setNMod(-1,X); - n = sendDataOnly(file_des,&nm,sizeof(nm)); + sendDataOnly(file_des,&nm,sizeof(nm)); nm=setNMod(-1,Y); - n = sendDataOnly(file_des,&nm,sizeof(nm)); + sendDataOnly(file_des,&nm,sizeof(nm)); nm=setDynamicRange(-1); - n = sendDataOnly(file_des,&nm,sizeof(nm)); + sendDataOnly(file_des,&nm,sizeof(nm)); - n = sendDataOnly(file_des,&dataBytes,sizeof(dataBytes)); + sendDataOnly(file_des,&dataBytes,sizeof(dataBytes)); t=setSettings(GET_SETTINGS, -1); - n = sendDataOnly(file_des,&t,sizeof(t)); + sendDataOnly(file_des,&t,sizeof(t)); thr=getThresholdEnergy(-1); - n = sendDataOnly(file_des,&thr,sizeof(thr)); + sendDataOnly(file_des,&thr,sizeof(thr)); /*retval=setFrames(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setExposureTime(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setPeriod(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setDelay(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setGates(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setProbes(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); /*retval=setTrains(tns);*/ - n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + sendDataOnly(file_des,&retval,sizeof(int64_t)); if (lockStatus==0) { strcpy(lastClientIP,thisClientIP); @@ -2524,7 +2523,7 @@ int set_master(int file_des) { printf("setting master flags to %d\n",arg); #endif - if (differentClients==1 && lockStatus==1 && arg!=GET_READOUT_FLAGS) { + if (differentClients==1 && lockStatus==1 && (int)arg!=(int)GET_READOUT_FLAGS) { ret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); } else { @@ -2550,7 +2549,7 @@ int set_master(int file_des) { int set_synchronization(int file_des) { - enum synchronizationMode retval=GET_MASTER; + enum synchronizationMode retval=GET_SYNCHRONIZATION_MODE; enum synchronizationMode arg; int n; int ret=OK; @@ -2569,7 +2568,7 @@ int set_synchronization(int file_des) { printf("setting master flags to %d\n",arg); #endif - if (differentClients==1 && lockStatus==1 && arg!=GET_READOUT_FLAGS) { + if (differentClients==1 && lockStatus==1 && (int)arg!=(int)GET_READOUT_FLAGS) { ret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); } else { diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c index 1e7f52a2b..773c8343a 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c @@ -329,11 +329,11 @@ int64_t getFrames(){//return dummy; int64_t setExposureTime(int64_t value){ /* time is in ns */ if (value!=-1) - value*=(1E-9*CLK_FREQ); - return set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); + value*=(int64_t)(1E-9*CLK_FREQ); + return (int64_t)(set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ)); } int64_t getExposureTime(){ - return get64BitReg(GET_EXPTIME_LSB_REG, GET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); + return (int64_t)(get64BitReg(GET_EXPTIME_LSB_REG, GET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ)); } @@ -348,23 +348,23 @@ int64_t getGates(){ int64_t setPeriod(int64_t value){ /* time is in ns */ if (value!=-1) - value*=(1E-9*CLK_FREQ); - return set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); + value*=(int64_t)(1E-9*CLK_FREQ); + return (int64_t)(set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ)); } int64_t getPeriod(){ - return get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); + return (int64_t)(get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ)); } int64_t setDelay(int64_t value){ /* time is in ns */ if (value!=-1) { - value*=(1E-9*CLK_FREQ); + value*=(int64_t)(1E-9*CLK_FREQ); } - return set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); + return (int64_t)(set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-9*CLK_FREQ)); } int64_t getDelay(){ - return get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); + return (int64_t)(get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG)/(1E-9*CLK_FREQ)); } diff --git a/slsDetectorSoftware/eigerDetectorServer/sls_detector_defs.h b/slsDetectorSoftware/eigerDetectorServer/sls_detector_defs.h index 312fac39a..2e214d1e7 100755 --- a/slsDetectorSoftware/eigerDetectorServer/sls_detector_defs.h +++ b/slsDetectorSoftware/eigerDetectorServer/sls_detector_defs.h @@ -1,6 +1,7 @@ #ifndef SLS_DETECTOR_DEFS_H #define SLS_DETECTOR_DEFS_H + #ifdef __CINT__ #define MYROOT #define __cplusplus @@ -19,6 +20,9 @@ /** header length for data :gotthard*/ #define HEADERLENGTH 12 +/** maximum rois */ +#define MAX_ROIS 100 + typedef double double32_t; typedef float float32_t; typedef int int32_t; @@ -35,6 +39,9 @@ typedef float dacs_t; #define DEFAULT_DET_MAC "00:aa:bb:cc:dd:ee" #define DEFAULT_DET_IP "129.129.202.46" +#define MAX_FRAMES_PER_FILE 20000 +#define SHORT_MAX_FRAMES_PER_FILE 100000 + /** \file sls_detector_defs.h This file contains all the basic definitions common to the slsDetector class @@ -45,7 +52,7 @@ and to the server programs running on the detector * @version 0.1alpha (any string) * @see slsDetector -$Revision: 434 $ +$Revision: 464 $ */ @@ -53,16 +60,6 @@ $Revision: 434 $ /** get flag form most functions */ #define GET_FLAG -1 -#ifdef __cplusplus - -/** @short class containing all the structures, constants and enum definitions */ -class slsDetectorDefs { - - public: - - slsDetectorDefs(){}; - -#endif enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, enCalLog, angCalLog, MAX_ACTIONS}; @@ -517,13 +514,6 @@ enum angleConversionParameter { -/** Error flags */ -#define NUM_ERROR_FLAGS=32 -#define CANNOT_CONNECT_TO_DETECTOR 0x80000000 -#define CANNOT_CONNECT_TO_RECEIVER 0x40000000 -#define COULD_NOT_CONFIGURE_MAC 0x00008000 //cant seem to get this error - - //typedef struct { //float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */ //float ecenter; /**< error in the center determination */ @@ -536,19 +526,11 @@ enum angleConversionParameter { //} angleConversionConstant; -#ifdef __cplusplus - protected: -#endif - - #ifndef MYROOT #include "sls_detector_funcs.h" #endif - -#ifdef __cplusplus -}; -#endif + ; #endif ;