mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-02-02 01:34:55 +01:00
receiver bug fix: with refactor, the callbacks were getting reset upon initialization. fixed
This commit is contained in:
@@ -26,10 +26,7 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f,
|
||||
fileFormat* ftype, bool fwenable,
|
||||
bool* dsEnable, bool* gpEnable, uint32_t* dr,
|
||||
uint32_t* freq, uint32_t* timer,
|
||||
bool* fp, bool* act, bool* depaden, bool* sm,
|
||||
void (*dataReadycb)(char*, char*, uint32_t, void*),
|
||||
void (*dataModifyReadycb)(char*, char*, uint32_t &, void*),
|
||||
void *pDataReadycb) :
|
||||
bool* fp, bool* act, bool* depaden, bool* sm) :
|
||||
|
||||
ThreadObject(ind),
|
||||
runningFlag(0),
|
||||
@@ -56,10 +53,7 @@ DataProcessor::DataProcessor(int ind, detectorType dtype, Fifo* f,
|
||||
firstMeasurementIndex(0),
|
||||
numTotalFramesCaught(0),
|
||||
numFramesCaught(0),
|
||||
currentFrameIndex(0),
|
||||
rawDataReadyCallBack(dataReadycb),
|
||||
rawDataModifyReadyCallBack(dataModifyReadycb),
|
||||
pRawDataReady(pDataReadycb)
|
||||
currentFrameIndex(0)
|
||||
{
|
||||
if(ThreadObject::CreateThread() == FAIL)
|
||||
throw std::exception();
|
||||
@@ -434,6 +428,19 @@ void DataProcessor::SetPixelDimension() {
|
||||
}
|
||||
}
|
||||
|
||||
void DataProcessor::registerCallBackRawDataReady(void (*func)(char* ,
|
||||
char*, uint32_t, void*),void *arg) {
|
||||
rawDataReadyCallBack=func;
|
||||
pRawDataReady=arg;
|
||||
}
|
||||
|
||||
void DataProcessor::registerCallBackRawDataModifyReady(void (*func)(char* ,
|
||||
char*, uint32_t&, void*),void *arg) {
|
||||
rawDataModifyReadyCallBack=func;
|
||||
pRawDataReady=arg;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DataProcessor::PadMissingPackets(char* buf) {
|
||||
FILE_LOG(logDEBUG) << index << ": Padding Missing Packets";
|
||||
|
||||
@@ -946,8 +946,7 @@ int slsReceiverImplementation::setDetectorType(const detectorType d) {
|
||||
dataProcessor.push_back(sls::make_unique<DataProcessor>(i, myDetectorType, fifo_ptr, &fileFormatType,
|
||||
fileWriteEnable, &dataStreamEnable, &gapPixelsEnable,
|
||||
&dynamicRange, &streamingFrequency, &streamingTimerInMs,
|
||||
&framePadding, &activated, &deactivatedPaddingEnable, &silentMode,
|
||||
rawDataReadyCallBack, rawDataModifyReadyCallBack, pRawDataReady));
|
||||
&framePadding, &activated, &deactivatedPaddingEnable, &silentMode));
|
||||
}
|
||||
catch (...) {
|
||||
FILE_LOG(logERROR) << "Could not create listener/dataprocessor threads (index:" << i << ")";
|
||||
@@ -1222,12 +1221,16 @@ void slsReceiverImplementation::registerCallBackRawDataReady(void (*func)(char*
|
||||
char*, uint32_t, void*),void *arg) {
|
||||
rawDataReadyCallBack=func;
|
||||
pRawDataReady=arg;
|
||||
for (const auto& it : dataProcessor)
|
||||
it->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady);
|
||||
}
|
||||
|
||||
void slsReceiverImplementation::registerCallBackRawDataModifyReady(void (*func)(char* ,
|
||||
char*, uint32_t&, void*),void *arg) {
|
||||
rawDataModifyReadyCallBack=func;
|
||||
pRawDataReady=arg;
|
||||
for (const auto& it : dataProcessor)
|
||||
it->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -597,19 +597,21 @@ int slsReceiverTCPIPInterface::set_detector_type(){
|
||||
if(ret == OK) {
|
||||
if(receiver == nullptr){
|
||||
receiver = new slsReceiverImplementation();
|
||||
if(startAcquisitionCallBack)
|
||||
receiver->registerCallBackStartAcquisition(startAcquisitionCallBack,pStartAcquisition);
|
||||
if(acquisitionFinishedCallBack)
|
||||
receiver->registerCallBackAcquisitionFinished(acquisitionFinishedCallBack,pAcquisitionFinished);
|
||||
if(rawDataReadyCallBack)
|
||||
receiver->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady);
|
||||
if(rawDataModifyReadyCallBack)
|
||||
receiver->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady);
|
||||
}
|
||||
myDetectorType = arg;
|
||||
ret = receiver->setDetectorType(myDetectorType);
|
||||
retval = myDetectorType;
|
||||
|
||||
// callbacks after (in setdetectortype, the object is reinitialized)
|
||||
if(startAcquisitionCallBack)
|
||||
receiver->registerCallBackStartAcquisition(startAcquisitionCallBack,pStartAcquisition);
|
||||
if(acquisitionFinishedCallBack)
|
||||
receiver->registerCallBackAcquisitionFinished(acquisitionFinishedCallBack,pAcquisitionFinished);
|
||||
if(rawDataReadyCallBack)
|
||||
receiver->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady);
|
||||
if(rawDataModifyReadyCallBack)
|
||||
receiver->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady);
|
||||
|
||||
// client has started updating receiver, update ip
|
||||
if (!lockStatus)
|
||||
strcpy(mySock->lastClientIP, mySock->thisClientIP);
|
||||
|
||||
Reference in New Issue
Block a user