From bc61fd48834ed3006e1e68eda85b4a5e031efc99 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Thu, 21 Feb 2013 15:53:07 +0000 Subject: [PATCH] included setroi for multidet git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@463 951219d9-93cf-4727-9268-0efd64621fa3 --- .../gotthardDetectorServer/firmware_funcs.c | 86 +++++++-------- .../gotthardDetectorServer/firmware_funcs.h | 4 +- .../gotthardDetectorServer/mcb_funcs.c | 69 ++++++++++++ .../gotthardDetectorServer/mcb_funcs.h | 3 + .../gotthardDetectorServer/registers_g.h | 1 + .../gotthardDetectorServer/server_defs.h | 8 ++ .../gotthardDetectorServer/server_funcs.c | 101 +++++++++++++----- .../gotthardDetectorServer/server_funcs.h | 2 + 8 files changed, 198 insertions(+), 76 deletions(-) diff --git a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c index af209684d..e7c178583 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c @@ -39,7 +39,9 @@ int ram_size=0; int64_t totalTime=1; u_int32_t progressMask=0; -int phase_shift=120; +int phase_shift=DEFAULT_PHASE_SHIFT; +int ipPacketSize=DEFAULT_IP_PACKETSIZE; +int udpPacketSize=DEFAULT_UDP_PACKETSIZE; int ififostart, ififostop, ififostep, ififo; @@ -282,14 +284,14 @@ int cleanFifo(){ } -int setDAQRegister(int adcval) +int setDAQRegister() { u_int32_t addr, reg, val; addr=DAQ_REG; //depended on adcval int packetlength=0x7f; - if(adcval==-1) packetlength=0x13f; + if(!ROI_flag) packetlength=0x13f; //depended on pcb rev int tokenTiming = TOKEN_TIMING_REV2; @@ -1190,57 +1192,50 @@ int initConfGain(int isettings,int val,int imod){ int setADC(int adc){ - int reg; + int reg,nchips,mask; + if(adc==-1) ROI_flag=0; + else ROI_flag=1; + + setDAQRegister();//token timing + cleanFifo();//adc sync + + //all adc if(adc==-1){ - reg = (NCHAN*NCHIP)<=0){ + + //clear rois + for(i=0;i=0) && (adc<=4)); + else { + printf("warning:adc value greater than 5. deleting roi\n"); + adc=-1; + } + } + } + + + //set rois for just 1 adc - take only 1st roi + if(adc!=-1){ + rois[0].xmin=adc*(NCHAN*NCHIPS_PER_ADC); + rois[0].xmax=(adc+1)*(NCHAN*NCHIPS_PER_ADC); + rois[0].ymin=-1; + rois[0].ymax=-1; + nROI = 1; + }else + nROI = 0; + + if((arg[0].xmin!=rois[0].xmin)||(arg[0].xmax!=rois[0].xmax)||(arg[0].ymin!=rois[0].ymin)||(arg[0].ymax!=rois[0].ymax)) + *ret=FAIL; + if(n!=nROI) + *ret=FAIL; + + //set adc of interest + setADC(adc); + } + +//#ifdef VERBOSE + printf("Rois:\n"); + for( i=0;i=getNModBoard()) @@ -2541,7 +2584,7 @@ int configure_mac(int file_des) { imod=ALLMOD; //#ifdef VERBOSE - printf("Configuring MAC of module %d and adc %d at port %x\n", imod, adc,udpport); + printf("Configuring MAC of module %d at port %x\n", imod, udpport); //#endif #ifdef MCB_FUNCS if (ret==OK){ @@ -2552,7 +2595,7 @@ int configure_mac(int file_des) { } if(ret==OK) - configureMAC(ipad,imacadd,idetectormacadd,detipad,digitalTestBit,adc,udpport); + configureMAC(ipad,imacadd,idetectormacadd,detipad,digitalTestBit,udpport); retval=getAdcConfigured(); } #endif @@ -2845,7 +2888,7 @@ int start_receiver(int file_des) { /* execute action if the arguments correctly arrived*/ #ifdef MCB_FUNCS if (lockStatus==1 && differentClients==1){//necessary??? - sprintf(mess,"Receiver locked by %s\n", lastClientIP); + sprintf(mess,"Detector locked by %s\n", lastClientIP); ret=FAIL; } else @@ -2881,7 +2924,7 @@ int stop_receiver(int file_des) { /* execute action if the arguments correctly arrived*/ #ifdef MCB_FUNCS if (lockStatus==1 && differentClients==1){//necessary??? - sprintf(mess,"Receiver locked by %s\n", lastClientIP); + sprintf(mess,"Detector locked by %s\n", lastClientIP); ret=FAIL; } else @@ -2946,3 +2989,5 @@ int calibrate_pedestal(int file_des){ /*return ok/fail*/ return ret; } + + diff --git a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h index cd43ec862..7dc8da6ea 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h +++ b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h @@ -93,4 +93,6 @@ int stop_receiver(int); int calibrate_pedestal(int); +int set_roi(int); + #endif