mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-05-03 14:44:14 +02:00
some more changes to exptime and validations
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user