diff --git a/slsReceiverSoftware/include/DataStreamer.h b/slsReceiverSoftware/include/DataStreamer.h index 6db211be5..cd30f68d3 100644 --- a/slsReceiverSoftware/include/DataStreamer.h +++ b/slsReceiverSoftware/include/DataStreamer.h @@ -23,8 +23,9 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject { * @param f address of Fifo pointer * @param dr pointer to dynamic range * @param sEnable pointer to short frame enable + * @param fi pointer to file index */ - DataStreamer(Fifo*& f, uint32_t* dr, int* sEnable); + DataStreamer(Fifo*& f, uint32_t* dr, int* sEnable, uint64_t* fi); /** * Destructor @@ -198,6 +199,9 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject { /** Pointer to short frame enable */ int* shortFrameEnable; + /** Pointer to file index */ + uint64_t* fileIndex; + /** Aquisition Started flag */ bool acquisitionStartedFlag; diff --git a/slsReceiverSoftware/include/ZmqSocket.h b/slsReceiverSoftware/include/ZmqSocket.h index 127528470..37803bc0c 100644 --- a/slsReceiverSoftware/include/ZmqSocket.h +++ b/slsReceiverSoftware/include/ZmqSocket.h @@ -246,7 +246,7 @@ public: * @param dummy true if end of acquistion else false * @returns 0 if error, else 1 */ - int SendHeaderData ( int index, bool dummy, uint32_t jsonversion, uint32_t dynamicrange = 0, + int SendHeaderData ( int index, bool dummy, uint32_t jsonversion, uint32_t dynamicrange = 0, uint64_t fileIndex = 0, uint32_t npixelsx = 0, uint32_t npixelsy = 0, uint64_t acqIndex = 0, uint64_t fIndex = 0, char* fname = NULL, uint64_t frameNumber = 0, uint32_t expLength = 0, uint32_t packetNumber = 0, @@ -261,8 +261,9 @@ public: const char* jsonHeaderFormat = "{" "\"jsonversion\":%u, " - "\"bitmode\":%d, " - "\"shape\":[%d, %d], " + "\"bitmode\":%u, " + "\"fileIndex\":%llu, " + "\"shape\":[%u, %u], " "\"acqIndex\":%llu, " "\"fIndex\":%llu, " "\"fname\":\"%s\", " @@ -283,7 +284,7 @@ public: "\"version\":%u" "}\n\0"; int length = sprintf(buf, jsonHeaderFormat, - jsonversion, dynamicrange, npixelsx, npixelsy, + jsonversion, dynamicrange, fileIndex, npixelsx, npixelsy, acqIndex, fIndex, (fname == NULL)? "":fname, dummy?0:1, frameNumber, expLength, packetNumber, bunchId, timestamp, modId, xCoord, yCoord, zCoord, debug, roundRNumber, diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index ddc013f1b..a041f4d7c 100644 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -26,13 +26,14 @@ pthread_mutex_t DataStreamer::Mutex = PTHREAD_MUTEX_INITIALIZER; bool DataStreamer::SilentMode(false); -DataStreamer::DataStreamer(Fifo*& f, uint32_t* dr, int* sEnable) : +DataStreamer::DataStreamer(Fifo*& f, uint32_t* dr, int* sEnable, uint64_t* fi) : ThreadObject(NumberofDataStreamers), generalData(0), fifo(f), zmqSocket(0), dynamicRange(dr), shortFrameEnable(sEnable), + fileIndex(fi), acquisitionStartedFlag(false), measurementStartedFlag(false), firstAcquisitionIndex(0), @@ -270,7 +271,7 @@ int DataStreamer::SendHeader(sls_detector_header* header, bool dummy) { uint64_t frameIndex = header->frameNumber - firstMeasurementIndex; 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, *fileIndex, generalData->nPixelsX_Streamer, generalData->nPixelsY_Streamer, acquisitionIndex, frameIndex, fileNametoStream, header->frameNumber, header->expLength, header->packetNumber, header->bunchId, header->timestamp, diff --git a/slsReceiverSoftware/src/UDPStandardImplementation.cpp b/slsReceiverSoftware/src/UDPStandardImplementation.cpp index d19dc6141..6e79edc08 100644 --- a/slsReceiverSoftware/src/UDPStandardImplementation.cpp +++ b/slsReceiverSoftware/src/UDPStandardImplementation.cpp @@ -209,7 +209,7 @@ int UDPStandardImplementation::setDataStreamEnable(const bool enable) {\ if (enable) { bool error = false; for ( int i = 0; i < numThreads; ++i ) { - dataStreamer.push_back(new DataStreamer(fifo[i], &dynamicRange, &shortFrameEnable)); + dataStreamer.push_back(new DataStreamer(fifo[i], &dynamicRange, &shortFrameEnable, &fileIndex)); dataStreamer[i]->SetGeneralData(generalData); // check again if (streamingPort == 0)