mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 16:20:03 +02:00
bugfix for gotthard roi and noroi frame number, temporary fix to look at CACACACA to know if its a second packet, and first time look at last bit to know wheter to increment or not for consecutive frames fr no roi
This commit is contained in:
parent
03e7a83e74
commit
b4b38cb607
@ -89,7 +89,6 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Cosntructor */
|
/** Cosntructor */
|
||||||
GeneralData():
|
GeneralData():
|
||||||
myDetectorType(slsReceiverDefs::GENERIC),
|
myDetectorType(slsReceiverDefs::GENERIC),
|
||||||
@ -210,6 +209,14 @@ public:
|
|||||||
cprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
cprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set odd starting packet (gotthard)
|
||||||
|
* @param packetData pointer to data
|
||||||
|
*/
|
||||||
|
virtual void SetOddStartingPacket(char* packetData) {
|
||||||
|
cprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print all variables
|
* Print all variables
|
||||||
@ -249,6 +256,7 @@ private:
|
|||||||
const static int nChip = 10;
|
const static int nChip = 10;
|
||||||
const static int nChan = 128;
|
const static int nChan = 128;
|
||||||
const static int nChipsPerAdc = 2;
|
const static int nChipsPerAdc = 2;
|
||||||
|
bool oddStartingPacket;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
@ -267,6 +275,7 @@ private:
|
|||||||
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_receiver_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_receiver_header);
|
||||||
defaultFifoDepth = 50000;
|
defaultFifoDepth = 50000;
|
||||||
|
oddStartingPacket = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -277,11 +286,12 @@ private:
|
|||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
*/
|
*/
|
||||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
||||||
{
|
{
|
||||||
if (nPixelsX == 1280) {
|
if (nPixelsX == 1280) {
|
||||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||||
frameNumber++;
|
if (oddStartingPacket)
|
||||||
|
frameNumber++;
|
||||||
packetNumber = frameNumber&packetIndexMask;
|
packetNumber = frameNumber&packetIndexMask;
|
||||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
||||||
} else {
|
} else {
|
||||||
@ -300,14 +310,15 @@ private:
|
|||||||
* @param subFrameNumber sub frame number if applicable
|
* @param subFrameNumber sub frame number if applicable
|
||||||
* @param bunchId bunch id
|
* @param bunchId bunch id
|
||||||
*/
|
*/
|
||||||
virtual void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
||||||
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const
|
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const
|
||||||
{
|
{
|
||||||
if (nPixelsX == 1280) {
|
if (nPixelsX == 1280) {
|
||||||
subFrameNumber = -1;
|
subFrameNumber = -1;
|
||||||
bunchId = -1;
|
bunchId = -1;
|
||||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||||
frameNumber++;
|
if (oddStartingPacket)
|
||||||
|
frameNumber++;
|
||||||
packetNumber = frameNumber&packetIndexMask;
|
packetNumber = frameNumber&packetIndexMask;
|
||||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
||||||
} else {
|
} else {
|
||||||
@ -323,7 +334,7 @@ private:
|
|||||||
* Set ROI
|
* Set ROI
|
||||||
* @param i ROI
|
* @param i ROI
|
||||||
*/
|
*/
|
||||||
virtual void SetROI(std::vector<slsReceiverDefs::ROI> i) {
|
void SetROI(std::vector<slsReceiverDefs::ROI> i) {
|
||||||
// all adcs
|
// all adcs
|
||||||
if(!i.size()) {
|
if(!i.size()) {
|
||||||
nPixelsX = 1280;
|
nPixelsX = 1280;
|
||||||
@ -367,7 +378,7 @@ private:
|
|||||||
* @param i pointer to a vector of ROI
|
* @param i pointer to a vector of ROI
|
||||||
* @returns adc configured
|
* @returns adc configured
|
||||||
*/
|
*/
|
||||||
virtual const int GetAdcConfigured(int index, std::vector<slsReceiverDefs::ROI>* i) const{
|
const int GetAdcConfigured(int index, std::vector<slsReceiverDefs::ROI>* i) const{
|
||||||
int adc = -1;
|
int adc = -1;
|
||||||
// single adc
|
// single adc
|
||||||
if(i->size()) {
|
if(i->size()) {
|
||||||
@ -392,6 +403,36 @@ private:
|
|||||||
return adc;
|
return adc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set odd starting packet (gotthard)
|
||||||
|
* @param packetData pointer to data
|
||||||
|
*/
|
||||||
|
void SetOddStartingPacket(char* packetData) {
|
||||||
|
// care only if no roi
|
||||||
|
if (nPixelsX == 1280) {
|
||||||
|
uint32_t pnum = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||||
|
uint32_t FirstData = ((uint32_t)(*((uint32_t*)(packetData + 4))));
|
||||||
|
// first packet
|
||||||
|
if (FirstData != 0xCACACACA) {
|
||||||
|
// packet number should be 0, but is 1 => so odd starting packet
|
||||||
|
if (pnum & packetIndexMask) {
|
||||||
|
oddStartingPacket = true;
|
||||||
|
} else {
|
||||||
|
oddStartingPacket = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// second packet
|
||||||
|
else {
|
||||||
|
// packet number should be 1, but is 0 => so odd starting packet
|
||||||
|
if (!(pnum & packetIndexMask)) {
|
||||||
|
oddStartingPacket = true;
|
||||||
|
} else {
|
||||||
|
oddStartingPacket = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -527,7 +568,7 @@ private:
|
|||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
*/
|
*/
|
||||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const {
|
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const {
|
||||||
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
||||||
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
|
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
|
||||||
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
||||||
|
@ -202,7 +202,7 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
bool runningFlag;
|
bool runningFlag;
|
||||||
|
|
||||||
/** GeneralData (Detector Data) object */
|
/** GeneralData (Detector Data) object */
|
||||||
const GeneralData* generalData;
|
GeneralData* generalData;
|
||||||
|
|
||||||
/** Fifo structure */
|
/** Fifo structure */
|
||||||
Fifo* fifo;
|
Fifo* fifo;
|
||||||
|
@ -544,6 +544,10 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
}
|
}
|
||||||
// -------------------old header -----------------------------------------------------------------------------
|
// -------------------old header -----------------------------------------------------------------------------
|
||||||
else {
|
else {
|
||||||
|
// set first packet to be odd or even (check required when switching from roi to no roi)
|
||||||
|
if (myDetectorType == GOTTHARD && !measurementStartedFlag)
|
||||||
|
generalData->SetOddStartingPacket(listeningPacket + esize);
|
||||||
|
|
||||||
generalData->GetHeaderInfo(index, listeningPacket + esize,
|
generalData->GetHeaderInfo(index, listeningPacket + esize,
|
||||||
*dynamicRange, fnum, pnum, snum, bid);
|
*dynamicRange, fnum, pnum, snum, bid);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user