mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 16:20:03 +02:00
somewhere in between
This commit is contained in:
parent
7cde5dbe38
commit
4669d408d4
@ -153,10 +153,12 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
/**
|
/**
|
||||||
* Create and send Json Header
|
* Create and send Json Header
|
||||||
* @param header header of image
|
* @param header header of image
|
||||||
|
* @param nx number of pixels in x dim
|
||||||
|
* @param ny number of pixels in y dim
|
||||||
* @param dummy true if its a dummy header
|
* @param dummy true if its a dummy header
|
||||||
* @returns 0 if error, else 1
|
* @returns 0 if error, else 1
|
||||||
*/
|
*/
|
||||||
int SendHeader(sls_detector_header* header, bool dummy = false);
|
int SendHeader(sls_detector_header* header, uint32_t nx = 0, uint32_t ny = 0, bool dummy = true);
|
||||||
|
|
||||||
/** type of thread */
|
/** type of thread */
|
||||||
static const std::string TypeName;
|
static const std::string TypeName;
|
||||||
|
@ -71,13 +71,13 @@ public:
|
|||||||
uint32_t headerPacketSize;
|
uint32_t headerPacketSize;
|
||||||
|
|
||||||
/** Streaming (for ROI - mainly short Gotthard) - Number of Pixels in x axis */
|
/** Streaming (for ROI - mainly short Gotthard) - Number of Pixels in x axis */
|
||||||
uint32_t nPixelsX_Streamer;
|
uint32_t nPixelsXComplete;
|
||||||
|
|
||||||
/** Streaming (for ROI - mainly short Gotthard) - Number of Pixels in y axis */
|
/** Streaming (for ROI - mainly short Gotthard) - Number of Pixels in y axis */
|
||||||
uint32_t nPixelsY_Streamer;
|
uint32_t nPixelsYComplete;
|
||||||
|
|
||||||
/** Streaming (for ROI - mainly short Gotthard) - Image size (in bytes) */
|
/** Streaming (for ROI - mainly short Gotthard) - Image size (in bytes) */
|
||||||
uint32_t imageSize_Streamer;
|
uint32_t imageSizeComplete;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -102,9 +102,9 @@ public:
|
|||||||
defaultFifoDepth(0),
|
defaultFifoDepth(0),
|
||||||
threadsPerReceiver(1),
|
threadsPerReceiver(1),
|
||||||
headerPacketSize(0),
|
headerPacketSize(0),
|
||||||
nPixelsX_Streamer(0),
|
nPixelsXComplete(0),
|
||||||
nPixelsY_Streamer(0),
|
nPixelsYComplete(0),
|
||||||
imageSize_Streamer(0)
|
imageSizeComplete(0)
|
||||||
{};
|
{};
|
||||||
|
|
||||||
/** Destructor */
|
/** Destructor */
|
||||||
@ -204,9 +204,9 @@ public:
|
|||||||
FILE_LOG(logDEBUG) << "Default Fifo Depth: " << defaultFifoDepth;
|
FILE_LOG(logDEBUG) << "Default Fifo Depth: " << defaultFifoDepth;
|
||||||
FILE_LOG(logDEBUG) << "Threads Per Receiver: " << threadsPerReceiver;
|
FILE_LOG(logDEBUG) << "Threads Per Receiver: " << threadsPerReceiver;
|
||||||
FILE_LOG(logDEBUG) << "Header Packet Size: " << headerPacketSize;
|
FILE_LOG(logDEBUG) << "Header Packet Size: " << headerPacketSize;
|
||||||
FILE_LOG(logDEBUG) << "Streamer Pixels X: " << nPixelsX_Streamer;
|
FILE_LOG(logDEBUG) << "Complete Pixels X: " << nPixelsXComplete;
|
||||||
FILE_LOG(logDEBUG) << "Streamer Pixels Y: " << nPixelsY_Streamer;
|
FILE_LOG(logDEBUG) << "Complete Pixels Y: " << nPixelsYComplete;
|
||||||
FILE_LOG(logDEBUG) << "Streamer Image Size: " << imageSize_Streamer;
|
FILE_LOG(logDEBUG) << "Complete Image Size: " << imageSizeComplete;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -231,9 +231,6 @@ class GotthardData : public GeneralData {
|
|||||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 50000;
|
defaultFifoDepth = 50000;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -256,9 +253,9 @@ class ShortGotthardData : public GeneralData {
|
|||||||
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = SHORT_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 50000;
|
defaultFifoDepth = 50000;
|
||||||
nPixelsX_Streamer = 1280;
|
nPixelsXComplete = 1280;
|
||||||
nPixelsY_Streamer = 1;
|
nPixelsYComplete = 1;
|
||||||
imageSize_Streamer = 1280 * 2;
|
imageSizeComplete = 1280 * 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -320,9 +317,6 @@ class PropixData : public GeneralData {
|
|||||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
|
||||||
defaultFifoDepth = 50000;
|
defaultFifoDepth = 50000;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -350,9 +344,6 @@ class Moench02Data : public GeneralData {
|
|||||||
maxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MOENCH_MAX_FRAMES_PER_FILE;
|
||||||
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;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -385,9 +376,6 @@ class Moench03Data : public GeneralData {
|
|||||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
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;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -426,9 +414,6 @@ private:
|
|||||||
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFCTB_MAX_FRAMES_PER_FILE;
|
||||||
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;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -499,9 +484,6 @@ class JungfrauData : public GeneralData {
|
|||||||
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = JFRAU_MAX_FRAMES_PER_FILE;
|
||||||
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;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -527,9 +509,6 @@ class EigerData : public GeneralData {
|
|||||||
defaultFifoDepth = 100;
|
defaultFifoDepth = 100;
|
||||||
threadsPerReceiver = 2;
|
threadsPerReceiver = 2;
|
||||||
headerPacketSize = 40;
|
headerPacketSize = 40;
|
||||||
nPixelsX_Streamer = nPixelsX;
|
|
||||||
nPixelsY_Streamer = nPixelsY;
|
|
||||||
imageSize_Streamer = imageSize;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -114,8 +114,8 @@ void DataStreamer::ResetParametersforNewMeasurement(char* fname){
|
|||||||
completeBuffer = 0;
|
completeBuffer = 0;
|
||||||
}
|
}
|
||||||
if (*shortFrameEnable >= 0) {
|
if (*shortFrameEnable >= 0) {
|
||||||
completeBuffer = new char[generalData->imageSize_Streamer];
|
completeBuffer = new char[generalData->imageSizeComplete];
|
||||||
memset(completeBuffer, 0, generalData->imageSize_Streamer);
|
memset(completeBuffer, 0, generalData->imageSizeComplete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ void DataStreamer::StopProcessing(char* buf) {
|
|||||||
#endif
|
#endif
|
||||||
sls_detector_header* header = (sls_detector_header*) (buf);
|
sls_detector_header* header = (sls_detector_header*) (buf);
|
||||||
//send dummy header and data
|
//send dummy header and data
|
||||||
if (!SendHeader(header, true))
|
if (!SendHeader(header, 0, 0, true))
|
||||||
bprintf(RED,"Error: Could not send zmq dummy header for streamer %d\n", index);
|
bprintf(RED,"Error: Could not send zmq dummy header for streamer %d\n", index);
|
||||||
|
|
||||||
fifo->FreeAddress(buf);
|
fifo->FreeAddress(buf);
|
||||||
@ -234,19 +234,25 @@ void DataStreamer::ProcessAnImage(char* buf) {
|
|||||||
RecordFirstIndices(fnum);
|
RecordFirstIndices(fnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SendHeader(header))
|
//shortframe gotthard
|
||||||
bprintf(RED,"Error: Could not send zmq header for fnum %lld and streamer %d\n",
|
|
||||||
(long long int) fnum, index);
|
|
||||||
|
|
||||||
//shortframe gotthard - data sending
|
|
||||||
if (completeBuffer) {
|
if (completeBuffer) {
|
||||||
|
|
||||||
|
if (!SendHeader(header, generalData->nPixelsXComplete, generalData->nPixelsYComplete, false))
|
||||||
|
bprintf(RED,"Error: Could not send zmq header for fnum %lld and streamer %d\n",
|
||||||
|
(long long int) fnum, index);
|
||||||
|
|
||||||
memcpy(completeBuffer + ((generalData->imageSize)**shortFrameEnable), buf + sizeof(sls_detector_header), generalData->imageSize);
|
memcpy(completeBuffer + ((generalData->imageSize)**shortFrameEnable), buf + sizeof(sls_detector_header), generalData->imageSize);
|
||||||
if (!zmqSocket->SendData(completeBuffer, generalData->imageSize_Streamer))
|
if (!zmqSocket->SendData(completeBuffer, generalData->imageSizeComplete))
|
||||||
bprintf(RED,"Error: Could not send zmq data for fnum %lld and streamer %d\n",
|
bprintf(RED,"Error: Could not send zmq data for fnum %lld and streamer %d\n",
|
||||||
(long long int) fnum, index);
|
(long long int) fnum, index);
|
||||||
}
|
}
|
||||||
//normal - data sending
|
//normal
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
if (!SendHeader(header, generalData->nPixelsX, generalData->nPixelsY, false))
|
||||||
|
bprintf(RED,"Error: Could not send zmq header for fnum %lld and streamer %d\n",
|
||||||
|
(long long int) fnum, index);
|
||||||
|
|
||||||
if (!zmqSocket->SendData(buf + sizeof(sls_detector_header), generalData->imageSize))
|
if (!zmqSocket->SendData(buf + sizeof(sls_detector_header), generalData->imageSize))
|
||||||
bprintf(RED,"Error: Could not send zmq data for fnum %lld and streamer %d\n",
|
bprintf(RED,"Error: Could not send zmq data for fnum %lld and streamer %d\n",
|
||||||
(long long int) fnum, index);
|
(long long int) fnum, index);
|
||||||
@ -255,7 +261,7 @@ void DataStreamer::ProcessAnImage(char* buf) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int DataStreamer::SendHeader(sls_detector_header* header, bool dummy) {
|
int DataStreamer::SendHeader(sls_detector_header* header, uint32_t nx, uint32_t ny, bool dummy) {
|
||||||
|
|
||||||
if (dummy)
|
if (dummy)
|
||||||
return zmqSocket->SendHeaderData(index, dummy,SLS_DETECTOR_JSON_HEADER_VERSION);
|
return zmqSocket->SendHeaderData(index, dummy,SLS_DETECTOR_JSON_HEADER_VERSION);
|
||||||
@ -264,7 +270,7 @@ int DataStreamer::SendHeader(sls_detector_header* header, bool dummy) {
|
|||||||
uint64_t acquisitionIndex = header->frameNumber - firstAcquisitionIndex;
|
uint64_t acquisitionIndex = header->frameNumber - firstAcquisitionIndex;
|
||||||
|
|
||||||
return zmqSocket->SendHeaderData(index, dummy, SLS_DETECTOR_JSON_HEADER_VERSION, *dynamicRange,
|
return zmqSocket->SendHeaderData(index, dummy, SLS_DETECTOR_JSON_HEADER_VERSION, *dynamicRange,
|
||||||
generalData->nPixelsX_Streamer, generalData->nPixelsY_Streamer,
|
nx, ny,
|
||||||
acquisitionIndex, frameIndex, fileNametoStream,
|
acquisitionIndex, frameIndex, fileNametoStream,
|
||||||
header->frameNumber, header->expLength, header->packetNumber, header->bunchId, header->timestamp,
|
header->frameNumber, header->expLength, header->packetNumber, header->bunchId, header->timestamp,
|
||||||
header->modId, header->xCoord, header->yCoord, header->zCoord,
|
header->modId, header->xCoord, header->yCoord, header->zCoord,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user