ctb: removed setroi, instead using adcenablemask

This commit is contained in:
2019-04-26 16:53:23 +02:00
parent 65930002b3
commit 61a939ef53
18 changed files with 385 additions and 333 deletions

View File

@ -100,6 +100,7 @@ void slsReceiverImplementation::InitializeMembers() {
//***acquisition parameters***
roi.clear();
adcEnableMask = BIT32_MASK;
streamingFrequency = 0;
streamingTimerInMs = DEFAULT_STREAMING_TIMER_IN_MS;
dataStreamEnable = false;
@ -289,6 +290,11 @@ std::vector<slsDetectorDefs::ROI> slsReceiverImplementation::getROI() const{
return roi;
}
uint32_t slsReceiverImplementation::getADCEnableMask() const{
FILE_LOG(logDEBUG3) << __SHORT_AT__ << " called";
return adcEnableMask;
}
uint32_t slsReceiverImplementation::getStreamingFrequency() const{
FILE_LOG(logDEBUG3) << __SHORT_AT__ << " called";
return streamingFrequency;
@ -463,7 +469,7 @@ int slsReceiverImplementation::setReadOutFlags(const readOutFlags f) {
// side effects
if (myDetectorType == CHIPTESTBOARD) {
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
for (const auto& it : dataProcessor)
it->SetPixelDimension();
if (SetupFifoStructure() == FAIL)
@ -749,7 +755,7 @@ int slsReceiverImplementation::setUDPSocketBufferSize(const int64_t s) {
/***acquisition parameters***/
int slsReceiverImplementation::setROI(const std::vector<slsDetectorDefs::ROI> new_roi) {
bool change = false;
if (roi.size() != new_roi.size())
if (roi.size() != new_roi.size())
change = true;
else {
for (size_t i = 0; i != new_roi.size(); ++i) {
@ -770,13 +776,6 @@ int slsReceiverImplementation::setROI(const std::vector<slsDetectorDefs::ROI> ne
generalData->SetROI(new_roi);
framesPerFile = generalData->maxFramesPerFile;
break;
case MOENCH:
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
break;
case CHIPTESTBOARD:
generalData->setImageSize(roi, numberOfSamples, tengigaEnable,
readoutFlags);
break;
default:
break;
}
@ -806,6 +805,32 @@ int slsReceiverImplementation::setROI(const std::vector<slsDetectorDefs::ROI> ne
return OK;
}
int slsReceiverImplementation::setADCEnableMask(uint32_t mask) {
if (adcEnableMask != mask) {
adcEnableMask = mask;
switch (myDetectorType) {
case MOENCH:
generalData->setImageSize(mask, numberOfSamples, tengigaEnable);
break;
case CHIPTESTBOARD:
generalData->setImageSize(mask, numberOfSamples, tengigaEnable, readoutFlags);
break;
default:
break;
}
for (const auto& it : dataProcessor)
it->SetPixelDimension();
if (SetupFifoStructure() == FAIL)
return FAIL;
}
FILE_LOG(logINFO) << "ADC Enable Mask: 0x" << std::hex << adcEnableMask << std::dec;
FILE_LOG (logINFO) << "Packets per Frame: " << (generalData->packetsPerFrame);
return OK;
}
int slsReceiverImplementation::setStreamingFrequency(const uint32_t freq) {
if (streamingFrequency != freq) {
@ -921,9 +946,9 @@ int slsReceiverImplementation::setNumberofSamples(const uint64_t i) {
numberOfSamples = i;
if(myDetectorType == MOENCH) {
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable);
} else if(myDetectorType == CHIPTESTBOARD) {
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
}
for (const auto& it : dataProcessor)
it->SetPixelDimension();
@ -962,10 +987,10 @@ int slsReceiverImplementation::setTenGigaEnable(const bool b) {
generalData->SetTenGigaEnable(b,dynamicRange);
break;
case MOENCH:
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable);
break;
case CHIPTESTBOARD:
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
generalData->setImageSize(adcEnableMask, numberOfSamples, tengigaEnable, readoutFlags);
break;
default:
break;

View File

@ -227,6 +227,7 @@ int slsReceiverTCPIPInterface::function_table(){
flist[F_RECEIVER_PADDING_ENABLE] = &slsReceiverTCPIPInterface::set_padding_enable;
flist[F_RECEIVER_DEACTIVATED_PADDING_ENABLE] = &slsReceiverTCPIPInterface::set_deactivated_receiver_padding_enable;
flist[F_RECEIVER_SET_READOUT_FLAGS] = &slsReceiverTCPIPInterface::set_readout_flags;
flist[F_RECEIVER_SET_ADC_MASK] = &slsReceiverTCPIPInterface::set_adc_mask;
for (int i = NUM_DET_FUNCTIONS + 1; i < NUM_REC_FUNCTIONS ; i++) {
FILE_LOG(logDEBUG1) << "function fnum: " << i << " (" <<
@ -2034,3 +2035,36 @@ int slsReceiverTCPIPInterface::set_readout_flags() {
}
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
int slsReceiverTCPIPInterface::set_adc_mask() {
ret = OK;
memset(mess, 0, sizeof(mess));
uint32_t arg = -1;
uint32_t retval = -1;
// get args, return if socket crashed, ret is fail if receiver is not null
if (interface->Server_ReceiveArg(ret, mess, &arg, sizeof(arg), true, receiver) == FAIL)
return FAIL;
// base object not null
else if (ret == OK) {
// set
// verify if receiver is unlocked and idle
if (interface->Server_VerifyLockAndIdle(ret, mess, lockStatus, receiver->getStatus(), fnum) == OK) {
FILE_LOG(logDEBUG1) << "Setting ADC enable mask: " << arg;
receiver->setADCEnableMask(arg);
}
// get
retval = receiver->getADCEnableMask();
if (ret == OK && retval != arg) {
ret = FAIL;
sprintf(mess, "Could not ADC enable mask. Set 0x%x, but read 0x%x\n", arg, retval);
FILE_LOG(logERROR) << mess;
}
FILE_LOG(logDEBUG1) << "ADC enable mask retval: " << retval;
}
return interface->Server_SendResult(false, ret, &retval, sizeof(retval), mess);
}