somewhere in between

This commit is contained in:
Dhanya Maliakal 2017-10-03 12:09:31 +02:00
parent 7cde5dbe38
commit 4669d408d4
3 changed files with 33 additions and 46 deletions

View File

@ -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;

View File

@ -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;
}; };
/** /**

View File

@ -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,