diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.2.0.16.1 b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.2.0.16.1 new file mode 100755 index 000000000..4519f8f12 Binary files /dev/null and b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.2.0.16.1 differ diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 7677e79aa..104007fb7 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -858,25 +858,22 @@ enum runStatus getRunStatus(){ -char *readFrame(int *ret, char *mess){ - //if(master){ - if(!Feb_Control_WaitForFinishedFlag(5000)) - cprintf(RED,"Error: Waiting for finished flag\n"); - cprintf(GREEN,"Acquisition finished***\n"); +void readFrame(int *ret, char *mess){ + if(!Feb_Control_WaitForFinishedFlag(5000)) + cprintf(RED,"Error: Waiting for finished flag\n"); + cprintf(GREEN,"Acquisition finished***\n"); - if(eiger_storeinmem){ - printf("requesting images after storing in memory\n"); - if(startReadOut() == FAIL){ - cprintf(RED, "Could not read out images\n"); - *ret = (int)FAIL; - return NULL; - } + if(eiger_storeinmem){ + printf("requesting images after storing in memory\n"); + if(startReadOut() == FAIL){ + strcpy(mess,"Could not execute read image requests\n"); + *ret = (int)FAIL; + return; } - //usleep(1000000); - printf("*****Done Waiting...\n"); - //} - *ret = (int)FINISHED; - return NULL; + } + printf("*****Done Waiting...\n"); + *ret = (int)FINISHED; + strcpy(mess,"acquisition successfully finished\n"); } diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h index 1e1e13d40..baa0ab382 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h @@ -92,7 +92,7 @@ int startStateMachine(); int stopStateMachine(); int startReadOut(); enum runStatus getRunStatus(); -char *readFrame(int *ret, char *mess); +void readFrame(int *ret, char *mess); int64_t setTimer(enum timerIndex ind, int64_t val); diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index b50bc637a..897ccf788 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -36,7 +36,6 @@ extern enum detectorSettings thisSettings; //global variables for optimized readout char mess[MAX_STR_LENGTH]; -char *dataretval=NULL; int dataret; //extern int dataBytes = 10; @@ -2527,9 +2526,8 @@ int start_and_read_all(int file_des) { int read_frame(int file_des) { - - dataret=OK; int dataret1; + if (differentClients==1 && lockStatus==1) { dataret=FAIL; sprintf(mess,"Detector locked by %s\n",lastClientIP); @@ -2538,25 +2536,28 @@ int read_frame(int file_des) { dataret1 = dataret; sendData(file_des,&dataret1,sizeof(dataret1),INT32); sendData(file_des,mess,sizeof(mess),OTHER); +#ifdef VERBOSE printf("dataret %d\n",dataret); +#endif return dataret; } #ifdef SLS_DETECTOR_FUNCTION_LIST - dataretval=readFrame(&dataret, mess); + readFrame(&dataret, mess); #endif - - //dataret could be swapped during sendData - dataret1 = dataret; - sendData(file_des,&dataret1,sizeof(dataret1),INT32); - if (dataret==FAIL) - sendData(file_des,mess,sizeof(mess),OTHER);//sizeof(mess));//sizeof(mess)); - else if(dataret==OK){printf("shouldnt be sending anything but i am\n"); - sendData(file_des,dataretval,dataBytes,OTHER);} - - printf("dataret %d\n",dataret); - return dataret; + if (differentClients) + dataret=FORCE_UPDATE; + //dataret could be swapped during sendData + dataret1 = dataret; + sendData(file_des,&dataret1,sizeof(dataret1),INT32); + //always fail or finished + sendData(file_des,mess,sizeof(mess),OTHER); + if(dataret == FAIL) + cprintf(RED,"%s\n",mess); + else + cprintf(GREEN,"%s",mess); + return dataret; }