From 708975acb59cde528b735fd4578d7f35423c0bdc Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 18 Apr 2019 09:27:02 +0200 Subject: [PATCH] receiver bug fix: function pointer not initialized as null in dataprocessor --- cmk.sh | 2 +- slsReceiverSoftware/include/receiver_defs.h | 1 - slsReceiverSoftware/src/DataProcessor.cpp | 5 ++++- slsReceiverSoftware/src/Listener.cpp | 4 ++-- slsReceiverSoftware/src/slsReceiverImplementation.cpp | 10 ++++++++++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/cmk.sh b/cmk.sh index 1b868f182..183aef922 100755 --- a/cmk.sh +++ b/cmk.sh @@ -168,7 +168,7 @@ fi #Debug if [ $DEBUG -eq 1 ]; then - CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug " + CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON " echo "Debug Option enabled" fi diff --git a/slsReceiverSoftware/include/receiver_defs.h b/slsReceiverSoftware/include/receiver_defs.h index 5f623e16f..2fabca0bd 100755 --- a/slsReceiverSoftware/include/receiver_defs.h +++ b/slsReceiverSoftware/include/receiver_defs.h @@ -34,7 +34,6 @@ //parameters to calculate fifo depth #define SAMPLE_TIME_IN_NS 100000000//100ms -#define MAX_JOBS_PER_THREAD 1000 //to differentiate between gotthard and short gotthard diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index 629a7bae7..a39865bd6 100755 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -54,7 +54,10 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f, firstMeasurementIndex(0), numTotalFramesCaught(0), numFramesCaught(0), - currentFrameIndex(0) + currentFrameIndex(0), + rawDataReadyCallBack(nullptr), + rawDataModifyReadyCallBack(nullptr), + pRawDataReady(nullptr) { if(ThreadObject::CreateThread() == FAIL) throw sls::RuntimeError("Could not create processing thread"); diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index aaa265133..f51ab178e 100755 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -455,7 +455,7 @@ uint32_t Listener::ListenToAnImage(char* buf) { carryOverFlag = false; ++numpackets; //number of packets in this image (each time its copied to buf) - new_header->packetsMask[((pnum < MAX_NUM_PACKETS) ? pnum : MAX_NUM_PACKETS)] = 1; + new_header->packetsMask[((pnum < MAX_NUM_PACKETS) ? pnum : MAX_NUM_PACKETS - 1)] = 1; //writer header if(isHeaderEmpty) { @@ -599,7 +599,7 @@ uint32_t Listener::ListenToAnImage(char* buf) { break; } ++numpackets; //number of packets in this image (each time its copied to buf) - new_header->packetsMask[((pnum < MAX_NUM_PACKETS) ? pnum : MAX_NUM_PACKETS)] = 1; + new_header->packetsMask[((pnum < MAX_NUM_PACKETS) ? pnum : MAX_NUM_PACKETS - 1)] = 1; if(isHeaderEmpty) { // -------------------------- new header ---------------------------------------------------------------------- diff --git a/slsReceiverSoftware/src/slsReceiverImplementation.cpp b/slsReceiverSoftware/src/slsReceiverImplementation.cpp index 2cf3801da..eddbb35d0 100755 --- a/slsReceiverSoftware/src/slsReceiverImplementation.cpp +++ b/slsReceiverSoftware/src/slsReceiverImplementation.cpp @@ -708,6 +708,16 @@ int slsReceiverImplementation::setNumberofUDPInterfaces(const int n) { // update row and column in dataprocessor setDetectorPositionId(detID); + // update call backs + if(rawDataReadyCallBack) { + for (const auto& it : dataProcessor) + it->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady); + } + if(rawDataModifyReadyCallBack) { + for (const auto& it : dataProcessor) + it->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady); + } + // test socket buffer size with current set up if (setUDPSocketBufferSize(0) == FAIL) { return FAIL;