ctb 1g non blocking acquire (#555)

* allowing ctb and moench 1g to have non blocking acquisition also send data, refactoring wait for acquisition finished for all others
This commit is contained in:
Dhanya Thattil
2022-09-16 17:45:51 +02:00
committed by GitHub
parent e385618d09
commit bac32dcba9
19 changed files with 99 additions and 146 deletions

View File

@ -666,7 +666,14 @@ int softwareTrigger(int block);
int startReadOut();
#endif
enum runStatus getRunStatus();
void readFrame(int *ret, char *mess);
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
void readFrames(int *ret, char *mess);
#endif
#ifdef EIGERD
void waitForAcquisitionEnd(int *ret, char *mess);
#else
void waitForAcquisitionEnd();
#endif
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
void readandSendUDPFrames(int *ret, char *mess);
void unsetFifoReadStrobes();

View File

@ -52,7 +52,6 @@ int start_acquisition(int);
int stop_acquisition(int);
int get_run_status(int);
int start_and_read_all(int);
int read_all(int);
int get_num_frames(int);
int set_num_frames(int);
int get_num_triggers(int);
@ -305,4 +304,4 @@ int get_digital_pulsing(int);
int set_digital_pulsing(int);
int get_module(int);
int get_synchronization(int);
int set_synchronization(int);
int set_synchronization(int);

View File

@ -2010,15 +2010,30 @@ void *start_state_machine(void *arg) {
}
break;
}
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
readFrames(&ret, mess);
if (ret == FAIL && scan) {
sprintf(scanErrMessage, "Cannot scan at %d. ", scanSteps[i]);
strcat(scanErrMessage, mess);
sharedMemory_setScanStatus(ERROR);
break;
}
#endif
// blocking or scan
if (*blocking || times > 1) {
readFrame(&ret, mess);
#ifdef EIGERD
waitForAcquisitionEnd(&ret, mess);
if (ret == FAIL && scan) {
sprintf(scanErrMessage, "Cannot scan at %d. ", scanSteps[i]);
strcat(scanErrMessage, mess);
sharedMemory_setScanStatus(ERROR);
break;
}
#else
waitForAcquisitionEnd();
#endif
}
}
// end of scan
@ -2061,18 +2076,6 @@ int get_run_status(int file_des) {
int start_and_read_all(int file_des) { return acquire(1, file_des); }
int read_all(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));
LOG(logDEBUG1, ("Reading all frames\n"));
// only set
if (Server_VerifyLock() == OK) {
readFrame(&ret, mess);
}
return Server_SendResult(file_des, INT32, NULL, 0);
}
int get_num_frames(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));