mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17:59 +02:00
moving subframenumber into a 32 bit number, also in stremer, changing json header to mention 4 bit and version number
This commit is contained in:
@ -172,10 +172,11 @@ class DataStreamer : private virtual slsReceiverDefs, public ThreadObject {
|
||||
/**
|
||||
* Create and send Json Header
|
||||
* @param fnum frame number
|
||||
* @param snum sub frame number
|
||||
* @param dummy true if its a dummy header
|
||||
* @returns 0 if error, else 1
|
||||
*/
|
||||
int SendHeader(uint64_t fnum, bool dummy = false);
|
||||
int SendHeader(uint64_t fnum, uint32_t snum, bool dummy = false);
|
||||
|
||||
/** type of thread */
|
||||
static const std::string TypeName;
|
||||
|
@ -82,7 +82,8 @@ public:
|
||||
* @param frameNumber frame number
|
||||
* @param packetNumber packet number
|
||||
*/
|
||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const {
|
||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
||||
{
|
||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||
frameNumber++;
|
||||
packetNumber = frameNumber&packetIndexMask;
|
||||
@ -93,15 +94,20 @@ public:
|
||||
* Get Header Infomation (frame number, packet number)
|
||||
* @param index thread index for debugging purposes
|
||||
* @param packetData pointer to data
|
||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||
* @param frameNumber frame number
|
||||
* @param packetNumber packet number
|
||||
* @param subFrameNumber sub frame number if applicable
|
||||
* @param bunchId bunch id
|
||||
*/
|
||||
virtual void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
||||
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const {
|
||||
cprintf(RED,"This is a generic function that should be overloaded by a derived class\n");
|
||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber,
|
||||
uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const
|
||||
{
|
||||
subFrameNumber = -1;
|
||||
bunchId = -1;
|
||||
frameNumber = ((uint32_t)(*((uint32_t*)(packetData))));
|
||||
frameNumber++;
|
||||
packetNumber = frameNumber&packetIndexMask;
|
||||
frameNumber = (frameNumber & frameIndexMask) >> frameIndexOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -368,21 +374,36 @@ private:
|
||||
* Get Header Infomation (frame number, packet number)
|
||||
* @param index thread index for debugging purposes
|
||||
* @param packetData pointer to data
|
||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||
* @param frameNumber frame number
|
||||
* @param packetNumber packet number
|
||||
*/
|
||||
virtual void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber, uint32_t& packetNumber) const
|
||||
{
|
||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*)(packetData);
|
||||
frameNumber = (uint64_t)(*( (uint32_t*) header->frameNumber));
|
||||
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param subFrameNumber sub frame number if applicable
|
||||
* @param bunchId bunch id
|
||||
*/
|
||||
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
||||
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const {
|
||||
subFrameNumber = 0;
|
||||
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber,
|
||||
uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const
|
||||
{
|
||||
subFrameNumber = -1;
|
||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*)(packetData);
|
||||
frameNumber = (uint64_t)(*( (uint32_t*) header->frameNumber));
|
||||
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
|
||||
bunchId = (*((uint64_t*) header->bunchid));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Print all variables
|
||||
*/
|
||||
@ -454,23 +475,19 @@ private:
|
||||
* Get Header Infomation (frame number, packet number)
|
||||
* @param index thread index for debugging purposes
|
||||
* @param packetData pointer to data
|
||||
* @param dynamicRange dynamic range to assign subframenumber if 32 bit mode
|
||||
* @param frameNumber frame number
|
||||
* @param packetNumber packet number
|
||||
* @param subFrameNumber sub frame number if applicable
|
||||
* @param bunchId bunch id
|
||||
*/
|
||||
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange,
|
||||
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const {
|
||||
bunchId = 0;
|
||||
subFrameNumber = 0;
|
||||
void GetHeaderInfo(int index, char* packetData, uint64_t& frameNumber,
|
||||
uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t bunchId) const {
|
||||
bunchId = -1;
|
||||
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(packetData + footerOffset);
|
||||
frameNumber = (uint64_t)((*( (uint64_t*) footer)) & frameIndexMask);
|
||||
packetNumber = (uint32_t)(*( (uint16_t*) footer->packetNumber))-1;
|
||||
if (dynamicRange == 32) {
|
||||
eiger_packet_header_t* header = (eiger_packet_header_t*) (packetData);
|
||||
subFrameNumber = (uint64_t) *( (uint32_t*) header->subFrameNumber);
|
||||
}
|
||||
eiger_packet_header_t* header = (eiger_packet_header_t*) (packetData);
|
||||
subFrameNumber = (uint64_t) *( (uint32_t*) header->subFrameNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -234,7 +234,7 @@ public:
|
||||
* @returns 0 if error, else 1
|
||||
*/
|
||||
int ReceiveHeader(const int index, uint64_t &acqIndex,
|
||||
uint64_t &frameIndex, uint64_t &subframeIndex, string &filename)
|
||||
uint64_t &frameIndex, uint32_t &subframeIndex, string &filename)
|
||||
{
|
||||
zmq_msg_init (&message);
|
||||
if (ReceiveMessage(index) > 0) {
|
||||
@ -299,7 +299,7 @@ public:
|
||||
* @param filename address of file name
|
||||
*/
|
||||
int ParseHeader(const int index, uint64_t &acqIndex,
|
||||
uint64_t &frameIndex, uint64_t &subframeIndex, string &filename)
|
||||
uint64_t &frameIndex, uint32_t &subframeIndex, string &filename)
|
||||
{
|
||||
Document d;
|
||||
if (d.Parse( (char*)zmq_msg_data(&message), zmq_msg_size(&message)).HasParseError()) {
|
||||
@ -307,23 +307,22 @@ public:
|
||||
return 0;
|
||||
}
|
||||
#ifdef VERYVERBOSE
|
||||
// htype is an array of strings
|
||||
rapidjson::Value::Array htype = d["htype"].GetArray();
|
||||
for (int i = 0; i < htype.Size(); i++)
|
||||
printf("%d: htype: %s\n", index, htype[i].GetString());
|
||||
printf("version:%.1f\n", d["version"].GetDouble());
|
||||
|
||||
// shape is an array of ints
|
||||
rapidjson::Value::Array shape = d["shape"].GetArray();
|
||||
printf("%d: shape: ", index);
|
||||
for (int i = 0; i < shape.Size(); i++)
|
||||
printf("%d: %d ", index, shape[i].GetInt());
|
||||
printf("\n");
|
||||
|
||||
printf("%d: type: %s\n", index, d["type"].GetString());
|
||||
#endif
|
||||
|
||||
if(d["acqIndex"].GetInt()!=-1){
|
||||
acqIndex = d["acqIndex"].GetInt();
|
||||
frameIndex = d["fIndex"].GetInt();
|
||||
subframeIndex = d["subfnum"].GetInt();
|
||||
acqIndex = d["acqIndex"].GetUint64();
|
||||
frameIndex = d["fIndex"].GetUint64();
|
||||
subframeIndex = d["subfnum"].GetUint();
|
||||
filename = d["fname"].GetString();
|
||||
#ifdef VERYVERBOSE
|
||||
cout << "Acquisition index: " << acqIndex << endl;
|
||||
|
@ -14,19 +14,22 @@
|
||||
#define CREATE_FILES 1
|
||||
#define DO_EVERYTHING 2
|
||||
|
||||
//binary
|
||||
#define FILE_FRAME_HEADER_SIZE 16
|
||||
//binary file/ fifo
|
||||
#define FILE_FRAME_HDR_FNUM_SIZE 8
|
||||
#define FILE_FRAME_HDR_SNUM_SIZE 4
|
||||
#define FILE_FRAME_HDR_BID_SIZE 8
|
||||
#define FILE_FRAME_HEADER_SIZE (FILE_FRAME_HDR_FNUM_SIZE + FILE_FRAME_HDR_SNUM_SIZE + FILE_FRAME_HDR_BID_SIZE)
|
||||
#define FIFO_HEADER_NUMBYTES 4
|
||||
#define FILE_BUFFER_SIZE (16*1024*1024) //16mb
|
||||
|
||||
//hdf5
|
||||
#define MAX_CHUNKED_IMAGES 1
|
||||
|
||||
//versions
|
||||
#define STREAMER_VERSION 1.0
|
||||
#define HDF5_WRITER_VERSION 1.0
|
||||
#define BINARY_WRITER_VERSION 1.0 //1 decimal places
|
||||
|
||||
//fifo
|
||||
#define FIFO_HEADER_NUMBYTES 4
|
||||
|
||||
//parameters to calculate fifo depth
|
||||
#define SAMPLE_TIME_IN_NS 100000000//100ms
|
||||
|
Reference in New Issue
Block a user