From 410725784cbf52d9a3604d6c8f368545c016c2f4 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Fri, 23 Mar 2012 11:13:42 +0000 Subject: [PATCH] got rid of many warnings and load darkimage and reset/read counter works now git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@158 951219d9-93cf-4727-9268-0efd64621fa3 --- .../gotthardDetectorServer/Makefile | 2 +- .../gotthardDetectorServer/firmware_funcs.c | 237 +++++++++++++--- .../gotthardDetectorServer/firmware_funcs.h | 10 +- .../gotthardDetectorServer/mcb_funcs.c | 57 ++-- .../gotthardDetectorServer/registers_g.h | 12 +- .../gotthardDetectorServer/server_funcs.c | 266 ++++++++++++------ .../gotthardDetectorServer/server_funcs.h | 2 + 7 files changed, 426 insertions(+), 160 deletions(-) diff --git a/slsDetectorSoftware/gotthardDetectorServer/Makefile b/slsDetectorSoftware/gotthardDetectorServer/Makefile index 0f0214754..4b0bc3ab5 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/Makefile +++ b/slsDetectorSoftware/gotthardDetectorServer/Makefile @@ -5,7 +5,7 @@ CROSS = bfin-uclinux- CC = $(CROSS)gcc -CFLAGS += -Wall -DMCB_FUNCS -DVERBOSE #-DVERYVERBOSE #-DVIRTUAL +CFLAGS += -Wall -DMCB_FUNCS -DVERBOSE -DVERYVERBOSE #-DVIRTUAL PROGS= gotthardDetectorServer diff --git a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c index d47a48b1d..f47a2b362 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c @@ -21,7 +21,7 @@ FILE *debugfp, *datafp; int fr; int wait_time; int *fifocntrl; -volatile const u_int16_t *values; + //int *statusreg; commented out by dhanya const int nModY=1; int nModBoard; @@ -29,8 +29,10 @@ int nModX=NMAXMOD; int dynamicRange=16;//32; int dataBytes=NMAXMOD*NCHIP*NCHAN*2; int storeInRAM=0; -volatile u_int32_t *ram_values=NULL; + +u_int32_t *ram_values=NULL; volatile char *now_ptr=NULL; +volatile u_int16_t *values; int ram_size=0; int64_t totalTime=1; @@ -48,8 +50,8 @@ enum externalSignalFlag signals[4]={EXT_SIG_OFF, EXT_SIG_OFF, EXT_SIG_OFF, EXT_ #ifdef MCB_FUNCS extern const int nChans; extern const int nChips; -extern const int nDacs; -extern const int nAdcs; +//extern const int nDacs; +//extern const int nAdcs; #endif #ifndef MCB_FUNCS @@ -60,7 +62,7 @@ const int nAdcs=NADC; #endif -int dacVals[NDAC]; + /** ENEt conf structs @@ -216,7 +218,7 @@ u_int32_t bus_r(u_int32_t offset) { int setPhaseShiftOnce(){ u_int32_t addr, reg; - int result=OK, i,val; + int result=OK, i; addr=MULTI_PURPOSE_REG; reg=bus_r(addr); #ifdef VERBOSE @@ -232,7 +234,7 @@ int setPhaseShiftOnce(){ //phase shift for (i=1;i0 && n<=ntot) { nModX=n; - /*d isable the fifos relative to the unused modules */ + //d isable the fifos relative to the unused modules for (ififo=0; ififo=0) { setCSregister(ALLMOD); @@ -1078,6 +1085,8 @@ int64_t setProgress() { //????? eventually call after setting the registers +return 0; + } @@ -1086,6 +1095,7 @@ int64_t getProgress() { //should be done in firmware!!!! + return 0; } @@ -1120,11 +1130,16 @@ int loadImage(int index, short int ImageVals[]){ } volatile u_int16_t *ptr; ptr=(u_int16_t*)(CSP0BASE+address*2); - memcpy(ptr,ImageVals ,2560); #ifdef VERBOSE - printf("Loaded x%08x address with image of index %d\n",ptr,index); + int i; + for(i=0;i<6;i++) + printf("%d:%d\t",i,ImageVals[i]); #endif - return 0; + memcpy(ptr,ImageVals ,dataBytes); +#ifdef VERBOSE + printf("\nLoaded x%08x address with image of index %d\n",(unsigned int)(ptr),index); +#endif + return OK; } @@ -1177,7 +1192,6 @@ int setDACRegister(int idac, int val, int imod) { mask=~((0x3ff)<=0 && valip.ip_chksum = checksum; //#ifdef VERBOSE - printf("IP header checksum is 0x%x s\n",checksum); + printf("IP header checksum is 0x%x s\n",(unsigned int)(checksum)); //#endif mac_conf_regs->udp.udp_srcport = 0xE185; @@ -1533,12 +1547,15 @@ u_int32_t startStateMachine(){ write_stop_sm(0); write_status_sm("Started"); #endif +/* #ifdef MCB_FUNCS - // setCSregister(ALLMOD); + setCSregister(ALLMOD); clearSSregister(ALLMOD); #endif - putout("0000000000000000",ALLMOD); +*/ + //putout("0000000000000000",ALLMOD); bus_w(CONTROL_REG, START_ACQ_BIT | START_EXPOSURE_BIT); + bus_w(CONTROL_REG, 0x0); return OK; } @@ -1555,6 +1572,7 @@ u_int32_t stopStateMachine(){ write_status_sm("Stopped"); #endif bus_w(CONTROL_REG, STOP_ACQ_BIT); + bus_w(CONTROL_REG, 0x0); usleep(500); // if (!runBusy()) if(!(bus_r(STATUS_REG)&RUNMACHINE_BUSY_BIT)) @@ -1574,6 +1592,7 @@ u_int32_t startReadOut(){ printf("State machine status is %08x\n",bus_r(STATUS_REG)); #endif bus_w(CONTROL_REG, START_ACQ_BIT |START_READOUT_BIT); // start readout + bus_w(CONTROL_REG, 0x0); return OK; } @@ -1620,6 +1639,7 @@ u_int32_t fifoReadCounter(int fifonum) break; default: shiftfifo=SHIFTFIFO; + break; } rval=bus_r(FIFO_COUNTR_REG_OFF+(fifonum<module>=0) { @@ -480,7 +480,7 @@ int program_one_dac(int addr, int value, int imod) { if (imod>=0 && imod=0) @@ -604,7 +604,7 @@ int getThresholdEnergy() { float g[3]=DEFAULTGAIN; float o[3]=DEFAULTOFFSET; float myg=-1, myo=-1; - int dacu; + // int dacu; int imod; int ethr=-1; int ret=FAIL; @@ -643,7 +643,7 @@ int getThresholdEnergy() { } #ifdef VERBOSE //printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo, detectorDacs[VTHRESH+imod*NDAC]); - printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo,setDACRegister(VREF_DS,-1,imod));//edited by dhanya + printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo,(float)(setDACRegister(VREF_DS,-1,imod)));//edited by dhanya printf("Threshold energy of module %d is %d eV\n", imod, ethr); #endif @@ -700,7 +700,7 @@ int setThresholdEnergy(int ethr) { if (myg>0 && myo>0) { dacu=myo-myg*((float)ethr)/1000.; #ifdef VERBOSE - printf("module %d (%x): gain %f, off %f, energy %d eV, dac %d\n",imod,(detectorModules+imod),(detectorModules+imod)->gain,(detectorModules+imod)->offset, ethr,dacu); + printf("module %d (%x): gain %f, off %f, energy %d eV, dac %d\n",imod,(unsigned int)((detectorModules+imod)),(detectorModules+imod)->gain,(detectorModules+imod)->offset, ethr,dacu); #endif } else { dacu=ethr; @@ -729,7 +729,7 @@ float getDACbyIndexDACU(int ind, int imod) { int initDAC(int dac_addr, int value, int imod) { - int i; +// int i; #ifdef VERBOSE printf("Programming dac %d with value %d\n", dac_addr, value); #endif @@ -867,7 +867,7 @@ int setSettings(int i, int imod) { if((retval>=HIGHGAIN)&&(retval<=VERYHIGHGAIN)) isett=retval; else{ - isett==UNDEFINED; + isett=UNDEFINED; printf("Error:Wrong Settings Read out:%d\n",retval); } } @@ -940,8 +940,9 @@ int getTrimbit(int imod, int ichip, int ichan) { if (imod=0) if (ichip<(detectorModules+imod)->nchip && ichan<(detectorModules+imod)->nchan/(detectorModules+imod)->nchip) return (detectorChans[imod*NCHAN*NCHIP+ichip*NCHAN+ichan] & TRIM_DR); - } else - return -1; + } + + return -1; } int initChannel(int ft,int cae, int ae, int coe, int ocoe, int counts, int imod){ @@ -1381,14 +1382,14 @@ int initChipWithProbes(int obe, int ow,int nprobes, int imod){ } #ifdef VERBOSE - printf("\n \n \n",regval); + // printf("\n \n \n",regval); printf("initChip ow=%d omask=%d probes=%d\n",ow, omask,nprobes); #endif regval|=(omask<reg)=cm; #ifdef VERBOSE - printf("imod=%d reg=%d (%x)\n",im,(detectorModules+im)->reg,(detectorModules+im)); + printf("imod=%d reg=%d (%x)\n",im,(detectorModules+im)->reg,(unsigned int)((detectorModules+im))); #endif } } @@ -1520,12 +1521,12 @@ int initModulebyNumber(sls_detector_module myMod) { printf("\ninside initmoduleynumber..\n"); - int ichip, nchip, ichan, nchan; + int nchip,nchan;//int ichip, nchip, ichan, nchan; int im, modmi,modma; - int ft, cae, ae, coe, ocoe, counts, chanreg; + // int ft, cae, ae, coe, ocoe, counts, chanreg; int imod; - int obe; - int ow; + // int obe; + // int ow; int v[NDAC]; @@ -1984,7 +1985,7 @@ int testExtPulse(int imod) { //startStateMachine(); startReadOut(); usleep(100); - val1=decode_data(fifo_read_event()); + val1=(int*)(decode_data((int*)(fifo_read_event()))); // val1=fifo_read_event(); //imod=0; //for (imod=0; imod255) fnum=255; retval=(*flist[fnum])(file_des); if (retval==FAIL) - printf( "Error executing the function = %d \n",fnum); + printf( "Error executing the function = %d \n",fnum); return retval; } @@ -163,6 +165,8 @@ int function_table() { flist[F_LOAD_IMAGE]=&load_image; flist[F_SET_MASTER]=&set_master; flist[F_SET_SYNCHRONIZATION_MODE]=&set_synchronization; + flist[F_READ_COUNTER_BLOCK]=&read_counter_block; + flist[F_RESET_COUNTER_BLOCK]=&reset_counter_block; return OK; } @@ -368,6 +372,7 @@ int get_max_number_of_modules(int file_des) { default: ret=FAIL; retval=FAIL; + break; } #ifdef VERBOSE printf("Max number of module in dimension %d is %d\n",arg,ret ); @@ -402,70 +407,69 @@ int get_max_number_of_modules(int file_des) { //index 3 is out trigger int set_external_signal_flag(int file_des) { - int n; - int arg[2]; - int ret=OK; - int signalindex; - enum externalSignalFlag flag, retval; - - sprintf(mess,"Can't set external signal flag\n"); + int n; + int arg[2]; + int ret=OK; + int signalindex; + enum externalSignalFlag flag, retval; - /* receive arguments */ - n = receiveDataOnly(file_des,&arg,sizeof(arg)); - if (n < 0) { - sprintf(mess,"Error reading from socket\n"); - ret=FAIL; - } - retval=SIGNAL_OFF; - if (ret==OK) { - signalindex=arg[0]; - flag=arg[1]; - /* execute action */ - switch (flag) { - case GET_EXTERNAL_SIGNAL_FLAG: - retval=getExtSignal(signalindex); - break; + sprintf(mess,"Can't set external signal flag\n"); - default: - if (differentClients==0 || lockStatus==0) { - retval=setExtSignal(signalindex,flag); - } else { - if (lockStatus!=0) { - ret=FAIL; - sprintf(mess,"Detector locked by %s\n", lastClientIP); + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; } - } + retval=SIGNAL_OFF; + if (ret==OK) { + signalindex=arg[0]; + flag=arg[1]; + /* execute action */ + switch (flag) { + case GET_EXTERNAL_SIGNAL_FLAG: + retval=getExtSignal(signalindex); + break; - - } + default: + if (differentClients==0 || lockStatus==0) { + retval=setExtSignal(signalindex,flag); + } else { + if (lockStatus!=0) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n", lastClientIP); + } + } + break; + } #ifdef VERBOSE - printf("Setting external signal %d to flag %d\n",signalindex,flag ); - printf("Set to flag %d\n",retval); + printf("Setting external signal %d to flag %d\n",signalindex,flag ); + printf("Set to flag %d\n",retval); #endif - } else { - ret=FAIL; - } + } else { + ret=FAIL; + } - if (ret==OK && differentClients!=0) - ret=FORCE_UPDATE; + if (ret==OK && differentClients!=0) + ret=FORCE_UPDATE; - /* send answer */ - /* send OK/failed */ - n = sendDataOnly(file_des,&ret,sizeof(ret)); - if (ret!=FAIL) { - /* send return argument */ - n += sendDataOnly(file_des,&retval,sizeof(retval)); - } else { - n += sendDataOnly(file_des,mess,sizeof(mess)); - } + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } - /*return ok/fail*/ - return ret; - + /*return ok/fail*/ + return ret; + } @@ -590,6 +594,7 @@ int get_id(int file_des) { printf("Required unknown id %d \n", arg); ret=FAIL; retval=FAIL; + break; } #ifdef VERBOSE @@ -728,6 +733,7 @@ int digital_test(int file_des) { printf("Unknown digital test required %d\n",arg); ret=FAIL; retval=FAIL; + break; } #ifdef VERBOSE @@ -946,6 +952,7 @@ int set_dac(int file_des) { printf("Unknown DAC index %d\n",ind); sprintf(mess,"Unknown DAC index %d\n",ind); ret=FAIL; + break; } if (ret==OK) { @@ -1044,6 +1051,7 @@ int get_adc(int file_des) { printf("Unknown DAC index %d\n",ind); sprintf(mess,"Unknown DAC index %d\n",ind); ret=FAIL; + break; } if (ret==OK) @@ -1354,7 +1362,7 @@ int set_module(int file_des) { float *myAdc=malloc(NADC*sizeof(int)); int retval, n; int ret=OK; - int dr, ow; + int dr;// ow; dr=setDynamicRange(-1); @@ -1905,10 +1913,6 @@ int get_run_status(int file_des) { int read_frame(int file_des) { -#ifdef VERBOSE - int n; -#endif - if (differentClients==1 && lockStatus==1) { dataret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); @@ -1923,7 +1927,7 @@ int read_frame(int file_des) { if ((dataretval=(char*)fifo_read_event())) { dataret=OK; #ifdef VERYVERBOSE - printf("Sending ptr %x %d\n",dataretval, dataBytes); + printf("Sending ptr %x %d\n",(unsigned int)(dataretval), dataBytes); #endif sendDataOnly(file_des,&dataret,sizeof(dataret)); sendDataOnly(file_des,dataretval,dataBytes); @@ -1936,7 +1940,7 @@ int read_frame(int file_des) { //might add delay???? if(getFrames()>-2) { dataret=FAIL; - sprintf(mess,"no data and run stopped: %d frames left\n",getFrames()+2); + sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+2)); printf("%s\n",mess); } else { dataret=FINISHED; @@ -1944,12 +1948,12 @@ int read_frame(int file_des) { printf("%s\n",mess); } #ifdef VERYVERBOSE - printf("%d %d %x %s\n",sizeof(mess),strlen(mess), mess,mess); + printf("%d %d %x %s\n",(int)(sizeof(mess)),(int)(strlen(mess)),(unsigned int)( mess),mess); #endif sendDataOnly(file_des,&dataret,sizeof(dataret)); sendDataOnly(file_des,mess,sizeof(mess)); #ifdef VERYVERBOSE - printf("message sent\n",mess); + printf("message sent %s\n",mess); #endif printf("dataret %d\n",dataret); return dataret; @@ -1967,14 +1971,14 @@ int read_frame(int file_des) { for (iframes=0; iframes-2) { dataret=FAIL; - sprintf(mess,"no data and run stopped: %d frames left\n",getFrames()+2); + sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+2)); printf("%s\n",mess); } else { dataret=FINISHED; @@ -1984,7 +1988,7 @@ int read_frame(int file_des) { dataret=FORCE_UPDATE; } #ifdef VERBOSE - printf("Frames left %d\n",getFrames()); + printf("Frames left %d\n",(int)(getFrames())); #endif sendDataOnly(file_des,&dataret,sizeof(dataret)); sendDataOnly(file_des,mess,sizeof(mess)); @@ -2118,6 +2122,7 @@ int set_timer(int file_des) { default: ret=FAIL; sprintf(mess,"timer index unknown %d\n",ind); + break; } } } @@ -2142,7 +2147,7 @@ int set_timer(int file_des) { n = sendDataOnly(file_des,mess,sizeof(mess)); } else { #ifdef VERBOSE - printf("returning ok %d\n",sizeof(retval)); + printf("returning ok %d\n",(int)(sizeof(retval))); #endif n = sendDataOnly(file_des,&retval,sizeof(retval)); @@ -2214,6 +2219,7 @@ int get_time_left(int file_des) { default: ret=FAIL; sprintf(mess,"timer index unknown %d\n",ind); + break; } } @@ -2353,6 +2359,7 @@ int set_speed(int file_des) { break; default: ret=FAIL; + break; } } } else { @@ -2375,6 +2382,7 @@ int set_speed(int file_des) { break; default: ret=FAIL; + break; } } } @@ -2448,7 +2456,8 @@ int set_readout_flags(int file_des) { default: ret=setStoreInRAM(0); regret=setConfigurationRegister(0); - ret=OK; + ret=OK; + break; } } retval=NORMAL_READOUT; @@ -2550,6 +2559,7 @@ int execute_trimming(int file_des) { printf("Unknown trimming mode\n"); sprintf(mess,"Unknown trimming mode\n"); ret=FAIL; + break; } } } @@ -2689,7 +2699,7 @@ int send_update(int file_des) { int ret=OK; enum detectorSettings t; - int thr, n; + int n;//int thr, n; //int it; int64_t retval, tns=-1; n = sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); @@ -2766,10 +2776,10 @@ int configure_mac(int file_des) { printf("destination ip is %d.%d.%d.%d = 0x%x \n",(ipad>>24)&0xff,(ipad>>16)&0xff,(ipad>>8)&0xff,(ipad)&0xff,ipad); printf("macad:%llx\n",imacadd); for (i=0;i<6;i++) - printf("mac adress %d is 0x%x \n",6-i,((imacadd>>(8*i))&0xFF)); + printf("mac adress %d is 0x%x \n",6-i,(unsigned int)(((imacadd>>(8*i))&0xFF))); printf("server macad:%llx\n",iservermacadd); for (i=0;i<6;i++) - printf("server mac adress %d is 0x%x \n",6-i,((iservermacadd>>(8*i))&0xFF)); + printf("server mac adress %d is 0x%x \n",6-i,(unsigned int)(((iservermacadd>>(8*i))&0xFF))); printf("\n"); #endif @@ -2819,10 +2829,10 @@ int load_image(int file_des) { int retval; int ret=OK; int n; - int index; - short int ImageVals[1280]; + enum imageType index; + short int ImageVals[NCHAN*NCHIP]; - sprintf(mess,"Can't load image\n"); + sprintf(mess,"Loading image failed\n"); n = receiveDataOnly(file_des,&index,sizeof(index)); if (n < 0) { @@ -2830,7 +2840,7 @@ int load_image(int file_des) { ret=FAIL; } - n = receiveDataOnly(file_des,ImageVals,sizeof(ImageVals)); + n = receiveDataOnly(file_des,ImageVals,dataBytes); if (n < 0) { sprintf(mess,"Error reading from socket\n"); ret=FAIL; @@ -2839,22 +2849,21 @@ int load_image(int file_des) { switch (index) { case DARK_IMAGE : #ifdef VERBOSE - printf(" Loading Dark image\n"); + printf("Loading Dark image\n"); #endif break; case GAIN_IMAGE : #ifdef VERBOSE - printf(" Loading Gain image\n"); + printf("Loading Gain image\n"); #endif break; default: printf("Unknown index %d\n",index); sprintf(mess,"Unknown index %d\n",index); ret=FAIL; + break; } -#ifdef VERYVERBOSE - printf("%d\n%d\n",ImageVals[0],ImageVals[1]); -#endif + if (ret==OK) { if (differentClients==1 && lockStatus==1) { ret=FAIL; @@ -2866,9 +2875,7 @@ int load_image(int file_des) { } } - if(ret==FAIL) - printf("Loading image failed\n"); - else{ + if(ret==OK){ if (differentClients) ret=FORCE_UPDATE; } @@ -2979,3 +2986,98 @@ int set_synchronization(int file_des) { + + + +int read_counter_block(int file_des) { + + int ret=OK; + int n; + int startACQ; + //char *retval=NULL; + short int CounterVals[NCHAN*NCHIP]; + + sprintf(mess,"Read counter block failed\n"); + + n = receiveDataOnly(file_des,&startACQ,sizeof(startACQ)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else{ + ret=readCounterBlock(startACQ,CounterVals); +#ifdef VERBOSE + int i; + for(i=0;i<6;i++) + printf("%d:%d\t",i,CounterVals[i]); +#endif + } + } + + if(ret!=FAIL){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,CounterVals,dataBytes);//1280*2 + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return ret; +} + + + + + +int reset_counter_block(int file_des) { + + int ret=OK; + int n; + int startACQ; + + sprintf(mess,"Reset counter block failed\n"); + + n = receiveDataOnly(file_des,&startACQ,sizeof(startACQ)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else + ret=resetCounterBlock(startACQ); + } + + if(ret==OK){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) + n += sendDataOnly(file_des,mess,sizeof(mess)); + + /*return ok/fail*/ + return ret; +} + + + diff --git a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h index d2321c799..e33f276d0 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h +++ b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.h @@ -78,5 +78,7 @@ int send_update(int); int configure_mac(int); int load_image(int); +int read_counter_block(int); +int reset_counter_block(int); #endif