mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-29 01:20:02 +02:00
virtual servers updated
This commit is contained in:
parent
c3180737ed
commit
cd5d327988
@ -2149,17 +2149,43 @@ int startStateMachine(){
|
|||||||
|
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
void* start_timer(void* arg) {
|
void* start_timer(void* arg) {
|
||||||
int wait_in_s = (getNumFrames() *
|
int64_t periodns = getPeriod();
|
||||||
getNumTriggers() *
|
int numFrames = (getNumFrames() *
|
||||||
(getPeriod()/(1E9)));
|
getNumTriggers() );
|
||||||
FILE_LOG(logDEBUG1, ("going to wait for %d s\n", wait_in_s));
|
int64_t exp_ns = getExpTime();
|
||||||
while(!virtual_stop && (wait_in_s >= 0)) {
|
|
||||||
usleep(1000 * 1000);
|
|
||||||
wait_in_s--;
|
|
||||||
}
|
|
||||||
FILE_LOG(logINFOGREEN, ("Virtual Timer Done\n"));
|
|
||||||
|
|
||||||
|
int frameNr = 0;
|
||||||
|
// loop over number of frames
|
||||||
|
for(frameNr=0; frameNr!= numFrames; ++frameNr ) {
|
||||||
|
|
||||||
|
//check if virtual_stop is high
|
||||||
|
if(virtual_stop == 1){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sleep for exposure time
|
||||||
|
struct timespec begin, end;
|
||||||
|
clock_gettime(CLOCK_REALTIME, &begin);
|
||||||
|
usleep(exp_ns / 1000);
|
||||||
|
clock_gettime(CLOCK_REALTIME, &end);
|
||||||
|
|
||||||
|
// calculate time left in period
|
||||||
|
int64_t time_ns = ((end.tv_sec - begin.tv_sec) * 1E9 +
|
||||||
|
(end.tv_nsec - begin.tv_nsec));
|
||||||
|
|
||||||
|
// sleep for (period - exptime)
|
||||||
|
if (frameNr < numFrames) { // if there is a next frame
|
||||||
|
if (periodns > time_ns) {
|
||||||
|
usleep((periodns - time_ns)/ 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set register frames left
|
||||||
|
}
|
||||||
|
|
||||||
|
// set status to idle
|
||||||
virtual_status = 0;
|
virtual_status = 0;
|
||||||
|
FILE_LOG(logINFOBLUE, ("Finished Acquiring\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2270,10 +2296,11 @@ void readandSendUDPFrames(int *ret, char *mess) {
|
|||||||
|
|
||||||
void readFrame(int *ret, char *mess) {
|
void readFrame(int *ret, char *mess) {
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
while(virtual_status) {
|
// wait for acquisition to be done
|
||||||
//FILE_LOG(logERROR, ("Waiting for finished flag\n");
|
while(runBusy()){
|
||||||
usleep(5000);
|
usleep(500); // random
|
||||||
}
|
}
|
||||||
|
FILE_LOG(logINFOGREEN, ("acquisition successfully finished\n"));
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
// 1G
|
// 1G
|
||||||
|
@ -1743,6 +1743,7 @@ void* start_timer(void* arg) {
|
|||||||
closeUDPSocket(0);
|
closeUDPSocket(0);
|
||||||
|
|
||||||
virtual_status = 0;
|
virtual_status = 0;
|
||||||
|
FILE_LOG(logINFOBLUE, ("Finished Acquiring\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -960,9 +960,11 @@ void* start_timer(void* arg) {
|
|||||||
(end.tv_nsec - begin.tv_nsec));
|
(end.tv_nsec - begin.tv_nsec));
|
||||||
|
|
||||||
// sleep for (period - exptime)
|
// sleep for (period - exptime)
|
||||||
if (periodns > time_ns) {
|
if (frameNr < numFrames) { // if there is a next frame
|
||||||
usleep((periodns - time_ns)/ 1000);
|
if (periodns > time_ns) {
|
||||||
}
|
usleep((periodns - time_ns)/ 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// set register frames left
|
// set register frames left
|
||||||
}
|
}
|
||||||
@ -970,6 +972,7 @@ void* start_timer(void* arg) {
|
|||||||
closeUDPSocket(0);
|
closeUDPSocket(0);
|
||||||
// set status to idle
|
// set status to idle
|
||||||
virtual_status = 0;
|
virtual_status = 0;
|
||||||
|
FILE_LOG(logINFOBLUE, ("Finished Acquiring\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user