mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 14:38:14 +02:00
trailing bits are removed even if reorder false and bitlist empty
This commit is contained in:
parent
a74fb2bcd1
commit
3c79e8d7b2
@ -358,13 +358,13 @@ void DataProcessor::ProcessAnImage(sls_receiver_header &header, size_t &size,
|
|||||||
if (framePadding && nump < generalData->packetsPerFrame)
|
if (framePadding && nump < generalData->packetsPerFrame)
|
||||||
PadMissingPackets(header, data);
|
PadMissingPackets(header, data);
|
||||||
|
|
||||||
if (reorder && ctbDbitList.empty()) {
|
// rearrange ctb digital bits
|
||||||
Reorder(size, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
// rearrange ctb digital bits (if ctbDbitlist is not empty)
|
|
||||||
if (!ctbDbitList.empty()) {
|
if (!ctbDbitList.empty()) {
|
||||||
ArrangeDbitData(size, data);
|
ArrangeDbitData(size, data);
|
||||||
|
} else if (reorder) {
|
||||||
|
Reorder(size, data);
|
||||||
|
} else if (ctbDbitOffset > 0) {
|
||||||
|
RemoveTrailingBits(size, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 'stream Image' check has to be done here before crop image
|
// 'stream Image' check has to be done here before crop image
|
||||||
@ -536,6 +536,29 @@ void DataProcessor::PadMissingPackets(sls_receiver_header header, char *data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataProcessor::RemoveTrailingBits(size_t &size, char *data) {
|
||||||
|
const size_t nAnalogDataBytes = generalData->GetNumberOfAnalogDatabytes();
|
||||||
|
const size_t nDigitalDataBytes = generalData->GetNumberOfDigitalDatabytes();
|
||||||
|
const size_t nTransceiverDataBytes =
|
||||||
|
generalData->GetNumberOfTransceiverDatabytes();
|
||||||
|
|
||||||
|
const size_t ctbDigitalDataBytes = nDigitalDataBytes - ctbDbitOffset;
|
||||||
|
|
||||||
|
// no digital data
|
||||||
|
if (ctbDigitalDataBytes == 0) {
|
||||||
|
LOG(logWARNING)
|
||||||
|
<< "No digital data for call back, yet ctbDbitOffset is non zero.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update size and copy data
|
||||||
|
memmove(data + nAnalogDataBytes,
|
||||||
|
data + nAnalogDataBytes + ctbDigitalDataBytes,
|
||||||
|
ctbDigitalDataBytes + nTransceiverDataBytes);
|
||||||
|
|
||||||
|
size = nAnalogDataBytes + ctbDigitalDataBytes + nTransceiverDataBytes;
|
||||||
|
}
|
||||||
|
|
||||||
void DataProcessor::Reorder(size_t &size, char *data) {
|
void DataProcessor::Reorder(size_t &size, char *data) {
|
||||||
const size_t nAnalogDataBytes = generalData->GetNumberOfAnalogDatabytes();
|
const size_t nAnalogDataBytes = generalData->GetNumberOfAnalogDatabytes();
|
||||||
const size_t nDigitalDataBytes = generalData->GetNumberOfDigitalDatabytes();
|
const size_t nDigitalDataBytes = generalData->GetNumberOfDigitalDatabytes();
|
||||||
|
@ -107,6 +107,11 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
*/
|
*/
|
||||||
void Reorder(size_t &size, char *data);
|
void Reorder(size_t &size, char *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove trailing bits in digital data stream
|
||||||
|
*/
|
||||||
|
void RemoveTrailingBits(size_t &size, char *data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void RecordFirstIndex(uint64_t fnum);
|
void RecordFirstIndex(uint64_t fnum);
|
||||||
|
|
||||||
@ -172,7 +177,7 @@ class DataProcessor : private virtual slsDetectorDefs, public ThreadObject {
|
|||||||
uint32_t streamingTimerInMs;
|
uint32_t streamingTimerInMs;
|
||||||
uint32_t streamingStartFnum;
|
uint32_t streamingStartFnum;
|
||||||
uint32_t currentFreqCount{0};
|
uint32_t currentFreqCount{0};
|
||||||
struct timespec timerbegin {};
|
struct timespec timerbegin{};
|
||||||
bool framePadding;
|
bool framePadding;
|
||||||
std::vector<int> ctbDbitList;
|
std::vector<int> ctbDbitList;
|
||||||
bool reorder{false}; // true if data should be reordered TODO: add as mode
|
bool reorder{false}; // true if data should be reordered TODO: add as mode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user