diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index e6be2ee65..56f49a5cd 100755 Binary files a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer and b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer differ diff --git a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c index d57445451..3158a2050 100644 --- a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c @@ -723,6 +723,10 @@ int getDynamicRange(int *retval) { } int setADCEnableMask(uint32_t mask) { + if (mask == 0u) { + LOG(logERROR, ("Cannot set 1gb adc mask to 0\n")); + return FAIL; + } LOG(logINFO, ("Setting adcEnableMask 1G to 0x%08x\n", mask)); adcEnableMask_1g = mask; // 1Gb enabled @@ -737,6 +741,10 @@ int setADCEnableMask(uint32_t mask) { uint32_t getADCEnableMask() { return adcEnableMask_1g; } void setADCEnableMask_10G(uint32_t mask) { + if (mask == 0u) { + LOG(logERROR, ("Cannot set 10gb adc mask to 0\n")); + return; + } // convert 32 bit mask to 8 bit mask uint8_t actualMask = 0; if (mask != 0) { diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 229911c1f..1c0d895ba 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -4203,19 +4203,28 @@ int set_adc_enable_mask(int file_des) { #else // only set if (Server_VerifyLock() == OK) { - ret = setADCEnableMask(arg); - if (ret == FAIL) { - sprintf(mess, "Could not set 1Gb ADC Enable mask to 0x%x.\n", arg); + if (arg == 0u) { + ret = FAIL; + sprintf(mess, + "Not allowed to set adc mask of 0 due to data readout. \n"); LOG(logERROR, (mess)); } else { - uint32_t retval = getADCEnableMask(); - if (arg != retval) { - ret = FAIL; - sprintf(mess, + ret = setADCEnableMask(arg); + if (ret == FAIL) { + sprintf(mess, "Could not set 1Gb ADC Enable mask to 0x%x.\n", + arg); + LOG(logERROR, (mess)); + } else { + uint32_t retval = getADCEnableMask(); + if (arg != retval) { + ret = FAIL; + sprintf( + mess, "Could not set 1Gb ADC Enable mask. Set 0x%x, but read " "0x%x\n", arg, retval); - LOG(logERROR, (mess)); + LOG(logERROR, (mess)); + } } } } @@ -4254,15 +4263,22 @@ int set_adc_enable_mask_10g(int file_des) { #else // only set if (Server_VerifyLock() == OK) { - setADCEnableMask_10G(arg); - uint32_t retval = getADCEnableMask_10G(); - if (arg != retval) { + if (arg == 0u) { ret = FAIL; sprintf(mess, - "Could not set 10Gb ADC Enable mask. Set 0x%x, but " - "read 0x%x\n", - arg, retval); + "Not allowed to set adc mask of 0 due to data readout \n"); LOG(logERROR, (mess)); + } else { + setADCEnableMask_10G(arg); + uint32_t retval = getADCEnableMask_10G(); + if (arg != retval) { + ret = FAIL; + sprintf(mess, + "Could not set 10Gb ADC Enable mask. Set 0x%x, but " + "read 0x%x\n", + arg, retval); + LOG(logERROR, (mess)); + } } } #endif