mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-14 13:57:13 +02:00
eiger virtual server exptime fixed
This commit is contained in:
@ -69,10 +69,10 @@ int eiger_ntriggers = 1;
|
|||||||
|
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
//values for virtual server
|
//values for virtual server
|
||||||
double eiger_virtual_exptime = 0;
|
int64_t eiger_virtual_exptime = 0;
|
||||||
int64_t eiger_virtual_subexptime = 0;
|
int64_t eiger_virtual_subexptime = 0;
|
||||||
int64_t eiger_virtual_subperiod = 0;
|
int64_t eiger_virtual_subperiod = 0;
|
||||||
double eiger_virtual_period = 0;
|
int64_t eiger_virtual_period = 0;
|
||||||
int eiger_virtual_counter_bit=1;
|
int eiger_virtual_counter_bit=1;
|
||||||
int eiger_virtual_ratecorrection_variable=0;
|
int eiger_virtual_ratecorrection_variable=0;
|
||||||
int64_t eiger_virtual_ratetable_tau_in_ns=-1;
|
int64_t eiger_virtual_ratetable_tau_in_ns=-1;
|
||||||
@ -646,7 +646,7 @@ int setExpTime(int64_t val) {
|
|||||||
#ifndef VIRTUAL
|
#ifndef VIRTUAL
|
||||||
Feb_Control_SetExposureTime(val/(1E9));
|
Feb_Control_SetExposureTime(val/(1E9));
|
||||||
#else
|
#else
|
||||||
eiger_virtual_exptime = (val/(1E9));
|
eiger_virtual_exptime = val;
|
||||||
#endif
|
#endif
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@ -655,7 +655,7 @@ int64_t getExpTime() {
|
|||||||
#ifndef VIRTUAL
|
#ifndef VIRTUAL
|
||||||
return (Feb_Control_GetExposureTime()*(1E9));
|
return (Feb_Control_GetExposureTime()*(1E9));
|
||||||
#else
|
#else
|
||||||
return eiger_virtual_exptime*1e9;
|
return eiger_virtual_exptime;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,7 +664,7 @@ int setPeriod(int64_t val) {
|
|||||||
#ifndef VIRTUAL
|
#ifndef VIRTUAL
|
||||||
Feb_Control_SetExposurePeriod(val/(1E9));
|
Feb_Control_SetExposurePeriod(val/(1E9));
|
||||||
#else
|
#else
|
||||||
eiger_virtual_period = (val/(1E9));
|
eiger_virtual_period = val;
|
||||||
#endif
|
#endif
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@ -673,7 +673,7 @@ int64_t getPeriod() {
|
|||||||
#ifndef VIRTUAL
|
#ifndef VIRTUAL
|
||||||
return (Feb_Control_GetExposurePeriod()*(1E9));
|
return (Feb_Control_GetExposurePeriod()*(1E9));
|
||||||
#else
|
#else
|
||||||
return eiger_virtual_period*1e9;
|
return eiger_virtual_period;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1707,7 +1707,7 @@ int startStateMachine() {
|
|||||||
void* start_timer(void* arg) {
|
void* start_timer(void* arg) {
|
||||||
int64_t periodns = eiger_virtual_period;
|
int64_t periodns = eiger_virtual_period;
|
||||||
int numFrames = nimages_per_request;
|
int numFrames = nimages_per_request;
|
||||||
int64_t exp_ns = eiger_virtual_exptime;
|
int64_t exp_us = eiger_virtual_exptime / 1000;
|
||||||
|
|
||||||
int dr = eiger_dynamicrange;
|
int dr = eiger_dynamicrange;
|
||||||
double bytesPerPixel = (double)dr/8.00;
|
double bytesPerPixel = (double)dr/8.00;
|
||||||
@ -1717,7 +1717,7 @@ void* start_timer(void* arg) {
|
|||||||
int numPacketsPerFrame = (tgEnable ? 4 : 16) * dr;
|
int numPacketsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||||
int npixelsx = 256 * 2 * bytesPerPixel;
|
int npixelsx = 256 * 2 * bytesPerPixel;
|
||||||
int databytes = 256 * 256 * 2 * bytesPerPixel;
|
int databytes = 256 * 256 * 2 * bytesPerPixel;
|
||||||
FILE_LOG(logINFO, (" dr:%f\n bytesperpixel:%d\n tgenable:%d\n datasize:%d\n packetsize:%d\n numpackes:5d\n npixelsx:%d\n databytes:%d\n",
|
FILE_LOG(logINFO, (" dr:%f\n bytesperpixel:%d\n tgenable:%d\n datasize:%d\n packetsize:%d\n numpackes:%d\n npixelsx:%d\n databytes:%d\n",
|
||||||
dr, bytesPerPixel, tgEnable, datasize, packetsize, numPacketsPerFrame, npixelsx, databytes));
|
dr, bytesPerPixel, tgEnable, datasize, packetsize, numPacketsPerFrame, npixelsx, databytes));
|
||||||
|
|
||||||
|
|
||||||
@ -1731,19 +1731,22 @@ void* start_timer(void* arg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//TODO: Send data
|
//TODO: Send data
|
||||||
{
|
{
|
||||||
int frameNr = 1;
|
int frameNr = 1;
|
||||||
for(frameNr=1; frameNr <= numFrames; ++frameNr ) {
|
for(frameNr=1; frameNr <= numFrames; ++frameNr ) {
|
||||||
|
|
||||||
|
//check if virtual_stop is high
|
||||||
|
if(eiger_virtual_stop == 1){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
int srcOffset = 0;
|
int srcOffset = 0;
|
||||||
int srcOffset2 = npixelsx;
|
int srcOffset2 = npixelsx;
|
||||||
|
|
||||||
struct timespec begin, end;
|
struct timespec begin, end;
|
||||||
clock_gettime(CLOCK_REALTIME, &begin);
|
clock_gettime(CLOCK_REALTIME, &begin);
|
||||||
|
usleep(exp_us);
|
||||||
usleep(exp_ns / 1000);
|
|
||||||
|
|
||||||
char packetData[packetsize];
|
char packetData[packetsize];
|
||||||
memset(packetData, 0, packetsize);
|
memset(packetData, 0, packetsize);
|
||||||
char packetData2[packetsize];
|
char packetData2[packetsize];
|
||||||
@ -1762,10 +1765,12 @@ void* start_timer(void* arg) {
|
|||||||
header = (sls_detector_header*)(packetData2);
|
header = (sls_detector_header*)(packetData2);
|
||||||
header->frameNumber = frameNr;
|
header->frameNumber = frameNr;
|
||||||
header->packetNumber = i;
|
header->packetNumber = i;
|
||||||
|
|
||||||
// fill data
|
// fill data
|
||||||
{
|
{
|
||||||
int psize = 0;
|
int psize = 0;
|
||||||
for (psize = 0; psize < datasize; psize += npixelsx) {
|
for (psize = 0; psize < datasize; psize += npixelsx) {
|
||||||
|
|
||||||
if (dr == 32 && tgEnable == 0) {
|
if (dr == 32 && tgEnable == 0) {
|
||||||
memcpy(packetData + dstOffset, imageData + srcOffset, npixelsx/2);
|
memcpy(packetData + dstOffset, imageData + srcOffset, npixelsx/2);
|
||||||
memcpy(packetData2 + dstOffset2, imageData + srcOffset2, npixelsx/2);
|
memcpy(packetData2 + dstOffset2, imageData + srcOffset2, npixelsx/2);
|
||||||
@ -1803,6 +1808,7 @@ void* start_timer(void* arg) {
|
|||||||
closeUDPSocket(1);
|
closeUDPSocket(1);
|
||||||
|
|
||||||
eiger_virtual_status = 0;
|
eiger_virtual_status = 0;
|
||||||
|
FILE_LOG(logINFOBLUE, ("Finished Acquiring\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1903,6 +1909,10 @@ enum runStatus getRunStatus() {
|
|||||||
|
|
||||||
void readFrame(int *ret, char *mess) {
|
void readFrame(int *ret, char *mess) {
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
|
// wait for status to be done
|
||||||
|
while(eiger_virtual_status == 1){
|
||||||
|
usleep(500);
|
||||||
|
}
|
||||||
FILE_LOG(logINFOGREEN, ("acquisition successfully finished\n"));
|
FILE_LOG(logINFOGREEN, ("acquisition successfully finished\n"));
|
||||||
return;
|
return;
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user