mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-07 10:30:41 +02:00
in between
This commit is contained in:
parent
b4b38cb607
commit
6b4a9be870
@ -119,32 +119,18 @@ public:
|
|||||||
/** Destructor */
|
/** Destructor */
|
||||||
virtual ~GeneralData(){};
|
virtual ~GeneralData(){};
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Header Infomation (frame number, packet number)
|
|
||||||
* @param index thread index for debugging purposes
|
|
||||||
* @param packetData pointer to data
|
|
||||||
* @param frameNumber frame number
|
|
||||||
* @param packetNumber packet number
|
|
||||||
*/
|
|
||||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
|
||||||
{
|
|
||||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
|
||||||
frameNumber++;
|
|
||||||
packetNumber = frameNumber&packetIndexMask;
|
|
||||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Header Infomation (frame number, packet number)
|
* Get Header Infomation (frame number, packet number)
|
||||||
* @param index thread index for debugging purposes
|
* @param index thread index for debugging purposes
|
||||||
* @param packetData pointer to data
|
* @param packetData pointer to data
|
||||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||||
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
* @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,
|
virtual void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
|
||||||
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
|
||||||
{
|
{
|
||||||
subFrameNumber = -1;
|
subFrameNumber = -1;
|
||||||
@ -211,10 +197,13 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set odd starting packet (gotthard)
|
* Set odd starting packet (gotthard)
|
||||||
|
* @param index thread index for debugging purposes
|
||||||
* @param packetData pointer to data
|
* @param packetData pointer to data
|
||||||
|
* @returns true or false for odd starting packet number
|
||||||
*/
|
*/
|
||||||
virtual void SetOddStartingPacket(char* packetData) {
|
virtual bool SetOddStartingPacket(int index, char* packetData) {
|
||||||
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");
|
||||||
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -256,7 +245,6 @@ 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 */
|
||||||
@ -275,48 +263,28 @@ 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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Header Infomation (frame number, packet number)
|
|
||||||
* @param index thread index for debugging purposes
|
|
||||||
* @param packetData pointer to data
|
|
||||||
* @param frameNumber frame number
|
|
||||||
* @param packetNumber packet number
|
|
||||||
*/
|
|
||||||
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
|
||||||
{
|
|
||||||
if (nPixelsX == 1280) {
|
|
||||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
|
||||||
if (oddStartingPacket)
|
|
||||||
frameNumber++;
|
|
||||||
packetNumber = frameNumber&packetIndexMask;
|
|
||||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
|
||||||
} else {
|
|
||||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
|
||||||
packetNumber = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Header Infomation (frame number, packet number)
|
* Get Header Infomation (frame number, packet number)
|
||||||
* @param index thread index for debugging purposes
|
* @param index thread index for debugging purposes
|
||||||
* @param packetData pointer to data
|
* @param packetData pointer to data
|
||||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||||
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
* @param subFrameNumber sub frame number if applicable
|
* @param subFrameNumber sub frame number if applicable
|
||||||
* @param bunchId bunch id
|
* @param bunchId bunch id
|
||||||
*/
|
*/
|
||||||
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
|
||||||
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))));
|
||||||
|
cprintf(BLUE,"Listening %d: first fnum:%lu\n", index, frameNumber);
|
||||||
if (oddStartingPacket)
|
if (oddStartingPacket)
|
||||||
frameNumber++;
|
frameNumber++;
|
||||||
packetNumber = frameNumber&packetIndexMask;
|
packetNumber = frameNumber&packetIndexMask;
|
||||||
@ -405,32 +373,37 @@ private:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set odd starting packet (gotthard)
|
* Set odd starting packet (gotthard)
|
||||||
|
* @param index thread index for debugging purposes
|
||||||
* @param packetData pointer to data
|
* @param packetData pointer to data
|
||||||
|
* @returns true or false for odd starting packet number
|
||||||
*/
|
*/
|
||||||
void SetOddStartingPacket(char* packetData) {
|
bool SetOddStartingPacket(int index, char* packetData) {
|
||||||
|
bool oddStartingPacket = true;
|
||||||
// care only if no roi
|
// care only if no roi
|
||||||
if (nPixelsX == 1280) {
|
if (nPixelsX == 1280) {
|
||||||
uint32_t pnum = ((uint32_t)(*((uint32_t*)(packetData))));
|
uint32_t fnum = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||||
uint32_t FirstData = ((uint32_t)(*((uint32_t*)(packetData + 4))));
|
uint32_t firstData = ((uint32_t)(*((uint32_t*)(packetData + 4))));
|
||||||
|
cprintf(BLUE,"Listening %d: (setoff)fnum:0x%x, firstdata:0x%x\n", index, fnum, firstData);
|
||||||
// first packet
|
// first packet
|
||||||
if (FirstData != 0xCACACACA) {
|
if (firstData != 0xCACACACA) { cprintf(BLUE,"Listening %d: (setoff) first packet\n", index);
|
||||||
// packet number should be 0, but is 1 => so odd starting packet
|
// packet number should be 0, but is 1 => so odd starting packet
|
||||||
if (pnum & packetIndexMask) {
|
if (fnum & packetIndexMask) {
|
||||||
oddStartingPacket = true;
|
oddStartingPacket = true;
|
||||||
} else {
|
} else {
|
||||||
oddStartingPacket = false;
|
oddStartingPacket = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// second packet
|
// second packet
|
||||||
else {
|
else {cprintf(BLUE,"Listening %d: (setoff) second packet\n", index);
|
||||||
// packet number should be 1, but is 0 => so odd starting packet
|
// packet number should be 1, but is 0 => so odd starting packet
|
||||||
if (!(pnum & packetIndexMask)) {
|
if (!(fnum & packetIndexMask)) {
|
||||||
oddStartingPacket = true;
|
oddStartingPacket = true;
|
||||||
} else {
|
} else {
|
||||||
oddStartingPacket = false;
|
oddStartingPacket = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return oddStartingPacket;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -561,29 +534,18 @@ private:
|
|||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Header Infomation (frame number, packet number)
|
|
||||||
* @param index thread index for debugging purposes
|
|
||||||
* @param packetData pointer to data
|
|
||||||
* @param frameNumber frame number
|
|
||||||
* @param packetNumber packet number
|
|
||||||
*/
|
|
||||||
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const {
|
|
||||||
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
|
||||||
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
|
|
||||||
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Header Infomation (frame number, packet number)
|
* Get Header Infomation (frame number, packet number)
|
||||||
* @param index thread index for debugging purposes
|
* @param index thread index for debugging purposes
|
||||||
* @param packetData pointer to data
|
* @param packetData pointer to data
|
||||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||||
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
* @param frameNumber frame number * @param packetNumber packet number
|
* @param frameNumber frame number * @param packetNumber packet number
|
||||||
* @param subFrameNumber sub frame number if applicable
|
* @param subFrameNumber sub frame number if applicable
|
||||||
* @param bunchId bunch id
|
* @param bunchId bunch id
|
||||||
*/
|
*/
|
||||||
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
|
||||||
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 {
|
||||||
subFrameNumber = -1;
|
subFrameNumber = -1;
|
||||||
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
|
||||||
|
@ -311,5 +311,11 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
|
|
||||||
/** number of images for statistic */
|
/** number of images for statistic */
|
||||||
uint32_t numFramesStatistic;
|
uint32_t numFramesStatistic;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* starting packet number is odd or evern, accordingly increment frame number
|
||||||
|
* to get first packet number as 0
|
||||||
|
* (pecific to gotthard, can vary between modules, hence defined here) */
|
||||||
|
bool oddStartingPacket;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,7 +54,8 @@ Listener::Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
|
|||||||
listeningPacket(0),
|
listeningPacket(0),
|
||||||
udpSocketAlive(0),
|
udpSocketAlive(0),
|
||||||
numPacketsStatistic(0),
|
numPacketsStatistic(0),
|
||||||
numFramesStatistic(0)
|
numFramesStatistic(0),
|
||||||
|
oddStartingPacket(true)
|
||||||
{
|
{
|
||||||
if(ThreadObject::CreateThread() == FAIL)
|
if(ThreadObject::CreateThread() == FAIL)
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
@ -429,7 +430,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
// -------------------old header -----------------------------------------------------------------------------
|
// -------------------old header -----------------------------------------------------------------------------
|
||||||
else {
|
else {
|
||||||
generalData->GetHeaderInfo(index, carryOverPacket + esize,
|
generalData->GetHeaderInfo(index, carryOverPacket + esize,
|
||||||
*dynamicRange, fnum, pnum, snum, bid);
|
*dynamicRange, oddStartingPacket, fnum, pnum, snum, bid);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
if (fnum != currentFrameIndex) {
|
if (fnum != currentFrameIndex) {
|
||||||
@ -545,11 +546,13 @@ 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)
|
// set first packet to be odd or even (check required when switching from roi to no roi)
|
||||||
if (myDetectorType == GOTTHARD && !measurementStartedFlag)
|
if (myDetectorType == GOTTHARD && !measurementStartedFlag) {
|
||||||
generalData->SetOddStartingPacket(listeningPacket + esize);
|
oddStartingPacket = generalData->SetOddStartingPacket(index, listeningPacket + esize);
|
||||||
|
cprintf(GREEN,"oddstartingpacket: %d\n", (int)oddStartingPacket);
|
||||||
|
}
|
||||||
|
|
||||||
generalData->GetHeaderInfo(index, listeningPacket + esize,
|
generalData->GetHeaderInfo(index, listeningPacket + esize,
|
||||||
*dynamicRange, fnum, pnum, snum, bid);
|
*dynamicRange, oddStartingPacket, fnum, pnum, snum, bid);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -563,11 +566,11 @@ uint32_t Listener::ListenToAnImage(char* buf) {
|
|||||||
lastCaughtFrameIndex = fnum;
|
lastCaughtFrameIndex = fnum;
|
||||||
|
|
||||||
|
|
||||||
#ifdef VERBOSE
|
//#ifdef VERBOSE
|
||||||
//if (!index)
|
//if (!index)
|
||||||
cprintf(GREEN,"Listening %d: currentfindex:%lu, fnum:%lu, pnum:%u numpackets:%u\n",
|
cprintf(GREEN,"Listening %d: currentfindex:%lu, fnum:%lu, pnum:%u numpackets:%u\n",
|
||||||
index,currentFrameIndex, fnum, pnum, numpackets);
|
index,currentFrameIndex, fnum, pnum, numpackets);
|
||||||
#endif
|
//#endif
|
||||||
if (!measurementStartedFlag)
|
if (!measurementStartedFlag)
|
||||||
RecordFirstIndices(fnum);
|
RecordFirstIndices(fnum);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user