mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-03 19:30:04 +02:00
veto header smaller size
This commit is contained in:
parent
9592d1760f
commit
6bdc506a34
@ -2274,7 +2274,7 @@ void *start_timer(void *arg) {
|
|||||||
int datasize = imagesize;
|
int datasize = imagesize;
|
||||||
int packetsize = datasize + sizeof(sls_detector_header);
|
int packetsize = datasize + sizeof(sls_detector_header);
|
||||||
int vetodatasize = VETO_DATA_SIZE;
|
int vetodatasize = VETO_DATA_SIZE;
|
||||||
int vetopacketsize = vetodatasize + sizeof(sls_detector_header);
|
int vetopacketsize = vetodatasize + VETO_HEADER_SIZE;
|
||||||
|
|
||||||
// Generate data
|
// Generate data
|
||||||
char imageData[imagesize];
|
char imageData[imagesize];
|
||||||
@ -2331,21 +2331,16 @@ void *start_timer(void *arg) {
|
|||||||
sendUDPPacket(0, packetData, packetsize);
|
sendUDPPacket(0, packetData, packetsize);
|
||||||
|
|
||||||
// second interface (veto)
|
// second interface (veto)
|
||||||
char packetData2[packetsize];
|
char packetData2[vetopacketsize];
|
||||||
memset(packetData2, 0, packetsize);
|
memset(packetData2, 0, vetopacketsize);
|
||||||
if (numInterfaces == 2) {
|
if (numInterfaces == 2) {
|
||||||
// set header
|
// set header
|
||||||
sls_detector_header *header =
|
veto_header *header = (veto_header *)(packetData2);
|
||||||
(sls_detector_header *)(packetData2);
|
|
||||||
header->detType = (uint16_t)myDetectorType;
|
|
||||||
header->version = SLS_DETECTOR_HEADER_VERSION - 1;
|
|
||||||
header->frameNumber = frameHeaderNr;
|
header->frameNumber = frameHeaderNr;
|
||||||
header->packetNumber = 0;
|
header->bunchId = 0;
|
||||||
header->modId = 0;
|
header->reserved = 0;
|
||||||
header->row = detPos[X];
|
|
||||||
header->column = detPos[Y];
|
|
||||||
// fill data
|
// fill data
|
||||||
memcpy(packetData2 + sizeof(sls_detector_header), vetoData,
|
memcpy(packetData2 + VETO_HEADER_SIZE, vetoData,
|
||||||
vetodatasize);
|
vetodatasize);
|
||||||
// send 1 packet = 1 frame
|
// send 1 packet = 1 frame
|
||||||
sendUDPPacket(1, packetData2, vetopacketsize);
|
sendUDPPacket(1, packetData2, vetopacketsize);
|
||||||
|
@ -57,6 +57,13 @@
|
|||||||
#define READOUT_PLL_VCO_FREQ_HZ (866666688) // 866 MHz
|
#define READOUT_PLL_VCO_FREQ_HZ (866666688) // 866 MHz
|
||||||
#define SYSTEM_PLL_VCO_FREQ_HZ (722222224) // 722 MHz
|
#define SYSTEM_PLL_VCO_FREQ_HZ (722222224) // 722 MHz
|
||||||
#define VETO_DATA_SIZE (160)
|
#define VETO_DATA_SIZE (160)
|
||||||
|
#define VETO_HEADER_SIZE (24)
|
||||||
|
typedef struct {
|
||||||
|
uint64_t frameNumber;
|
||||||
|
uint64_t bunchId;
|
||||||
|
uint64_t reserved;
|
||||||
|
} veto_header;
|
||||||
|
|
||||||
/** Other Definitions */
|
/** Other Definitions */
|
||||||
#define BIT16_MASK (0xFFFF)
|
#define BIT16_MASK (0xFFFF)
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ class GeneralData {
|
|||||||
uint32_t vetoDataSize{0};
|
uint32_t vetoDataSize{0};
|
||||||
uint32_t vetoPacketSize{0};
|
uint32_t vetoPacketSize{0};
|
||||||
uint32_t vetoImageSize{0};
|
uint32_t vetoImageSize{0};
|
||||||
|
uint32_t vetoHsize{0};
|
||||||
|
|
||||||
GeneralData(){};
|
GeneralData(){};
|
||||||
virtual ~GeneralData(){};
|
virtual ~GeneralData(){};
|
||||||
@ -61,14 +62,17 @@ class GeneralData {
|
|||||||
* @param oddStartingPacket odd starting packet (gotthard)
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
|
* @param bunchId bunch Id
|
||||||
*/
|
*/
|
||||||
virtual void GetHeaderInfo(int index, char *packetData,
|
virtual void GetHeaderInfo(int index, char *packetData,
|
||||||
bool oddStartingPacket, uint64_t &frameNumber,
|
bool oddStartingPacket, uint64_t &frameNumber,
|
||||||
uint32_t &packetNumber) const {
|
uint32_t &packetNumber,
|
||||||
|
uint64_t &bunchId) const {
|
||||||
frameNumber = ((uint32_t)(*((uint32_t *)(packetData))));
|
frameNumber = ((uint32_t)(*((uint32_t *)(packetData))));
|
||||||
frameNumber++;
|
frameNumber++;
|
||||||
packetNumber = frameNumber & packetIndexMask;
|
packetNumber = frameNumber & packetIndexMask;
|
||||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
||||||
|
bunchId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -194,9 +198,11 @@ class GotthardData : public GeneralData {
|
|||||||
* @param oddStartingPacket odd starting packet (gotthard)
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
* @param frameNumber frame number
|
* @param frameNumber frame number
|
||||||
* @param packetNumber packet number
|
* @param packetNumber packet number
|
||||||
|
* @param bunchId bunch Id
|
||||||
*/
|
*/
|
||||||
void GetHeaderInfo(int index, char *packetData, bool oddStartingPacket,
|
void GetHeaderInfo(int index, char *packetData, bool oddStartingPacket,
|
||||||
uint64_t &frameNumber, uint32_t &packetNumber) const {
|
uint64_t &frameNumber, uint32_t &packetNumber,
|
||||||
|
uint64_t &bunchId) const {
|
||||||
if (nPixelsX == 1280) {
|
if (nPixelsX == 1280) {
|
||||||
frameNumber = *reinterpret_cast<uint32_t *>(packetData);
|
frameNumber = *reinterpret_cast<uint32_t *>(packetData);
|
||||||
if (oddStartingPacket)
|
if (oddStartingPacket)
|
||||||
@ -207,6 +213,7 @@ class GotthardData : public GeneralData {
|
|||||||
frameNumber = *reinterpret_cast<uint32_t *>(packetData);
|
frameNumber = *reinterpret_cast<uint32_t *>(packetData);
|
||||||
packetNumber = 0;
|
packetNumber = 0;
|
||||||
}
|
}
|
||||||
|
bunchId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -490,6 +497,7 @@ class Gotthard2Data : public GeneralData {
|
|||||||
vetoDataSize = 160;
|
vetoDataSize = 160;
|
||||||
vetoPacketSize = headerSizeinPacket + vetoDataSize;
|
vetoPacketSize = headerSizeinPacket + vetoDataSize;
|
||||||
vetoImageSize = vetoDataSize * packetsPerFrame;
|
vetoImageSize = vetoDataSize * packetsPerFrame;
|
||||||
|
vetoHsize = 24;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -506,6 +514,23 @@ class Gotthard2Data : public GeneralData {
|
|||||||
threadsPerReceiver = 1;
|
threadsPerReceiver = 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Header Infomation (frame number, packet number) for veto packets
|
||||||
|
* @param index thread index for debugging purposes
|
||||||
|
* @param packetData pointer to data
|
||||||
|
* @param oddStartingPacket odd starting packet (gotthard)
|
||||||
|
* @param frameNumber frame number
|
||||||
|
* @param packetNumber packet number
|
||||||
|
* @param bunchId bunch Id
|
||||||
|
*/
|
||||||
|
void GetHeaderInfo(int index, char *packetData, bool oddStartingPacket,
|
||||||
|
uint64_t &frameNumber, uint32_t &packetNumber,
|
||||||
|
uint64_t &bunchId) const {
|
||||||
|
frameNumber = *reinterpret_cast<uint64_t *>(packetData);
|
||||||
|
bunchId = *reinterpret_cast<uint64_t *>(packetData + 8);
|
||||||
|
packetNumber = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ChipTestBoardData : public GeneralData {
|
class ChipTestBoardData : public GeneralData {
|
||||||
|
@ -270,22 +270,25 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
uint64_t fnum = 0;
|
uint64_t fnum = 0;
|
||||||
uint32_t pnum = 0;
|
uint32_t pnum = 0;
|
||||||
|
uint64_t bnum = 0;
|
||||||
uint32_t numpackets = 0;
|
uint32_t numpackets = 0;
|
||||||
uint32_t dsize = generalData->dataSize;
|
uint32_t dsize = generalData->dataSize;
|
||||||
uint32_t imageSize = generalData->imageSize;
|
uint32_t imageSize = generalData->imageSize;
|
||||||
uint32_t packetSize = generalData->packetSize;
|
uint32_t packetSize = generalData->packetSize;
|
||||||
|
uint32_t hsize = generalData->headerSizeinPacket;
|
||||||
|
uint32_t fifohsize = generalData->fifoBufferHeaderSize;
|
||||||
|
bool standardheader = generalData->standardheader;
|
||||||
if (myDetectorType == GOTTHARD2 && index != 0) {
|
if (myDetectorType == GOTTHARD2 && index != 0) {
|
||||||
dsize = generalData->vetoDataSize;
|
dsize = generalData->vetoDataSize;
|
||||||
imageSize = generalData->vetoImageSize;
|
imageSize = generalData->vetoImageSize;
|
||||||
packetSize = generalData->vetoPacketSize;
|
packetSize = generalData->vetoPacketSize;
|
||||||
|
hsize = generalData->vetoHsize;
|
||||||
|
standardheader = false;
|
||||||
}
|
}
|
||||||
uint32_t hsize = generalData->headerSizeinPacket;
|
|
||||||
uint32_t fifohsize = generalData->fifoBufferHeaderSize;
|
|
||||||
uint32_t pperFrame = generalData->packetsPerFrame;
|
uint32_t pperFrame = generalData->packetsPerFrame;
|
||||||
bool isHeaderEmpty = true;
|
bool isHeaderEmpty = true;
|
||||||
sls_detector_header *old_header = nullptr;
|
sls_detector_header *old_header = nullptr;
|
||||||
sls_receiver_header *new_header = nullptr;
|
sls_receiver_header *new_header = nullptr;
|
||||||
bool standardheader = generalData->standardheader;
|
|
||||||
uint32_t corrected_dsize = dsize - ((pperFrame * dsize) - imageSize);
|
uint32_t corrected_dsize = dsize - ((pperFrame * dsize) - imageSize);
|
||||||
|
|
||||||
// reset to -1
|
// reset to -1
|
||||||
@ -329,7 +332,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
else {
|
else {
|
||||||
generalData->GetHeaderInfo(index, &carryOverPacket[0],
|
generalData->GetHeaderInfo(index, &carryOverPacket[0],
|
||||||
oddStartingPacket, fnum, pnum);
|
oddStartingPacket, fnum, pnum, bnum);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
if (fnum != currentFrameIndex) {
|
if (fnum != currentFrameIndex) {
|
||||||
@ -403,6 +406,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
else {
|
else {
|
||||||
new_header->detHeader.frameNumber = fnum;
|
new_header->detHeader.frameNumber = fnum;
|
||||||
|
new_header->detHeader.bunchId = bnum;
|
||||||
new_header->detHeader.row = row;
|
new_header->detHeader.row = row;
|
||||||
new_header->detHeader.column = column;
|
new_header->detHeader.column = column;
|
||||||
new_header->detHeader.detType =
|
new_header->detHeader.detType =
|
||||||
@ -470,7 +474,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
generalData->GetHeaderInfo(index, &listeningPacket[0],
|
generalData->GetHeaderInfo(index, &listeningPacket[0],
|
||||||
oddStartingPacket, fnum, pnum);
|
oddStartingPacket, fnum, pnum, bnum);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -569,6 +573,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
|||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
else {
|
else {
|
||||||
new_header->detHeader.frameNumber = fnum;
|
new_header->detHeader.frameNumber = fnum;
|
||||||
|
new_header->detHeader.bunchId = bnum;
|
||||||
new_header->detHeader.row = row;
|
new_header->detHeader.row = row;
|
||||||
new_header->detHeader.column = column;
|
new_header->detHeader.column = column;
|
||||||
new_header->detHeader.detType =
|
new_header->detHeader.detType =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user