SLS Receiver Header Format
- It is 112 bytes and consists of:
48 bytes of the SLS Detector Header
64 bytes of packet mask
typedef struct {
uint64_t frameNumber;
uint32_t expLength;
uint32_t packetNumber;
uint64_t detSpec1;
uint64_t timestamp;
uint16_t modId;
uint16_t row;
uint16_t column;
uint16_t detSpec2;
uint32_t detSpec3;
uint16_t detSpec4;
uint8_t detType;
uint8_t version;
} sls_detector_header;
struct sls_receiver_header {
sls_detector_header detHeader; /**< is the detector header */
sls_bitset packetsMask; /**< is the packets caught bit mask */
};
sls_detector_header (described in the current detector header)
The packetNumber from detector UDP header is modified in sls_receiver_header to number of packets caught by receiver for that frame and the bit mask for each packet caught is the packetsMask. The packetsMask is a total of 512 bits due to the largest number of packets per frame among our detectors.
For eg. Jungfrau has 128 packets per frame. If packetNumeber is 128, then this frame is complete. If it is 127 or less, it is a partial frame due to missing packets. If one would still like to use it, the packetsMask will specify which packet has been received or is missing.