diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index ad8a89a77..e45a29a13 100755 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -29,13 +29,9 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f, uint32_t* freq, uint32_t* timer, bool* fp, bool* act, bool* depaden, bool* sm, bool* qe, std::vector * cdl, int* cdo, int* cad) : - ThreadObject(ind, TypeName), - runningFlag(false), - generalData(nullptr), fifo(f), myDetectorType(dtype), - file(nullptr), dataStreamEnable(dsEnable), fileFormatType(ftype), fileWriteEnable(fwenable), @@ -43,7 +39,6 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f, dynamicRange(dr), streamingFrequency(freq), streamingTimerInMs(timer), - currentFreqCount(0), activated(act), deactivatedPaddingEnable(depaden), silentMode(sm), @@ -51,14 +46,7 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f, framePadding(fp), ctbDbitList(cdl), ctbDbitOffset(cdo), - ctbAnalogDataBytes(cad), - startedFlag(false), - firstIndex(0), - numFramesCaught(0), - currentFrameIndex(0), - rawDataReadyCallBack(nullptr), - rawDataModifyReadyCallBack(nullptr), - pRawDataReady(nullptr) + ctbAnalogDataBytes(cad) { LOG(logDEBUG) << "DataProcessor " << ind << " created"; memset((void*)&timerBegin, 0, sizeof(timespec)); @@ -71,10 +59,6 @@ DataProcessor::~DataProcessor() { /** getters */ -bool DataProcessor::IsRunning() { - return runningFlag; -} - bool DataProcessor::GetStartedFlag(){ return startedFlag; } @@ -91,18 +75,6 @@ uint64_t DataProcessor::GetProcessedIndex() { return currentFrameIndex - firstIndex; } - - -/** setters */ -void DataProcessor::StartRunning() { - runningFlag = true; -} - - -void DataProcessor::StopRunning() { - runningFlag = false; -} - void DataProcessor::SetFifo(Fifo* f) { fifo = f; } diff --git a/slsReceiverSoftware/src/DataProcessor.h b/slsReceiverSoftware/src/DataProcessor.h index b6cdbd21d..64111ebdb 100755 --- a/slsReceiverSoftware/src/DataProcessor.h +++ b/slsReceiverSoftware/src/DataProcessor.h @@ -59,11 +59,6 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { //*** getters *** - /** - * Returns if the thread is currently running - * @returns true if thread is running, else false - */ - bool IsRunning() override; /** * Get acquisition started flag @@ -89,17 +84,6 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { */ uint64_t GetProcessedIndex(); - //*** setters *** - /** - * Set bit in RunningMask to allow thread to run - */ - void StartRunning(); - - /** - * Reset bit in RunningMask to prevent thread from running - */ - void StopRunning(); - /** * Set Fifo pointer to the one given * @param f address of Fifo pointer @@ -254,11 +238,8 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { /** type of thread */ static const std::string TypeName; - /** Object running status */ - std::atomic runningFlag; - /** GeneralData (Detector Data) object */ - const GeneralData* generalData; + const GeneralData* generalData{nullptr}; /** Fifo structure */ Fifo* fifo; @@ -269,7 +250,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { detectorType myDetectorType; /** File writer implemented as binary or hdf5 File */ - File* file; + File* file{nullptr}; /** Data Stream Enable */ bool* dataStreamEnable; @@ -293,7 +274,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { uint32_t* streamingTimerInMs; /** Current frequency count */ - uint32_t currentFreqCount; + uint32_t currentFreqCount{0}; /** timer beginning stamp for random streaming */ struct timespec timerBegin; @@ -324,21 +305,18 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { //acquisition start /** Aquisition Started flag */ - bool startedFlag; + bool startedFlag{false}; /** Frame Number of First Frame */ - uint64_t firstIndex; + uint64_t firstIndex{0}; //for statistics /** Number of complete frames caught */ - uint64_t numFramesCaught; + uint64_t numFramesCaught{0}; /** Frame Number of latest processed frame number */ - uint64_t currentFrameIndex; - - - + uint64_t currentFrameIndex{0}; //call back /** @@ -349,7 +327,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { * dataSize in bytes is the size of the data in bytes. */ void (*rawDataReadyCallBack)(char*, - char*, uint32_t, void*); + char*, uint32_t, void*) = nullptr; /** * Call back for raw data (modified) @@ -359,9 +337,9 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject { * revDatasize is the reference of data size in bytes. Can be modified to the new size to be written/streamed. (only smaller value). */ void (*rawDataModifyReadyCallBack)(char*, - char*, uint32_t &, void*); + char*, uint32_t &, void*) = nullptr; - void *pRawDataReady; + void *pRawDataReady{nullptr}; diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index 2b840dab1..9c9b5f1a1 100755 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -19,18 +19,11 @@ const std::string DataStreamer::TypeName = "DataStreamer"; DataStreamer::DataStreamer(int ind, Fifo* f, uint32_t* dr, ROI* r, uint64_t* fi, int fd, int* nd, bool* qe, uint64_t* tot) : ThreadObject(ind, TypeName), - runningFlag(0), - generalData(nullptr), fifo(f), - zmqSocket(nullptr), dynamicRange(dr), roi(r), - adcConfigured(-1), fileIndex(fi), flippedDataX(fd), - startedFlag(false), - firstIndex(0), - completeBuffer(nullptr), quadEnable(qe), totalNumFrames(tot) { @@ -46,23 +39,6 @@ DataStreamer::~DataStreamer() { delete [] completeBuffer; } -/** getters */ - -bool DataStreamer::IsRunning() { - return runningFlag; -} - - -/** setters */ -void DataStreamer::StartRunning() { - runningFlag = true; -} - - -void DataStreamer::StopRunning() { - runningFlag = false; -} - void DataStreamer::SetFifo(Fifo* f) { fifo = f; } diff --git a/slsReceiverSoftware/src/DataStreamer.h b/slsReceiverSoftware/src/DataStreamer.h index 4a31fa550..8b7d81881 100755 --- a/slsReceiverSoftware/src/DataStreamer.h +++ b/slsReceiverSoftware/src/DataStreamer.h @@ -42,25 +42,6 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { */ ~DataStreamer(); - //*** getters *** - /** - * Returns if the thread is currently running - * @returns true if thread is running, else false - */ - bool IsRunning(); - - - //*** setters *** - /** - * Set bit in RunningMask to allow thread to run - */ - void StartRunning(); - - /** - * Reset bit in RunningMask to prevent thread from running - */ - void StopRunning(); - /** * Set Fifo pointer to the one given * @param f address of Fifo pointer @@ -158,19 +139,14 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { /** type of thread */ static const std::string TypeName; - /** Object running status */ - bool runningFlag; - /** GeneralData (Detector Data) object */ - const GeneralData* generalData; + const GeneralData* generalData{nullptr}; /** Fifo structure */ Fifo* fifo; - - /** ZMQ Socket - Receiver to Client */ - ZmqSocket* zmqSocket; + ZmqSocket* zmqSocket{nullptr}; /** Pointer to dynamic range */ uint32_t* dynamicRange; @@ -179,7 +155,7 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { ROI* roi; /** adc Configured */ - int adcConfigured; + int adcConfigured{-1}; /** Pointer to file index */ uint64_t* fileIndex; @@ -191,16 +167,16 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject { std::map additionJsonHeader; /** Aquisition Started flag */ - bool startedFlag; + bool startedFlag{nullptr}; /** Frame Number of First Frame */ - uint64_t firstIndex; + uint64_t firstIndex{0}; /* File name to stream */ std::string fileNametoStream; /** Complete buffer used for roi, eg. shortGotthard */ - char* completeBuffer; + char* completeBuffer{nullptr}; /** Number of Detectors in X and Y dimension */ int numDet[2]; diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index 0416e90d0..48b9e133d 100755 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -26,12 +26,9 @@ Listener::Listener(int ind, detectorType dtype, Fifo* f, std::atomic* int64_t* us, int64_t* as, uint32_t* fpf, frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm) : ThreadObject(ind, TypeName), - runningFlag(0), - generalData(nullptr), fifo(f), myDetectorType(dtype), status(s), - udpSocket(nullptr), udpPortNumber(portno), eth(e), numImages(nf), @@ -42,19 +39,7 @@ Listener::Listener(int ind, detectorType dtype, Fifo* f, std::atomic* frameDiscardMode(fdp), activated(act), deactivatedPaddingEnable(depaden), - silentMode(sm), - row(0), - column(0), - startedFlag(false), - firstIndex(0), - numPacketsCaught(0), - lastCaughtFrameIndex(0), - currentFrameIndex(0), - carryOverFlag(0), - udpSocketAlive(0), - numPacketsStatistic(0), - numFramesStatistic(0), - oddStartingPacket(true) + silentMode(sm) { LOG(logDEBUG) << "Listener " << ind << " created"; } @@ -67,20 +52,15 @@ Listener::~Listener() { } } -/** getters */ -bool Listener::IsRunning() { - return runningFlag; -} - -uint64_t Listener::GetPacketsCaught() { +uint64_t Listener::GetPacketsCaught() const { return numPacketsCaught; } -uint64_t Listener::GetLastFrameIndexCaught() { +uint64_t Listener::GetLastFrameIndexCaught() const { return lastCaughtFrameIndex; } -uint64_t Listener::GetNumMissingPacket(bool stoppedFlag, uint64_t numPackets) { +uint64_t Listener::GetNumMissingPacket(bool stoppedFlag, uint64_t numPackets) const { if (!stoppedFlag) { return (numPackets - numPacketsCaught); } @@ -90,22 +70,10 @@ uint64_t Listener::GetNumMissingPacket(bool stoppedFlag, uint64_t numPackets) { return (lastCaughtFrameIndex - firstIndex + 1) * generalData->packetsPerFrame - numPacketsCaught; } -/** setters */ -void Listener::StartRunning() { - runningFlag = true; -} - - -void Listener::StopRunning() { - runningFlag = false; -} - - void Listener::SetFifo(Fifo* f) { fifo = f; } - void Listener::ResetParametersforNewAcquisition() { runningFlag = false; startedFlag = false; diff --git a/slsReceiverSoftware/src/Listener.h b/slsReceiverSoftware/src/Listener.h index 83e788cd1..bd8d382a4 100755 --- a/slsReceiverSoftware/src/Listener.h +++ b/slsReceiverSoftware/src/Listener.h @@ -53,40 +53,20 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { */ ~Listener(); - - //*** getters *** - /** - * Returns if the thread is currently running - * @returns true if thread is running, else false - */ - bool IsRunning() override; - /** * Get Packets caught * @return Packets caught */ - uint64_t GetPacketsCaught(); + uint64_t GetPacketsCaught() const; /** * Get Last Frame index caught * @return last frame index caught */ - uint64_t GetLastFrameIndexCaught(); + uint64_t GetLastFrameIndexCaught() const; /** Get number of missing packets */ - uint64_t GetNumMissingPacket(bool stoppedFlag, uint64_t numPackets); - - - //*** setters *** - /** - * Set bit in RunningMask to allow thread to run - */ - void StartRunning(); - - /** - * Reset bit in RunningMask to prevent thread from running - */ - void StopRunning(); + uint64_t GetNumMissingPacket(bool stoppedFlag, uint64_t numPackets) const; /** * Set Fifo pointer to the one given @@ -140,7 +120,7 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { void RecordFirstIndex(uint64_t fnum); /** - * Thread Exeution for Listener Class + * Thread Execution for Listener Class * Pop free addresses, listen to udp socket, * write to memory & push the address into fifo */ @@ -168,16 +148,11 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { */ void PrintFifoStatistics(); - - /** type of thread */ static const std::string TypeName; - /** Object running status */ - std::atomic runningFlag; - /** GeneralData (Detector Data) object */ - GeneralData* generalData; + GeneralData* generalData{nullptr}; /** Fifo structure */ Fifo* fifo; @@ -190,7 +165,7 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { std::atomic* status; /** UDP Socket - Detector to Receiver */ - std::unique_ptr udpSocket; + std::unique_ptr udpSocket{nullptr}; /** UDP Port Number */ uint32_t* udpPortNumber; @@ -228,36 +203,34 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { /** row hardcoded as 1D or 2d, * if detector does not send them yet or * missing packets/deactivated (eiger/jungfrau sends 2d pos) **/ - uint16_t row; + uint16_t row{0}; /** column hardcoded as 2D, * deactivated eiger/missing packets (eiger/jungfrau sends 2d pos) **/ - uint16_t column; - + uint16_t column{0}; // acquisition start /** Aquisition Started flag */ - std::atomic startedFlag; + std::atomic startedFlag{false}; /** Frame Number of First Frame */ - uint64_t firstIndex; + uint64_t firstIndex{0}; // for acquisition summary /** Number of complete Packets caught */ - std::atomic numPacketsCaught; + std::atomic numPacketsCaught{0}; /** Last Frame Index caught from udp network */ - std::atomic lastCaughtFrameIndex; - + std::atomic lastCaughtFrameIndex{0}; // parameters to acquire image /** Current Frame Index, default value is 0 * ( always check startedFlag for validity first) */ - uint64_t currentFrameIndex; + uint64_t currentFrameIndex{0}; /** True if there is a packet carry over from previous Image */ - bool carryOverFlag; + bool carryOverFlag{false}; /** Carry over packet buffer */ std::unique_ptr carryOverPacket; @@ -266,22 +239,22 @@ class Listener : private virtual slsDetectorDefs, public ThreadObject { std::unique_ptr listeningPacket; /** if the udp socket is connected */ - std::atomic udpSocketAlive; + std::atomic udpSocketAlive{false}; - /** Semaphore to synchonize deleting udp socket */ + /** Semaphore to synchronize deleting udp socket */ sem_t semaphore_socket; - // for print progress during acqusition + // for print progress during acquisition /** number of packets for statistic */ - uint32_t numPacketsStatistic; + uint32_t numPacketsStatistic{0}; /** number of images for statistic */ - uint32_t numFramesStatistic; + uint32_t numFramesStatistic{0}; /** - * starting packet number is odd or evern, accordingly increment frame number + * starting packet number is odd or even, accordingly increment frame number * to get first packet number as 0 * (pecific to gotthard, can vary between modules, hence defined here) */ - bool oddStartingPacket; + bool oddStartingPacket{true}; }; diff --git a/slsReceiverSoftware/src/ThreadObject.cpp b/slsReceiverSoftware/src/ThreadObject.cpp index e78b5e3ca..08d2a5a67 100755 --- a/slsReceiverSoftware/src/ThreadObject.cpp +++ b/slsReceiverSoftware/src/ThreadObject.cpp @@ -36,6 +36,17 @@ ThreadObject::~ThreadObject() { sem_destroy(&semaphore); } +bool ThreadObject::IsRunning() const{ + return runningFlag; +} + +void ThreadObject::StartRunning() { + runningFlag = true; +} + +void ThreadObject::StopRunning() { + runningFlag = false; +} void ThreadObject::RunningThread() { LOG(logINFOBLUE) << "Created [ " << type << "Thread " << index << ", Tid: " << syscall(SYS_gettid) << "]"; diff --git a/slsReceiverSoftware/src/ThreadObject.h b/slsReceiverSoftware/src/ThreadObject.h index cc9ffddf1..624dec1cf 100755 --- a/slsReceiverSoftware/src/ThreadObject.h +++ b/slsReceiverSoftware/src/ThreadObject.h @@ -21,7 +21,9 @@ class ThreadObject : private virtual slsDetectorDefs { public: ThreadObject(int threadIndex, std::string threadType); virtual ~ThreadObject(); - virtual bool IsRunning() = 0; + bool IsRunning() const; + void StartRunning(); + void StopRunning(); void Continue(); void SetThreadPriority(int priority); @@ -41,6 +43,7 @@ class ThreadObject : private virtual slsDetectorDefs { int index{0}; std::string type; std::atomic killThread{false}; + std::atomic runningFlag{false}; std::unique_ptr threadObject; sem_t semaphore; };