mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 05:17:13 +02:00
ctb:separated analog and digital samples in server and send analog and digital data packed separately per frame to reciever
This commit is contained in:
@ -62,7 +62,8 @@ void slsReceiverImplementation::InitializeMembers() {
|
||||
subExpTime = 0;
|
||||
subPeriod = 0;
|
||||
numberOfFrames = 0;
|
||||
numberOfSamples = 0;
|
||||
numberOfAnalogSamples = 0;
|
||||
numberOfDigitalSamples = 0;
|
||||
dynamicRange = 16;
|
||||
tengigaEnable = false;
|
||||
fifoDepth = 0;
|
||||
@ -341,9 +342,14 @@ uint64_t slsReceiverImplementation::getNumberOfFrames() const{
|
||||
return numberOfFrames;
|
||||
}
|
||||
|
||||
uint64_t slsReceiverImplementation::getNumberofSamples() const{
|
||||
uint64_t slsReceiverImplementation::getNumberofAnalogSamples() const{
|
||||
FILE_LOG(logDEBUG3) << __SHORT_AT__ << " called";
|
||||
return numberOfSamples;
|
||||
return numberOfAnalogSamples;
|
||||
}
|
||||
|
||||
uint64_t slsReceiverImplementation::getNumberofDigitalSamples() const{
|
||||
FILE_LOG(logDEBUG3) << __SHORT_AT__ << " called";
|
||||
return numberOfDigitalSamples;
|
||||
}
|
||||
|
||||
uint32_t slsReceiverImplementation::getDynamicRange() const{
|
||||
@ -475,7 +481,7 @@ int slsReceiverImplementation::setReadOutFlags(const readOutFlags f) {
|
||||
|
||||
// side effects
|
||||
if (myDetectorType == CHIPTESTBOARD) {
|
||||
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable, readoutFlags);
|
||||
for (const auto& it : dataProcessor)
|
||||
it->SetPixelDimension();
|
||||
if (SetupFifoStructure() == FAIL)
|
||||
@ -823,10 +829,10 @@ int slsReceiverImplementation::setADCEnableMask(uint32_t mask) {
|
||||
|
||||
switch (myDetectorType) {
|
||||
case MOENCH:
|
||||
generalData->setImageSize(mask, numberOfSamples, tengigaEnable);
|
||||
generalData->setImageSize(mask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable);
|
||||
break;
|
||||
case CHIPTESTBOARD:
|
||||
generalData->setImageSize(mask, numberOfSamples, tengigaEnable, readoutFlags);
|
||||
generalData->setImageSize(mask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable, readoutFlags);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -953,21 +959,41 @@ int slsReceiverImplementation::setNumberOfFrames(const uint64_t i) {
|
||||
}
|
||||
|
||||
|
||||
int slsReceiverImplementation::setNumberofSamples(const uint64_t i) {
|
||||
if (numberOfSamples != i) {
|
||||
numberOfSamples = i;
|
||||
int slsReceiverImplementation::setNumberofAnalogSamples(const uint64_t i) {
|
||||
if (numberOfAnalogSamples != i) {
|
||||
numberOfAnalogSamples = i;
|
||||
|
||||
if(myDetectorType == MOENCH) {
|
||||
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable);
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable);
|
||||
} else if(myDetectorType == CHIPTESTBOARD) {
|
||||
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable, readoutFlags);
|
||||
}
|
||||
for (const auto& it : dataProcessor)
|
||||
it->SetPixelDimension();
|
||||
if (SetupFifoStructure() == FAIL)
|
||||
return FAIL;
|
||||
}
|
||||
FILE_LOG (logINFO) << "Number of Samples: " << numberOfSamples;
|
||||
FILE_LOG (logINFO) << "Number of Analog Samples: " << numberOfAnalogSamples;
|
||||
FILE_LOG (logINFO) << "Packets per Frame: " << (generalData->packetsPerFrame);
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
int slsReceiverImplementation::setNumberofDigitalSamples(const uint64_t i) {
|
||||
if (numberOfDigitalSamples != i) {
|
||||
numberOfDigitalSamples = i;
|
||||
|
||||
if(myDetectorType == MOENCH) {
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable);
|
||||
} else if(myDetectorType == CHIPTESTBOARD) {
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable, readoutFlags);
|
||||
}
|
||||
for (const auto& it : dataProcessor)
|
||||
it->SetPixelDimension();
|
||||
if (SetupFifoStructure() == FAIL)
|
||||
return FAIL;
|
||||
}
|
||||
FILE_LOG (logINFO) << "Number of Digital Samples: " << numberOfDigitalSamples;
|
||||
FILE_LOG (logINFO) << "Packets per Frame: " << (generalData->packetsPerFrame);
|
||||
return OK;
|
||||
}
|
||||
@ -999,10 +1025,10 @@ int slsReceiverImplementation::setTenGigaEnable(const bool b) {
|
||||
generalData->SetTenGigaEnable(b,dynamicRange);
|
||||
break;
|
||||
case MOENCH:
|
||||
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable);
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable);
|
||||
break;
|
||||
case CHIPTESTBOARD:
|
||||
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
|
||||
generalData->setImageSize(adcEnableMask, numberOfAnalogSamples, numberOfDigitalSamples, tengigaEnable, readoutFlags);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -877,12 +877,19 @@ int slsReceiverTCPIPInterface::set_timer() {
|
||||
case SUBFRAME_DEADTIME:
|
||||
receiver->setSubPeriod(index[1] + receiver->getSubExpTime());
|
||||
break;
|
||||
case SAMPLES:
|
||||
case ANALOG_SAMPLES:
|
||||
if (myDetectorType != CHIPTESTBOARD && myDetectorType != MOENCH) {
|
||||
modeNotImplemented("(Samples) Timer index", (int)index[0]);
|
||||
modeNotImplemented("(Analog Samples) Timer index", (int)index[0]);
|
||||
break;
|
||||
}
|
||||
receiver->setNumberofSamples(index[1]);
|
||||
receiver->setNumberofAnalogSamples(index[1]);
|
||||
break;
|
||||
case DIGITAL_SAMPLES:
|
||||
if (myDetectorType != CHIPTESTBOARD && myDetectorType != MOENCH) {
|
||||
modeNotImplemented("(Digital Samples) Timer index", (int)index[0]);
|
||||
break;
|
||||
}
|
||||
receiver->setNumberofDigitalSamples(index[1]);
|
||||
break;
|
||||
default:
|
||||
modeNotImplemented("Timer index", (int)index[0]);
|
||||
@ -909,14 +916,23 @@ int slsReceiverTCPIPInterface::set_timer() {
|
||||
case SUBFRAME_DEADTIME:
|
||||
retval=(receiver->getSubPeriod() - receiver->getSubExpTime());
|
||||
break;
|
||||
case SAMPLES:
|
||||
case ANALOG_SAMPLES:
|
||||
if (myDetectorType != CHIPTESTBOARD && myDetectorType != MOENCH) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"This timer mode (%lld) does not exist for this receiver type\n", (long long int)index[0]);
|
||||
FILE_LOG(logERROR) << "Warning: " << mess;
|
||||
break;
|
||||
}
|
||||
retval=receiver->getNumberofSamples();
|
||||
retval=receiver->getNumberofAnalogSamples();
|
||||
break;
|
||||
case DIGITAL_SAMPLES:
|
||||
if (myDetectorType != CHIPTESTBOARD && myDetectorType != MOENCH) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"This timer mode (%lld) does not exist for this receiver type\n", (long long int)index[0]);
|
||||
FILE_LOG(logERROR) << "Warning: " << mess;
|
||||
break;
|
||||
}
|
||||
retval=receiver->getNumberofDigitalSamples();
|
||||
break;
|
||||
default:
|
||||
modeNotImplemented("Timer index", (int)index[0]);
|
||||
|
Reference in New Issue
Block a user