mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-04 11:50:05 +02:00
bug (from eiger_newheader) with imagesize of fifo different from actual image size
This commit is contained in:
parent
8d6ceccf87
commit
3007694b77
@ -57,9 +57,6 @@ public:
|
|||||||
/** Max Frames per binary file */
|
/** Max Frames per binary file */
|
||||||
uint32_t maxFramesPerFile;
|
uint32_t maxFramesPerFile;
|
||||||
|
|
||||||
/** Data size that is saved into the fifo buffer at a time*/
|
|
||||||
uint32_t fifoBufferSize;
|
|
||||||
|
|
||||||
/** Header size of data saved into fifo buffer at a time*/
|
/** Header size of data saved into fifo buffer at a time*/
|
||||||
uint32_t fifoBufferHeaderSize;
|
uint32_t fifoBufferHeaderSize;
|
||||||
|
|
||||||
@ -100,7 +97,6 @@ public:
|
|||||||
packetIndexMask(0),
|
packetIndexMask(0),
|
||||||
packetIndexOffset(0),
|
packetIndexOffset(0),
|
||||||
maxFramesPerFile(0),
|
maxFramesPerFile(0),
|
||||||
fifoBufferSize(0),
|
|
||||||
fifoBufferHeaderSize(0),
|
fifoBufferHeaderSize(0),
|
||||||
defaultFifoDepth(0),
|
defaultFifoDepth(0),
|
||||||
threadsPerReceiver(1),
|
threadsPerReceiver(1),
|
||||||
@ -210,7 +206,6 @@ public:
|
|||||||
packetIndexMask,
|
packetIndexMask,
|
||||||
packetIndexOffset,
|
packetIndexOffset,
|
||||||
maxFramesPerFile,
|
maxFramesPerFile,
|
||||||
fifoBufferSize,
|
|
||||||
fifoBufferHeaderSize,
|
fifoBufferHeaderSize,
|
||||||
defaultFifoDepth,
|
defaultFifoDepth,
|
||||||
threadsPerReceiver,
|
threadsPerReceiver,
|
||||||
@ -240,7 +235,6 @@ class GotthardData : public GeneralData {
|
|||||||
frameIndexOffset = 1;
|
frameIndexOffset = 1;
|
||||||
packetIndexMask = 1;
|
packetIndexMask = 1;
|
||||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 25000;
|
defaultFifoDepth = 25000;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -266,7 +260,6 @@ class ShortGotthardData : public GeneralData {
|
|||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
frameIndexMask = 0xFFFFFFFF;
|
frameIndexMask = 0xFFFFFFFF;
|
||||||
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 25000;
|
defaultFifoDepth = 25000;
|
||||||
nPixelsX_Streamer = 1280;
|
nPixelsX_Streamer = 1280;
|
||||||
@ -331,7 +324,6 @@ class PropixData : public GeneralData {
|
|||||||
frameIndexOffset = 1;
|
frameIndexOffset = 1;
|
||||||
packetIndexMask = 1;
|
packetIndexMask = 1;
|
||||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 25000;
|
defaultFifoDepth = 25000;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -362,7 +354,6 @@ class Moench02Data : public GeneralData {
|
|||||||
frameIndexOffset = 8;
|
frameIndexOffset = 8;
|
||||||
packetIndexMask = 0xFF;
|
packetIndexMask = 0xFF;
|
||||||
maxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -398,7 +389,6 @@ class Moench03Data : public GeneralData {
|
|||||||
frameIndexOffset = (6+8);
|
frameIndexOffset = (6+8);
|
||||||
packetIndexMask = 0xFFFFFFFF;
|
packetIndexMask = 0xFFFFFFFF;
|
||||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -426,7 +416,6 @@ class JCTBData : public GeneralData {
|
|||||||
packetsPerFrame = 1;
|
packetsPerFrame = 1;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -460,7 +449,6 @@ class JungfrauData : public GeneralData {
|
|||||||
packetsPerFrame = 128;
|
packetsPerFrame = 128;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
nPixelsX_Streamer = nPixelsX;
|
||||||
@ -509,7 +497,6 @@ private:
|
|||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
frameIndexMask = 0xffffff;
|
frameIndexMask = 0xffffff;
|
||||||
maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferSize = imageSize;
|
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 100;
|
defaultFifoDepth = 100;
|
||||||
footerOffset = headerSizeinPacket + dataSize;
|
footerOffset = headerSizeinPacket + dataSize;
|
||||||
@ -564,7 +551,6 @@ private:
|
|||||||
void SetDynamicRange(int dr, bool tgEnable) {
|
void SetDynamicRange(int dr, bool tgEnable) {
|
||||||
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
fifoBufferSize = packetSize*packetsPerFrame;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -574,10 +560,9 @@ private:
|
|||||||
*/
|
*/
|
||||||
void SetTenGigaEnable(bool tgEnable, int dr) {
|
void SetTenGigaEnable(bool tgEnable, int dr) {
|
||||||
dataSize = (tgEnable ? 4096 : 1024);
|
dataSize = (tgEnable ? 4096 : 1024);
|
||||||
packetSize = (tgEnable ? 4112 : 1040);;
|
packetSize = (tgEnable ? 4112 : 1040);
|
||||||
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
imageSize = dataSize*packetsPerFrame;
|
||||||
fifoBufferSize = packetSize*packetsPerFrame;
|
|
||||||
footerOffset = packetHeaderSize+dataSize;
|
footerOffset = packetHeaderSize+dataSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -276,6 +276,7 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
/** Listening buffer for one packet - might be removed when we can peek and eiger fnum is in header */
|
/** Listening buffer for one packet - might be removed when we can peek and eiger fnum is in header */
|
||||||
char* listeningPacket;
|
char* listeningPacket;
|
||||||
|
|
||||||
|
/** if the standard header is implemented in firmware */
|
||||||
|
bool standardheader;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#include <rapidjson/document.h> //json header in zmq stream
|
#include <rapidjson/document.h> //json header in zmq stream
|
||||||
using namespace rapidjson;
|
using namespace rapidjson;
|
||||||
|
|
||||||
#define DEFAULT_ZMQ_PORTNO 40001
|
#define DEFAULT_ZMQ_PORTNO 70001
|
||||||
|
|
||||||
class ZmqSocket {
|
class ZmqSocket {
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ void DataProcessor::ProcessAnImage(char* buf) {
|
|||||||
|
|
||||||
|
|
||||||
if (*fileWriteEnable)
|
if (*fileWriteEnable)
|
||||||
file->WriteToFile(buf, generalData->fifoBufferSize + sizeof(sls_detector_header), fnum-firstMeasurementIndex, nump);
|
file->WriteToFile(buf, generalData->imageSize + sizeof(sls_detector_header), fnum-firstMeasurementIndex, nump);
|
||||||
|
|
||||||
if (rawDataReadyCallBack) {
|
if (rawDataReadyCallBack) {
|
||||||
rawDataReadyCallBack(
|
rawDataReadyCallBack(
|
||||||
|
@ -29,7 +29,8 @@ File::File(int ind, uint32_t maxf, const uint32_t* ppf,
|
|||||||
numUnitsPerDetector(nunits),
|
numUnitsPerDetector(nunits),
|
||||||
numImages(nf),
|
numImages(nf),
|
||||||
dynamicRange(dr),
|
dynamicRange(dr),
|
||||||
udpPortNumber(portno)
|
udpPortNumber(portno),
|
||||||
|
fifo(f)
|
||||||
|
|
||||||
{
|
{
|
||||||
master = index?false:true;
|
master = index?false:true;
|
||||||
|
@ -58,6 +58,15 @@ Listener::Listener(detectorType dtype, Fifo*& f, runStatus* s, uint32_t* portno,
|
|||||||
}
|
}
|
||||||
NumberofListeners++;
|
NumberofListeners++;
|
||||||
FILE_LOG (logDEBUG) << "Number of Listeners: " << NumberofListeners;
|
FILE_LOG (logDEBUG) << "Number of Listeners: " << NumberofListeners;
|
||||||
|
|
||||||
|
switch(myDetectorType){
|
||||||
|
case JUNGFRAU:
|
||||||
|
standardheader = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
standardheader = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -318,7 +327,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
//if(!index) cprintf(RED,"carry flag\n");
|
//if(!index) cprintf(RED,"carry flag\n");
|
||||||
//check if its the current image packet
|
//check if its the current image packet
|
||||||
// -------------------------- new header ----------------------------------------------------------------------
|
// -------------------------- new header ----------------------------------------------------------------------
|
||||||
if (myDetectorType == JUNGFRAU) {
|
if (standardheader) {
|
||||||
old_header = (sls_detector_header*) (carryOverPacket + esize);
|
old_header = (sls_detector_header*) (carryOverPacket + esize);
|
||||||
fnum = old_header->frameNumber;
|
fnum = old_header->frameNumber;
|
||||||
pnum = old_header->packetNumber;
|
pnum = old_header->packetNumber;
|
||||||
@ -346,7 +355,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
//writer header
|
//writer header
|
||||||
if(isHeaderEmpty) {
|
if(isHeaderEmpty) {
|
||||||
// -------------------------- new header ----------------------------------------------------------------------
|
// -------------------------- new header ----------------------------------------------------------------------
|
||||||
if (myDetectorType == JUNGFRAU) {
|
if (standardheader) {
|
||||||
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
||||||
}
|
}
|
||||||
// -------------------old header ------------------------------------------------------------------------------
|
// -------------------old header ------------------------------------------------------------------------------
|
||||||
@ -387,7 +396,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
numPacketsCaught++; //record immediately to get more time before socket shutdown
|
numPacketsCaught++; //record immediately to get more time before socket shutdown
|
||||||
|
|
||||||
// -------------------------- new header ----------------------------------------------------------------------
|
// -------------------------- new header ----------------------------------------------------------------------
|
||||||
if (myDetectorType == JUNGFRAU) {
|
if (standardheader) {
|
||||||
old_header = (sls_detector_header*) (listeningPacket + esize);
|
old_header = (sls_detector_header*) (listeningPacket + esize);
|
||||||
fnum = old_header->frameNumber;
|
fnum = old_header->frameNumber;
|
||||||
pnum = old_header->packetNumber;
|
pnum = old_header->packetNumber;
|
||||||
@ -426,7 +435,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
numpackets++; //number of packets in this image (each time its copied to buf)
|
numpackets++; //number of packets in this image (each time its copied to buf)
|
||||||
if(isHeaderEmpty) {
|
if(isHeaderEmpty) {
|
||||||
// -------------------------- new header ----------------------------------------------------------------------
|
// -------------------------- new header ----------------------------------------------------------------------
|
||||||
if (myDetectorType == JUNGFRAU) {
|
if (standardheader) {
|
||||||
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
||||||
}
|
}
|
||||||
// -------------------old header ------------------------------------------------------------------------------
|
// -------------------old header ------------------------------------------------------------------------------
|
||||||
|
@ -443,7 +443,7 @@ int UDPStandardImplementation::startReceiver(char *c) {
|
|||||||
//callbacks
|
//callbacks
|
||||||
if (startAcquisitionCallBack) {
|
if (startAcquisitionCallBack) {
|
||||||
startAcquisitionCallBack(filePath, fileName, fileIndex,
|
startAcquisitionCallBack(filePath, fileName, fileIndex,
|
||||||
(generalData->fifoBufferSize) * numberofJobs + (generalData->fifoBufferHeaderSize), pStartAcquisition);
|
(generalData->imageSize) * numberofJobs + (generalData->fifoBufferHeaderSize), pStartAcquisition);
|
||||||
if (rawDataReadyCallBack != NULL) {
|
if (rawDataReadyCallBack != NULL) {
|
||||||
cout << "Data Write has been defined externally" << endl;
|
cout << "Data Write has been defined externally" << endl;
|
||||||
}
|
}
|
||||||
@ -728,7 +728,7 @@ int UDPStandardImplementation::SetupFifoStructure() {
|
|||||||
//create fifo structure
|
//create fifo structure
|
||||||
bool success = true;
|
bool success = true;
|
||||||
fifo.push_back( new Fifo (
|
fifo.push_back( new Fifo (
|
||||||
(generalData->fifoBufferSize) * numberofJobs + (generalData->fifoBufferHeaderSize),
|
(generalData->imageSize) * numberofJobs + (generalData->fifoBufferHeaderSize),
|
||||||
fifoDepth, success));
|
fifoDepth, success));
|
||||||
if (!success) {
|
if (!success) {
|
||||||
cprintf(BG_RED,"Error: Could not allocate memory for fifo structure of index %d\n", i);
|
cprintf(BG_RED,"Error: Could not allocate memory for fifo structure of index %d\n", i);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user