bug fix on quad: if no data streaming enabled in the beginning

This commit is contained in:
2019-07-22 17:09:34 +02:00
parent 445f3c66fd
commit 350b4f0368
6 changed files with 51 additions and 45 deletions

View File

@ -27,14 +27,14 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject {
* @param dr pointer to dynamic range * @param dr pointer to dynamic range
* @param r roi * @param r roi
* @param fi pointer to file index * @param fi pointer to file index
* @param fd flipped data enable for x and y dimensions * @param fd flipped data enable for x dimension
* @param ajh additional json header * @param ajh additional json header
* @param sm pointer to silent mode * @param sm pointer to silent mode
* @param nd pointer to number of detectors in each dimension * @param nd pointer to number of detectors in each dimension
* @param gpEnable pointer to gap pixels enable * @param gpEnable pointer to gap pixels enable
*/ */
DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r, DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r,
uint64_t* fi, int* fd, char* ajh, bool* sm, int* nd, bool* gpEnable); uint64_t* fi, int fd, char* ajh, bool* sm, int* nd, bool* gpEnable);
/** /**
* Destructor * Destructor
@ -97,10 +97,10 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject {
void SetNumberofDetectors(int* nd); void SetNumberofDetectors(int* nd);
/** /**
* Set Flipped data enable across both dimensions * Set Flipped data enable across x dimension
* @param flipped data enable in both dimensions * @param flipped data enable in x dimension
*/ */
void SetFlippedData(int* fd); void SetFlippedDataX(int fd);
/** /**
* Creates Zmq Sockets * Creates Zmq Sockets
@ -197,8 +197,8 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject {
/** Pointer to file index */ /** Pointer to file index */
uint64_t* fileIndex; uint64_t* fileIndex;
/** flipped data across both dimensions enable */ /** flipped data across x dimension */
int flippedData[2]; int flippedDataX;
/** additional json header */ /** additional json header */
char* additionJsonHeader; char* additionJsonHeader;

View File

@ -747,8 +747,8 @@ class UDPBaseImplementation : protected virtual slsReceiverDefs, public UDPInter
bool tengigaEnable; bool tengigaEnable;
/** Fifo Depth */ /** Fifo Depth */
uint32_t fifoDepth; uint32_t fifoDepth;
/** enable for flipping data across both axes */ /** enable for flipping data across x axis */
int flippedData[2]; int flippedDataX;
/** gap pixels enable */ /** gap pixels enable */
bool gapPixelsEnable; bool gapPixelsEnable;
/** quad type enable */ /** quad type enable */

View File

@ -273,7 +273,7 @@ public:
uint64_t bunchId = 0, uint64_t timestamp = 0, uint64_t bunchId = 0, uint64_t timestamp = 0,
uint16_t modId = 0, uint16_t row = 0, uint16_t column = 0, uint16_t reserved = 0, uint16_t modId = 0, uint16_t row = 0, uint16_t column = 0, uint16_t reserved = 0,
uint32_t debug = 0, uint16_t roundRNumber = 0, uint32_t debug = 0, uint16_t roundRNumber = 0,
uint8_t detType = 0, uint8_t version = 0, int gapPixelsEnable = 0, int* flippedData = 0, uint8_t detType = 0, uint8_t version = 0, uint32_t gapPixelsEnable = 0, uint32_t flippedDataX = 0,
char* additionalJsonHeader = 0) { char* additionalJsonHeader = 0) {
@ -321,7 +321,7 @@ public:
//additional stuff //additional stuff
gapPixelsEnable, gapPixelsEnable,
((flippedData == 0 ) ? 0 :flippedData[0]) flippedDataX
); );
if (additionalJsonHeader && strlen(additionalJsonHeader)) { if (additionalJsonHeader && strlen(additionalJsonHeader)) {
length = sprintf(buf, "%s, %s}\n", buf, additionalJsonHeader); length = sprintf(buf, "%s, %s}\n", buf, additionalJsonHeader);

View File

@ -16,7 +16,7 @@ const std::string DataStreamer::TypeName = "DataStreamer";
DataStreamer::DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r, DataStreamer::DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r,
uint64_t* fi, int* fd, char* ajh, bool* sm, int* nd, bool* gpEnable) : uint64_t* fi, int fd, char* ajh, bool* sm, int* nd, bool* gpEnable) :
ThreadObject(ind), ThreadObject(ind),
runningFlag(0), runningFlag(0),
generalData(0), generalData(0),
@ -26,6 +26,7 @@ DataStreamer::DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r,
roi(r), roi(r),
adcConfigured(-1), adcConfigured(-1),
fileIndex(fi), fileIndex(fi),
flippedDataX(fd),
additionJsonHeader(ajh), additionJsonHeader(ajh),
acquisitionStartedFlag(false), acquisitionStartedFlag(false),
measurementStartedFlag(false), measurementStartedFlag(false),
@ -34,8 +35,6 @@ DataStreamer::DataStreamer(int ind, Fifo*& f, uint32_t* dr, std::vector<ROI>* r,
completeBuffer(0), completeBuffer(0),
gapPixelsEnable(gpEnable) gapPixelsEnable(gpEnable)
{ {
flippedData[0] = fd[0];
flippedData[1] = fd[1];
numDet[0] = nd[0]; numDet[0] = nd[0];
numDet[1] = nd[1]; numDet[1] = nd[1];
@ -140,9 +139,8 @@ void DataStreamer::SetNumberofDetectors(int* nd) {
numDet[1] = nd[1]; numDet[1] = nd[1];
} }
void DataStreamer::SetFlippedData(int* fd) { void DataStreamer::SetFlippedDataX(int fd) {
flippedData[0] = fd[0]; flippedDataX = fd;
flippedData[1] = fd[1];
} }
@ -282,7 +280,7 @@ int DataStreamer::SendHeader(sls_receiver_header* rheader, uint32_t size, uint32
header.modId, header.row, header.column, header.reserved, header.modId, header.row, header.column, header.reserved,
header.debug, header.roundRNumber, header.debug, header.roundRNumber,
header.detType, header.version, header.detType, header.version,
*gapPixelsEnable ? 1 : 0, flippedData, *gapPixelsEnable ? 1 : 0, flippedDataX,
additionJsonHeader additionJsonHeader
); );
} }

View File

@ -50,8 +50,7 @@ void UDPBaseImplementation::initializeMembers(){
dynamicRange = 16; dynamicRange = 16;
tengigaEnable = false; tengigaEnable = false;
fifoDepth = 0; fifoDepth = 0;
flippedData[0] = 0; flippedDataX = 0;
flippedData[1] = 0;
gapPixelsEnable = false; gapPixelsEnable = false;
quadEnable = false; quadEnable = false;
@ -129,8 +128,14 @@ char *UDPBaseImplementation::getDetectorHostname() const{
int UDPBaseImplementation::getFlippedData(int axis) const{ int UDPBaseImplementation::getFlippedData(int axis) const{
FILE_LOG(logDEBUG) << __AT__ << " starting"; FILE_LOG(logDEBUG) << __AT__ << " starting";
if(axis<0 || axis > 1) return -1; switch(axis) {
return flippedData[axis]; case 0:
return flippedDataX;
case 1:
return 0;
default:
return -1;
}
} }
bool UDPBaseImplementation::getGapPixelsEnable() const { bool UDPBaseImplementation::getGapPixelsEnable() const {
@ -404,9 +409,10 @@ void UDPBaseImplementation::setMultiDetectorSize(const int* size) {
void UDPBaseImplementation::setFlippedData(int axis, int enable){ void UDPBaseImplementation::setFlippedData(int axis, int enable){
FILE_LOG(logDEBUG) << __AT__ << " starting"; FILE_LOG(logDEBUG) << __AT__ << " starting";
if(axis<0 || axis>1) return; if (axis != 0)
flippedData[axis] = enable==0?0:1; return;
FILE_LOG(logINFO) << "Flipped Data: " << flippedData[0] << " , " << flippedData[1]; flippedDataX = enable==0?0:1;
FILE_LOG(logINFO) << "Flipped Data X: " << flippedDataX;
// overridden // overridden
} }

View File

@ -125,38 +125,36 @@ void UDPStandardImplementation::setMultiDetectorSize(const int* size) {
} }
strcat(message,")"); strcat(message,")");
int sz[2] = {numDet[0], numDet[1]}; int nd[2] = {numDet[0], numDet[1]};
if (quadEnable) { if (quadEnable) {
sz[0] = 1; nd[0] = 1;
sz[1] = 2; nd[1] = 2;
} }
for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){ for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){
(*it)->SetNumberofDetectors(sz); (*it)->SetNumberofDetectors(nd);
} }
FILE_LOG(logINFO) << message; FILE_LOG(logINFO) << message;
} }
void UDPStandardImplementation::setFlippedData(int axis, int enable){ void UDPStandardImplementation::setFlippedData(int axis, int enable){
if(axis<0 || axis>1) return; if (axis != 0)
flippedData[axis] = enable==0?0:1; return;
flippedDataX = enable == 0 ? 0 : 1;
if (!quadEnable) { if (!quadEnable) {
for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){ for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){
(*it)->SetFlippedData(flippedData); (*it)->SetFlippedDataX(flippedDataX);
} }
} }
else { else {
int fd[2] = {flippedData[0], flippedData[1]};
if (dataStreamer.size() == 2) { if (dataStreamer.size() == 2) {
fd[0] = 0; dataStreamer[0]->SetFlippedDataX(0);
dataStreamer[0]->SetFlippedData(fd); dataStreamer[1]->SetFlippedDataX(1);
fd[0] = 1;
dataStreamer[1]->SetFlippedData(fd);
} }
} }
FILE_LOG(logINFO) << "Flipped Data: " << flippedData[0] << " , " << flippedData[1]; FILE_LOG(logINFO) << "Flipped Data X: " << flippedDataX;
} }
@ -186,19 +184,16 @@ void UDPStandardImplementation::setQuad(const bool b) {
if (!quadEnable) { if (!quadEnable) {
for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){ for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){
(*it)->SetNumberofDetectors(numDet); (*it)->SetNumberofDetectors(numDet);
(*it)->SetFlippedData(flippedData); (*it)->SetFlippedDataX(flippedDataX);
} }
} else { } else {
int size[2] = {1, 2}; int size[2] = {1, 2};
for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){ for (std::vector<DataStreamer*>::const_iterator it = dataStreamer.begin(); it != dataStreamer.end(); ++it){
(*it)->SetNumberofDetectors(size); (*it)->SetNumberofDetectors(size);
} }
int fd[2] = {flippedData[0], flippedData[1]};
if (dataStreamer.size() == 2) { if (dataStreamer.size() == 2) {
fd[0] = 0; dataStreamer[0]->SetFlippedDataX(0);
dataStreamer[0]->SetFlippedData(fd); dataStreamer[1]->SetFlippedDataX(1);
fd[0] = 1;
dataStreamer[1]->SetFlippedData(fd);
} }
} }
} }
@ -326,8 +321,15 @@ int UDPStandardImplementation::setDataStreamEnable(const bool enable) {
if (enable) { if (enable) {
for ( int i = 0; i < numThreads; ++i ) { for ( int i = 0; i < numThreads; ++i ) {
try { try {
int fd = flippedDataX;
int nd[2] = {numDet[0], numDet[1]};
if (quadEnable) {
fd = i;
nd[0] = 1;
nd[1] = 2;
}
DataStreamer* s = new DataStreamer(i, fifo[i], &dynamicRange, DataStreamer* s = new DataStreamer(i, fifo[i], &dynamicRange,
&roi, &fileIndex, flippedData, additionalJsonHeader, &silentMode, (int*)numDet, &gapPixelsEnable); &roi, &fileIndex, fd, additionalJsonHeader, &silentMode, (int*)nd, &gapPixelsEnable);
dataStreamer.push_back(s); dataStreamer.push_back(s);
dataStreamer[i]->SetGeneralData(generalData); dataStreamer[i]->SetGeneralData(generalData);
dataStreamer[i]->CreateZmqSockets(&numThreads, streamingPort, streamingSrcIP); dataStreamer[i]->CreateZmqSockets(&numThreads, streamingPort, streamingSrcIP);