This commit is contained in:
maliakal_d 2020-06-15 09:20:38 +02:00
parent ab72d342c9
commit 24168d5e32

View File

@ -2136,77 +2136,72 @@ void *start_timer(void *arg) {
int srcOffset2 = npixelsx; int srcOffset2 = npixelsx;
// loop packet // loop packet
{ for (int i = 0; i != numPacketsPerFrame; ++i) {
// set header
char packetData[packetsize];
memset(packetData, 0, packetsize);
sls_detector_header *header =
(sls_detector_header *)(packetData);
header->detType = (uint16_t)myDetectorType;
header->version = SLS_DETECTOR_HEADER_VERSION;
header->frameNumber = frameNr + iframes;
header->packetNumber = i;
header->row = row;
header->column = colLeft;
int i = 0; char packetData2[packetsize];
i != numPacketsPerFrame; ++i) { memset(packetData2, 0, packetsize);
// set header header = (sls_detector_header *)(packetData2);
char packetData[packetsize]; header->detType = (uint16_t)myDetectorType;
memset(packetData, 0, packetsize); header->version = SLS_DETECTOR_HEADER_VERSION;
sls_detector_header *header = header->frameNumber = frameNr + iframes;
(sls_detector_header *)(packetData); header->packetNumber = i;
header->detType = (uint16_t)myDetectorType; header->row = row;
header->version = SLS_DETECTOR_HEADER_VERSION; header->column = colRight;
header->frameNumber = frameNr + iframes; if (eiger_virtual_quad_mode) {
header->packetNumber = i; header->row = 1; // right is next row
header->row = row; header->column = 0; // right same first column
header->column = colLeft; }
char packetData2[packetsize]; // fill data
memset(packetData2, 0, packetsize); int dstOffset = sizeof(sls_detector_header);
header = (sls_detector_header *)(packetData2); int dstOffset2 = sizeof(sls_detector_header);
header->detType = (uint16_t)myDetectorType; {
header->version = SLS_DETECTOR_HEADER_VERSION; for (int psize = 0; psize < datasize; psize += npixelsx) {
header->frameNumber = frameNr + iframes;
header->packetNumber = i;
header->row = row;
header->column = colRight;
if (eiger_virtual_quad_mode) {
header->row = 1; // right is next row
header->column = 0; // right same first column
}
// fill data if (dr == 32 && tgEnable == 0) {
int dstOffset = sizeof(sls_detector_header); memcpy(packetData + dstOffset,
int dstOffset2 = sizeof(sls_detector_header); imageData + srcOffset, npixelsx / 2);
{ memcpy(packetData2 + dstOffset2,
for (int psize = 0; psize < datasize; imageData + srcOffset2, npixelsx / 2);
psize += npixelsx) { if (srcOffset % npixelsx == 0) {
srcOffset += npixelsx / 2;
if (dr == 32 && tgEnable == 0) { srcOffset2 += npixelsx / 2;
memcpy(packetData + dstOffset,
imageData + srcOffset, npixelsx / 2);
memcpy(packetData2 + dstOffset2,
imageData + srcOffset2, npixelsx / 2);
if (srcOffset % npixelsx == 0) {
srcOffset += npixelsx / 2;
srcOffset2 += npixelsx / 2;
}
// skip the other half (2 packets in 1 line for
// 32 bit)
else {
srcOffset += npixelsx;
srcOffset2 += npixelsx;
}
dstOffset += npixelsx / 2;
dstOffset2 += npixelsx / 2;
} else {
memcpy(packetData + dstOffset,
imageData + srcOffset, npixelsx);
memcpy(packetData2 + dstOffset2,
imageData + srcOffset2, npixelsx);
srcOffset += 2 * npixelsx;
srcOffset2 += 2 * npixelsx;
dstOffset += npixelsx;
dstOffset2 += npixelsx;
} }
// skip the other half (2 packets in 1 line for
// 32 bit)
else {
srcOffset += npixelsx;
srcOffset2 += npixelsx;
}
dstOffset += npixelsx / 2;
dstOffset2 += npixelsx / 2;
} else {
memcpy(packetData + dstOffset,
imageData + srcOffset, npixelsx);
memcpy(packetData2 + dstOffset2,
imageData + srcOffset2, npixelsx);
srcOffset += 2 * npixelsx;
srcOffset2 += 2 * npixelsx;
dstOffset += npixelsx;
dstOffset2 += npixelsx;
} }
} }
usleep(eiger_virtual_transmission_delay_left);
sendUDPPacket(0, packetData, packetsize);
usleep(eiger_virtual_transmission_delay_right);
sendUDPPacket(1, packetData2, packetsize);
} }
usleep(eiger_virtual_transmission_delay_left);
sendUDPPacket(0, packetData, packetsize);
usleep(eiger_virtual_transmission_delay_right);
sendUDPPacket(1, packetData2, packetsize);
} }
LOG(logINFO, ("Sent frame: %d\n", iframes)); LOG(logINFO, ("Sent frame: %d\n", iframes));
clock_gettime(CLOCK_REALTIME, &end); clock_gettime(CLOCK_REALTIME, &end);