diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index cac999d42..14fc5a4c2 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -1783,7 +1783,7 @@ int ClientInterface::set_receiver_roi_metadata(Interface &socket) { } int ClientInterface::get_bunch_size(Interface &socket) { - int retval = impl()->getBunchSize(); + int retval = static_cast(impl()->getBunchSize()); LOG(logDEBUG1) << "bunch size retval:" << retval; return socket.sendResult(retval); } @@ -1796,7 +1796,7 @@ int ClientInterface::set_bunch_size(Interface &socket) { verifyIdle(socket); LOG(logDEBUG1) << "Setting bunch size:" << value; try { - impl()->setBunchSize(value); + impl()->setBunchSize(static_cast(value)); } catch (const RuntimeError &e) { throw RuntimeError("Could not set rx bunch size due to fifo structure memory allocation."); } diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index e6d869bde..92430000e 100644 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -60,7 +60,7 @@ void DataProcessor::SetReceiverROI(ROI roi) { receiverRoiEnabled_ = receiverRoi_.completeRoi() ? false : true; } -void DataProcessor::SetBunchSize(uint32_t value) { +void DataProcessor::SetBunchSize(size_t value) { fifoBunchSize = value; } @@ -267,7 +267,8 @@ void DataProcessor::ThreadExecution() { << static_cast(buffer) << std::dec; char* tempBuffer = buffer; - for (uint32_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { + for (size_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { + LOG(logDEBUG1) << "iFrame:" << iFrame; // end of acquisition (check dummy) auto numBytes = *reinterpret_cast(tempBuffer); @@ -295,19 +296,26 @@ void DataProcessor::ThreadExecution() { memcpy(buffer + generalData_->fifoBufferHeaderSize, &completeImageToStreamBeforeCropping[0], generalData_->imageSize); } fifo_->PushAddressToStream(buffer); + LOG(logINFORED) << "push to stream!??"; + } else { fifo_->FreeAddress(buffer); + LOG(logDEBUG1) << "Pushed (free) dataprocessing bunch (EOA) " << std::hex << static_cast(buffer) << std::dec; } } void DataProcessor::StopProcessing(char *buf) { - LOG(logINFORED) << "DataProcessing " << index << ": Dummy"; + LOG(logDEBUG1) << "DataProcessing " << index << ": Dummy"; // stream dummy or free - if (*dataStreamEnable_) + if (*dataStreamEnable_) { + LOG(logINFORED) << "push to stream!??"; fifo_->PushAddressToStream(buf); - else + } + else { fifo_->FreeAddress(buf); + LOG(logDEBUG1) << "Pushed (free) stop proc dataprocessing bunch (EOA) " << std::hex << static_cast(buf) << std::dec; + } CloseFiles(); StopRunning(); diff --git a/slsReceiverSoftware/src/DataProcessor.h b/slsReceiverSoftware/src/DataProcessor.h index 5d558072c..639cc5cfe 100644 --- a/slsReceiverSoftware/src/DataProcessor.h +++ b/slsReceiverSoftware/src/DataProcessor.h @@ -44,7 +44,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { void SetReceiverROI(ROI roi); void ResetParametersforNewAcquisition(); void SetGeneralData(GeneralData *generalData); - void SetBunchSize(uint32_t value); + void SetBunchSize(size_t value); void CloseFiles(); void DeleteFiles(); @@ -187,9 +187,9 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { File *dataFile_{nullptr}; - uint32_t fifoBunchSize{0}; + size_t fifoBunchSize{0}; /** size in memory including headers */ - uint32_t fifoBunchSizeBytes{0}; + size_t fifoBunchSizeBytes{0}; // call back /** diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index d0565d5f0..4f93ba77b 100644 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -81,7 +81,7 @@ void DataStreamer::SetAdditionalJsonHeader( isAdditionalJsonUpdated = true; } -void DataStreamer::SetBunchSize(uint32_t value) { +void DataStreamer::SetBunchSize(size_t value) { fifoBunchSize = value; } @@ -126,7 +126,7 @@ void DataStreamer::ThreadExecution() { << std::hex << (void *)(buffer) << std::dec << ":" << buffer; char* tempBuffer = buffer; - for (uint32_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { + for (size_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { // end of acquisition (check dummy) auto numBytes = *reinterpret_cast(tempBuffer); diff --git a/slsReceiverSoftware/src/DataStreamer.h b/slsReceiverSoftware/src/DataStreamer.h index bc38ac9f0..13eacf773 100644 --- a/slsReceiverSoftware/src/DataStreamer.h +++ b/slsReceiverSoftware/src/DataStreamer.h @@ -56,7 +56,7 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { void SetFlipRows(bool fd); void SetAdditionalJsonHeader(const std::map &json); - void SetBunchSize(uint32_t value); + void SetBunchSize(size_t value); /** * Creates Zmq Sockets @@ -137,9 +137,9 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { bool *quadEnable; uint64_t *totalNumFrames; - uint32_t fifoBunchSize{0}; + size_t fifoBunchSize{0}; /** size in memory including headers */ - uint32_t fifoBunchSizeBytes{0}; + size_t fifoBunchSizeBytes{0}; }; } // namespace sls diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 69f37c378..bfb046322 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -455,9 +455,9 @@ void Implementation::setReceiverROIMetadata(const ROI arg) { LOG(logINFO) << "receiver roi Metadata: " << ToString(receiverRoiMetadata); } -uint32_t Implementation::getBunchSize() const { return bunchSize; } +size_t Implementation::getBunchSize() const { return bunchSize; } -void Implementation::setBunchSize(const uint32_t i) { +void Implementation::setBunchSize(const size_t i) { if (bunchSize != i) { bunchSize = i; for (const auto &it : listener) diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index 1c8708581..64ede98df 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -59,8 +59,8 @@ class Implementation : private virtual slsDetectorDefs { ROI getReceiverROI() const; void setReceiverROI(const ROI arg); void setReceiverROIMetadata(const ROI arg); - uint32_t getBunchSize() const; - void setBunchSize(const uint32_t i); + size_t getBunchSize() const; + void setBunchSize(const size_t i); /************************************************** * * @@ -313,7 +313,7 @@ class Implementation : private virtual slsDetectorDefs { std::array portRois{}; // receiver roi for complete detector for metadata ROI receiverRoiMetadata{}; - uint32_t bunchSize{0}; + size_t bunchSize{0}; // file parameters fileFormat fileFormatType{BINARY}; diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index 548492988..2e474b54b 100644 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -126,7 +126,7 @@ void Listener::SetGeneralData(GeneralData *g) { generalData = g; } void Listener::SetActivate(bool enable) { activated = enable; } -void Listener::SetBunchSize(uint32_t value) { +void Listener::SetBunchSize(size_t value) { fifoBunchSize = value; } @@ -232,47 +232,51 @@ void Listener::SetHardCodedPosition(uint16_t r, uint16_t c) { void Listener::ThreadExecution() { char *buffer; fifo->GetNewAddress(buffer); - LOG(logDEBUG5) << "Listener " << index + LOG(logDEBUG1) << "Listener " << index << ", " "pop 0x" << std::hex << (void *)(buffer) << std::dec << ":" << buffer; // get data char* tempBuffer = buffer; - for (uint32_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { + for (size_t iFrame = 0; iFrame != fifoBunchSize; iFrame ++) { // end of acquisition or not activated if ((*status == TRANSMITTING || !udpSocketAlive) && !carryOverFlag) { (*((uint32_t *)tempBuffer)) = DUMMY_PACKET_VALUE; + LOG(logDEBUG1) << iFrame << ": dummy=" << DUMMY_PACKET_VALUE; StopListening(buffer); return; } - LOG(logDEBUG) << "iframe:" << iFrame << " currentframeindex:" << currentFrameIndex; + LOG(logDEBUG1) << "iframe:" << iFrame << " currentframeindex:" << currentFrameIndex; int rc = ListenToAnImage(tempBuffer); // socket closed or discarding image (free retake) // weird frame numbers (print and rc = 0), then retake if (rc <= 0) { if (udpSocketAlive) { + LOG(logDEBUG1) << iFrame << ": rc<=0" << std::hex << static_cast(tempBuffer) << std::dec; --iFrame; } } else { (*((uint32_t *)tempBuffer)) = rc; + LOG(logDEBUG1) << iFrame << ": rc=" << rc << " addr:" << std::hex << static_cast(tempBuffer) << std::dec; tempBuffer += fifoBunchSizeBytes; } } // last check - if ((*status != TRANSMITTING || !udpSocketAlive) && !carryOverFlag) { + /* if ((*status != TRANSMITTING || !udpSocketAlive) && !carryOverFlag) { LOG(logINFOBLUE) << "Last check " << std::hex << static_cast(tempBuffer) << std::dec; (*((uint32_t *)tempBuffer)) = DUMMY_PACKET_VALUE; + LOG(logINFOBLUE) << ": dummy=" << DUMMY_PACKET_VALUE; StopListening(buffer); return; - } + }*/ // push into fifo fifo->PushAddress(buffer); - LOG(logINFOBLUE) << "Pushed Listening bunch " << (void*)(buffer); + LOG(logDEBUG1) << "Pushed Listening bunch " << std::hex << static_cast(tempBuffer) << std::dec; // Statistics if (!(*silentMode)) { @@ -287,7 +291,7 @@ void Listener::ThreadExecution() { void Listener::StopListening(char *buf) { fifo->PushAddress(buf); - LOG(logINFOBLUE) << "Pushed Listening bunch (EOA) " << (void*)(buf); + LOG(logDEBUG1) << "Pushed Listening bunch (EOA) " << std::hex << static_cast(buf) << std::dec; StopRunning(); LOG(logDEBUG1) << index << ": Listening Packets (" << *udpPortNumber << ") : " << numPacketsCaught; diff --git a/slsReceiverSoftware/src/Listener.h b/slsReceiverSoftware/src/Listener.h index 6f723f760..13404d190 100644 --- a/slsReceiverSoftware/src/Listener.h +++ b/slsReceiverSoftware/src/Listener.h @@ -65,7 +65,7 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { void ResetParametersforNewAcquisition(); void SetGeneralData(GeneralData *g); void SetActivate(bool enable); - void SetBunchSize(uint32_t value); + void SetBunchSize(size_t value); void CreateUDPSockets(); void ShutDownUDPSocket(); @@ -167,9 +167,9 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { std::unique_ptr listeningPacket; std::atomic udpSocketAlive{false}; - uint32_t fifoBunchSize{0}; + size_t fifoBunchSize{0}; /** size in memory including headers */ - uint32_t fifoBunchSizeBytes{0}; + size_t fifoBunchSizeBytes{0}; // for print progress during acquisition*/ uint32_t numPacketsStatistic{0}; diff --git a/slsReceiverSoftware/src/receiver_defs.h b/slsReceiverSoftware/src/receiver_defs.h index e65623e90..81f024084 100644 --- a/slsReceiverSoftware/src/receiver_defs.h +++ b/slsReceiverSoftware/src/receiver_defs.h @@ -37,10 +37,8 @@ namespace sls { #define FILE_BUFFER_SIZE (16 * 1024 * 1024) // 16mb // fifo -#define FIFO_HEADER_NUMBYTES (8) +#define FIFO_HEADER_NUMBYTES (16) #define FIFO_DATASIZE_NUMBYTES (4) -#define FIFO_PADDING_NUMBYTES \ - (4) // for 8 byte alignment due to sls_receiver_header structure // hdf5 #define MAX_CHUNKED_IMAGES (1)