some more changes to exptime and validations
Run Simulator Tests on local RHEL9 / build (push) Failing after 3m12s
Build on RHEL9 docker image / build (push) Failing after 4m3s
Run Simulator Tests on local RHEL8 / build (push) Failing after 4m53s
Build on RHEL8 docker image / build (push) Failing after 4m51s

This commit is contained in:
2026-04-30 09:47:10 +02:00
parent 7b44caab98
commit 96f7bc2685
3 changed files with 64 additions and 14 deletions
@@ -633,10 +633,16 @@ void setupDetector() {
DEFAULT_NUM_SAMPLES); // update databytes and allocate ram
setNumTransceiverSamples(DEFAULT_NUM_SAMPLES);
setNumFrames(DEFAULT_NUM_FRAMES);
setExpTime(DEFAULT_EXPTIME);
initError = setExpTime(DEFAULT_EXPTIME, initErrorMessage);
if (initError == FAIL)
return;
setNumTriggers(DEFAULT_NUM_CYCLES);
setPeriod(DEFAULT_PERIOD);
setDelayAfterTrigger(DEFAULT_DELAY);
initError = setPeriod(DEFAULT_PERIOD, initErrorMessage);
if (initError == FAIL)
return;
initError = setDelayAfterTrigger(DEFAULT_DELAY, initErrorMessage);
if (initError == FAIL)
return;
setTiming(DEFAULT_TIMING_MODE);
setADCEnableMask(BIT32_MSK);
setADCEnableMask_10G(BIT32_MSK);
@@ -1135,17 +1141,29 @@ int setNumTransceiverSamples(int val) {
int getNumTransceiverSamples() { return ntSamples; }
int setExpTime(int64_t val) {
int setExpTime(int64_t val, char *mess) {
setPatternWaitInterval(0, val);
int64_t retval = getExpTime();
if (retval != val) {
// validate for tolerance
int64_t retval = 0;
if (getExpTime(&retval, mess) == FAIL) {
return FAIL;
}
int ret = OK;
validate64_timer(&ret, mess, val, retval, clkFrequency[RUN_CLK],
"exposure time");
return ret;
}
int getExpTime(int64_t *retval, char *mess) {
*retval = getPatternWaitInterval(0);
if (*retval == -1) {
sprintf(mess, "Failed to get exposure time.\n");
LOG(logERROR, (mess));
return FAIL;
}
return OK;
}
int64_t getExpTime() { return getPatternWaitInterval(0); }
int setPeriod(int64_t val, char *mess) {
if (val < 0) {
sprintf(mess, "Invalid period: %lld ns\n", (long long int)val);
@@ -2533,10 +2551,21 @@ void *start_timer(void *arg) {
return NULL;
}
int64_t periodNs = getPeriod();
int64_t periodNs = 0;
int64_t expUs = 0;
{
char mess[MAX_STR_LENGTH] = {0};
if (getPeriod(&periodNs, mess) == FAIL) {
LOG(logERROR, ("Failed to get period.\n"));
return NULL;
}
if (getExpTime(&expUs, mess) == FAIL) {
LOG(logERROR, ("Failed to get exposure time.\n"));
return NULL;
}
expUs /= 1000;
}
int numFrames = (getNumFrames() * getNumTriggers());
int64_t expUs = getExpTime() / 1000;
int imageSize = dataBytes;
int dataSize = UDP_PACKET_DATA_BYTES;
int packetSize = sizeof(sls_detector_header) + dataSize;
@@ -98,8 +98,8 @@ void setNumFrames(int64_t val);
int64_t getNumFrames();
void setNumTriggers(int64_t val);
int64_t getNumTriggers();
int setExpTime(int64_t val);
int64_t getExpTime();
int setExpTime(int64_t val, char *mess);
int getExpTime(int64_t *retval, char *mess);
int setPeriod(int64_t val, char *mess);
int getPeriod(int64_t *retval, char *mess);
int setNumAnalogSamples(int val);
@@ -2402,7 +2402,11 @@ int get_exptime(int file_des) {
"for this detector\n");
LOG(logERROR, (mess));
} else {
#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD)
ret = getExpTime(&retval, mess);
#else
retval = getExpTime();
#endif
LOG(logDEBUG1, ("retval exptime %lld ns\n", (long long int)retval));
}
#endif
@@ -2472,6 +2476,9 @@ int set_exptime(int file_des) {
"for this detector\n");
LOG(logERROR, (mess));
} else {
#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD)
ret = setExpTime(val, mess);
#else
ret = setExpTime(val);
int64_t retval = getExpTime();
LOG(logDEBUG1, ("retval exptime %lld ns\n", (long long int)retval));
@@ -2482,6 +2489,7 @@ int set_exptime(int file_des) {
(long long int)val, (long long int)retval);
LOG(logERROR, (mess));
}
#endif
}
#endif
}
@@ -2525,7 +2533,7 @@ int set_period(int file_des) {
(long long int)arg, (long long int)retval);
LOG(logERROR, (mess));
}
#endif
#endif
}
return Server_SendResult(file_des, INT64, NULL, 0);
}
@@ -7045,6 +7053,11 @@ int get_receiver_parameters(int file_des) {
// exptime
#ifdef MYTHEN3D
i64 = 0;
#elif defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD)
if (getExpTime(&i64, mess) == FAIL) {
sprintf(mess, "Could not get exposure time.\n");
return sendError(file_des);
}
#else
i64 = getExpTime();
#endif
@@ -7053,7 +7066,15 @@ int get_receiver_parameters(int file_des) {
return printSocketReadError();
// period
i64 = 0;
#if defined(CHIPTESTBOARDD) || defined(XILINX_CHIPTESTBOARDD)
if (getPeriod(&i64, mess) == FAIL) {
sprintf(mess, "Could not get period.\n");
return sendError(file_des);
}
#else
i64 = getPeriod();
#endif
n += sendData(file_des, &i64, sizeof(i64), INT64);
if (n < 0)
return printSocketReadError();