mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-04 03:40:04 +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 */
|
||||
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*/
|
||||
uint32_t fifoBufferHeaderSize;
|
||||
|
||||
@ -100,7 +97,6 @@ public:
|
||||
packetIndexMask(0),
|
||||
packetIndexOffset(0),
|
||||
maxFramesPerFile(0),
|
||||
fifoBufferSize(0),
|
||||
fifoBufferHeaderSize(0),
|
||||
defaultFifoDepth(0),
|
||||
threadsPerReceiver(1),
|
||||
@ -210,7 +206,6 @@ public:
|
||||
packetIndexMask,
|
||||
packetIndexOffset,
|
||||
maxFramesPerFile,
|
||||
fifoBufferSize,
|
||||
fifoBufferHeaderSize,
|
||||
defaultFifoDepth,
|
||||
threadsPerReceiver,
|
||||
@ -240,7 +235,6 @@ class GotthardData : public GeneralData {
|
||||
frameIndexOffset = 1;
|
||||
packetIndexMask = 1;
|
||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 25000;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -266,7 +260,6 @@ class ShortGotthardData : public GeneralData {
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
frameIndexMask = 0xFFFFFFFF;
|
||||
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 25000;
|
||||
nPixelsX_Streamer = 1280;
|
||||
@ -331,7 +324,6 @@ class PropixData : public GeneralData {
|
||||
frameIndexOffset = 1;
|
||||
packetIndexMask = 1;
|
||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 25000;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -362,7 +354,6 @@ class Moench02Data : public GeneralData {
|
||||
frameIndexOffset = 8;
|
||||
packetIndexMask = 0xFF;
|
||||
maxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 2500;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -398,7 +389,6 @@ class Moench03Data : public GeneralData {
|
||||
frameIndexOffset = (6+8);
|
||||
packetIndexMask = 0xFFFFFFFF;
|
||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 2500;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -426,7 +416,6 @@ class JCTBData : public GeneralData {
|
||||
packetsPerFrame = 1;
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 2500;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -460,7 +449,6 @@ class JungfrauData : public GeneralData {
|
||||
packetsPerFrame = 128;
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 2500;
|
||||
nPixelsX_Streamer = nPixelsX;
|
||||
@ -509,7 +497,6 @@ private:
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
frameIndexMask = 0xffffff;
|
||||
maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE;
|
||||
fifoBufferSize = imageSize;
|
||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||
defaultFifoDepth = 100;
|
||||
footerOffset = headerSizeinPacket + dataSize;
|
||||
@ -564,7 +551,6 @@ private:
|
||||
void SetDynamicRange(int dr, bool tgEnable) {
|
||||
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
fifoBufferSize = packetSize*packetsPerFrame;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -574,10 +560,9 @@ private:
|
||||
*/
|
||||
void SetTenGigaEnable(bool tgEnable, int dr) {
|
||||
dataSize = (tgEnable ? 4096 : 1024);
|
||||
packetSize = (tgEnable ? 4112 : 1040);;
|
||||
packetSize = (tgEnable ? 4112 : 1040);
|
||||
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
||||
imageSize = dataSize*packetsPerFrame;
|
||||
fifoBufferSize = packetSize*packetsPerFrame;
|
||||
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 */
|
||||
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
|
||||
using namespace rapidjson;
|
||||
|
||||
#define DEFAULT_ZMQ_PORTNO 40001
|
||||
#define DEFAULT_ZMQ_PORTNO 70001
|
||||
|
||||
class ZmqSocket {
|
||||
|
||||
|
@ -330,7 +330,7 @@ void DataProcessor::ProcessAnImage(char* buf) {
|
||||
|
||||
|
||||
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) {
|
||||
rawDataReadyCallBack(
|
||||
|
@ -29,7 +29,8 @@ File::File(int ind, uint32_t maxf, const uint32_t* ppf,
|
||||
numUnitsPerDetector(nunits),
|
||||
numImages(nf),
|
||||
dynamicRange(dr),
|
||||
udpPortNumber(portno)
|
||||
udpPortNumber(portno),
|
||||
fifo(f)
|
||||
|
||||
{
|
||||
master = index?false:true;
|
||||
|
@ -58,6 +58,15 @@ Listener::Listener(detectorType dtype, Fifo*& f, runStatus* s, uint32_t* portno,
|
||||
}
|
||||
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");
|
||||
//check if its the current image packet
|
||||
// -------------------------- new header ----------------------------------------------------------------------
|
||||
if (myDetectorType == JUNGFRAU) {
|
||||
if (standardheader) {
|
||||
old_header = (sls_detector_header*) (carryOverPacket + esize);
|
||||
fnum = old_header->frameNumber;
|
||||
pnum = old_header->packetNumber;
|
||||
@ -346,7 +355,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
//writer header
|
||||
if(isHeaderEmpty) {
|
||||
// -------------------------- new header ----------------------------------------------------------------------
|
||||
if (myDetectorType == JUNGFRAU) {
|
||||
if (standardheader) {
|
||||
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
||||
}
|
||||
// -------------------old header ------------------------------------------------------------------------------
|
||||
@ -387,7 +396,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
||||
numPacketsCaught++; //record immediately to get more time before socket shutdown
|
||||
|
||||
// -------------------------- new header ----------------------------------------------------------------------
|
||||
if (myDetectorType == JUNGFRAU) {
|
||||
if (standardheader) {
|
||||
old_header = (sls_detector_header*) (listeningPacket + esize);
|
||||
fnum = old_header->frameNumber;
|
||||
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)
|
||||
if(isHeaderEmpty) {
|
||||
// -------------------------- new header ----------------------------------------------------------------------
|
||||
if (myDetectorType == JUNGFRAU) {
|
||||
if (standardheader) {
|
||||
memcpy((char*)new_header, (char*)old_header, sizeof(sls_detector_header));
|
||||
}
|
||||
// -------------------old header ------------------------------------------------------------------------------
|
||||
|
@ -443,7 +443,7 @@ int UDPStandardImplementation::startReceiver(char *c) {
|
||||
//callbacks
|
||||
if (startAcquisitionCallBack) {
|
||||
startAcquisitionCallBack(filePath, fileName, fileIndex,
|
||||
(generalData->fifoBufferSize) * numberofJobs + (generalData->fifoBufferHeaderSize), pStartAcquisition);
|
||||
(generalData->imageSize) * numberofJobs + (generalData->fifoBufferHeaderSize), pStartAcquisition);
|
||||
if (rawDataReadyCallBack != NULL) {
|
||||
cout << "Data Write has been defined externally" << endl;
|
||||
}
|
||||
@ -728,7 +728,7 @@ int UDPStandardImplementation::SetupFifoStructure() {
|
||||
//create fifo structure
|
||||
bool success = true;
|
||||
fifo.push_back( new Fifo (
|
||||
(generalData->fifoBufferSize) * numberofJobs + (generalData->fifoBufferHeaderSize),
|
||||
(generalData->imageSize) * numberofJobs + (generalData->fifoBufferHeaderSize),
|
||||
fifoDepth, success));
|
||||
if (!success) {
|
||||
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