diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index dd5e0cd0b..796883d09 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -420,9 +420,9 @@ enum readOutFlags { BACKGROUND_CORRECTIONS=0x1000, /**setOnline(ONLINE_FLAG); - switch (myDet->setReadOutFlags(flag)) { - case NORMAL_READOUT: - return string("none"); - case STORE_IN_RAM: - return string("storeinram"); - case TOT_MODE: - return string("tot"); - case CONTINOUS_RO: - return string("continous"); - case PARALLEL: - return string("parallel"); - case NONPARALLEL: - return string("nonparallel"); - case SAFE: - return string("safe"); - default: - return string("unknown"); - } - + retval = myDet->setReadOutFlags(flag); + + if(retval == NORMAL_READOUT) + return string("none"); + + if(retval & STORE_IN_RAM) + strcat(answer,"storeinram "); + if(retval & TOT_MODE) + strcat(answer,"tot "); + if(retval & CONTINOUS_RO) + strcat(answer,"continous "); + if(retval & PARALLEL) + strcat(answer,"parallel "); + if(retval & NONPARALLEL) + strcat(answer,"nonparallel "); + if(retval & SAFE) + strcat(answer,"safe "); + if(strlen(answer)) + return string(answer); + + return string("unknown"); + } else if (cmd=="extsig") { externalSignalFlag flag=GET_EXTERNAL_SIGNAL_FLAG; int is=-1; diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 81df1d4f6..c97f7652b 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -2637,9 +2637,19 @@ int set_readout_flags(int file_des) { ret=FAIL; } + + +#if !defined(MYTHEND) && !defined(EIGERD) + sprintf(mess,"Read out flags not implemented for this detector\n"); + cprintf(RED, "%s",mess); + ret=FAIL; +#else + + #ifdef VERBOSE printf("setting readout flags to %d\n",arg); #endif + #ifdef SLS_DETECTOR_FUNCTION_LIST if (differentClients==1 && lockStatus==1 && arg!=GET_READOUT_FLAGS) { ret=FAIL; @@ -2648,30 +2658,37 @@ int set_readout_flags(int file_des) { switch(arg) { case GET_READOUT_FLAGS: #ifdef MYTHEND - case STORE_IN_RAM: case TOT_MODE: - case CONTINOUS_RO: case NORMAL_READOUT: - retval=setReadOutFlags(arg); - break; -#elif EIGERD - case PARALLEL: - case NONPARALLEL: - case SAFE: - retval=setReadOutFlags(arg); - break; #endif +#if defined(MYTHEND) || defined(EIGERD) + case STORE_IN_RAM: + case CONTINOUS_RO: +#endif +#ifdef EIGERD + case PARALLEL: + case NONPARALLEL: + case SAFE: +#endif + retval=setReadOutFlags(arg); + break; + default: sprintf(mess,"Unknown readout flag %d for this detector\n", arg); + cprintf(RED, "%s",mess); ret=FAIL; break; } } #endif + +#endif + if (ret==OK) { - if (arg!=GET_READOUT_FLAGS && arg!=retval) { + if (retval == -1) { ret=FAIL; sprintf(mess,"Could not change readout flag: should be %d but is %d\n", arg, retval); + cprintf(RED, "%s",mess); }else if (differentClients) ret=FORCE_UPDATE; }