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