mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 21:07:13 +02:00
ctb file frame header back in
This commit is contained in:
@ -33,12 +33,11 @@ class BinaryFile : private virtual slsDetectorDefs, public File, public BinaryFi
|
|||||||
* @param dr pointer to dynamic range
|
* @param dr pointer to dynamic range
|
||||||
* @param portno pointer to udp port number for logging
|
* @param portno pointer to udp port number for logging
|
||||||
* @param smode pointer to silent mode
|
* @param smode pointer to silent mode
|
||||||
* @param hwenable header writer enable (ctb)
|
|
||||||
*/
|
*/
|
||||||
BinaryFile(int ind, uint32_t* maxf,
|
BinaryFile(int ind, uint32_t* maxf,
|
||||||
int* nd, char* fname, char* fpath, uint64_t* findex, bool* owenable,
|
int* nd, char* fname, char* fpath, uint64_t* findex, bool* owenable,
|
||||||
int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t* portno,
|
int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t* portno,
|
||||||
bool* smode, bool hwenable);
|
bool* smode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor
|
* Destructor
|
||||||
@ -117,8 +116,5 @@ class BinaryFile : private virtual slsDetectorDefs, public File, public BinaryFi
|
|||||||
/** Number of actual packets caught in file */
|
/** Number of actual packets caught in file */
|
||||||
uint64_t numActualPacketsInFile;
|
uint64_t numActualPacketsInFile;
|
||||||
|
|
||||||
/** Header writer enable */
|
|
||||||
bool headerWriteEnable;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -100,7 +100,6 @@ class BinaryFileStatic {
|
|||||||
* @param fd pointer to file handle
|
* @param fd pointer to file handle
|
||||||
* @param fname master file name
|
* @param fname master file name
|
||||||
* @param owenable overwrite enable
|
* @param owenable overwrite enable
|
||||||
* @param hwenable header write enable
|
|
||||||
* @param dr dynamic range
|
* @param dr dynamic range
|
||||||
* @param tenE ten giga enable
|
* @param tenE ten giga enable
|
||||||
* @param size image size
|
* @param size image size
|
||||||
@ -115,7 +114,7 @@ class BinaryFileStatic {
|
|||||||
* @param version version of software for binary writing
|
* @param version version of software for binary writing
|
||||||
* @returns 0 for success and 1 for fail
|
* @returns 0 for success and 1 for fail
|
||||||
*/
|
*/
|
||||||
static int CreateMasterDataFile(FILE*& fd, std::string fname, bool owenable, bool hwenable,
|
static int CreateMasterDataFile(FILE*& fd, std::string fname, bool owenable,
|
||||||
uint32_t dr, bool tenE, uint32_t size,
|
uint32_t dr, bool tenE, uint32_t size,
|
||||||
uint32_t nPixelsX, uint32_t nPixelsY, uint64_t nf,
|
uint32_t nPixelsX, uint32_t nPixelsY, uint64_t nf,
|
||||||
uint32_t maxf,
|
uint32_t maxf,
|
||||||
@ -136,24 +135,6 @@ class BinaryFileStatic {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
time_t t = time(0);
|
time_t t = time(0);
|
||||||
char header[MAX_STR_LENGTH];
|
|
||||||
strcpy(header,
|
|
||||||
"#Frame Header\n"
|
|
||||||
"Frame Number : 8 bytes\n"
|
|
||||||
"SubFrame Number/ExpLength : 4 bytes\n"
|
|
||||||
"Packet Number : 4 bytes\n"
|
|
||||||
"Bunch ID : 8 bytes\n"
|
|
||||||
"Timestamp : 8 bytes\n"
|
|
||||||
"Module Id : 2 bytes\n"
|
|
||||||
"Row : 2 bytes\n"
|
|
||||||
"Column : 2 bytes\n"
|
|
||||||
"Reserved : 2 bytes\n"
|
|
||||||
"Debug : 4 bytes\n"
|
|
||||||
"Round Robin Number : 2 bytes\n"
|
|
||||||
"Detector Type : 1 byte\n"
|
|
||||||
"Header Version : 1 byte\n"
|
|
||||||
"Packets Caught Mask : 64 bytes\n");
|
|
||||||
|
|
||||||
char message[MAX_MASTER_FILE_LENGTH];
|
char message[MAX_MASTER_FILE_LENGTH];
|
||||||
sprintf(message,
|
sprintf(message,
|
||||||
"Version : %.1f\n"
|
"Version : %.1f\n"
|
||||||
@ -170,7 +151,21 @@ class BinaryFileStatic {
|
|||||||
"Period (ns) : %lld\n"
|
"Period (ns) : %lld\n"
|
||||||
"Timestamp : %s\n\n"
|
"Timestamp : %s\n\n"
|
||||||
|
|
||||||
"%s"
|
"#Frame Header\n"
|
||||||
|
"Frame Number : 8 bytes\n"
|
||||||
|
"SubFrame Number/ExpLength : 4 bytes\n"
|
||||||
|
"Packet Number : 4 bytes\n"
|
||||||
|
"Bunch ID : 8 bytes\n"
|
||||||
|
"Timestamp : 8 bytes\n"
|
||||||
|
"Module Id : 2 bytes\n"
|
||||||
|
"Row : 2 bytes\n"
|
||||||
|
"Column : 2 bytes\n"
|
||||||
|
"Reserved : 2 bytes\n"
|
||||||
|
"Debug : 4 bytes\n"
|
||||||
|
"Round Robin Number : 2 bytes\n"
|
||||||
|
"Detector Type : 1 byte\n"
|
||||||
|
"Header Version : 1 byte\n"
|
||||||
|
"Packets Caught Mask : 64 bytes\n"
|
||||||
,
|
,
|
||||||
version,
|
version,
|
||||||
dr,
|
dr,
|
||||||
@ -184,9 +179,7 @@ class BinaryFileStatic {
|
|||||||
(long long int)subexposuretime,
|
(long long int)subexposuretime,
|
||||||
(long long int)subperiod,
|
(long long int)subperiod,
|
||||||
(long long int)acquisitionPeriod,
|
(long long int)acquisitionPeriod,
|
||||||
ctime(&t),
|
ctime(&t));
|
||||||
(hwenable ? header : "")
|
|
||||||
);
|
|
||||||
if (strlen(message) > MAX_MASTER_FILE_LENGTH) {
|
if (strlen(message) > MAX_MASTER_FILE_LENGTH) {
|
||||||
FILE_LOG(logERROR) << "Master File Size " << strlen(message) <<
|
FILE_LOG(logERROR) << "Master File Size " << strlen(message) <<
|
||||||
" is greater than max str size " << MAX_MASTER_FILE_LENGTH;
|
" is greater than max str size " << MAX_MASTER_FILE_LENGTH;
|
||||||
|
@ -87,9 +87,6 @@ public:
|
|||||||
/** default udp socket buffer size */
|
/** default udp socket buffer size */
|
||||||
uint32_t defaultUdpSocketBufferSize;
|
uint32_t defaultUdpSocketBufferSize;
|
||||||
|
|
||||||
/** header write enable */
|
|
||||||
bool headerWriteEnable;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -117,8 +114,7 @@ public:
|
|||||||
nPixelsYComplete(0),
|
nPixelsYComplete(0),
|
||||||
imageSizeComplete(0),
|
imageSizeComplete(0),
|
||||||
standardheader(false),
|
standardheader(false),
|
||||||
defaultUdpSocketBufferSize(RECEIVE_SOCKET_BUFFER_SIZE),
|
defaultUdpSocketBufferSize(RECEIVE_SOCKET_BUFFER_SIZE)
|
||||||
headerWriteEnable(true)
|
|
||||||
{};
|
{};
|
||||||
|
|
||||||
/** Destructor */
|
/** Destructor */
|
||||||
@ -257,7 +253,6 @@ public:
|
|||||||
FILE_LOG(level) << "Complete Image Size: " << imageSizeComplete;
|
FILE_LOG(level) << "Complete Image Size: " << imageSizeComplete;
|
||||||
FILE_LOG(level) << "Standard Header: " << standardheader;
|
FILE_LOG(level) << "Standard Header: " << standardheader;
|
||||||
FILE_LOG(level) << "UDP Socket Buffer Size: " << defaultUdpSocketBufferSize;
|
FILE_LOG(level) << "UDP Socket Buffer Size: " << defaultUdpSocketBufferSize;
|
||||||
FILE_LOG(level) << "Header Write Enable: " << headerWriteEnable;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -581,7 +576,6 @@ public:
|
|||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
standardheader = true;
|
standardheader = true;
|
||||||
headerWriteEnable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,12 +16,11 @@ FILE* BinaryFile::masterfd = nullptr;
|
|||||||
BinaryFile::BinaryFile(int ind, uint32_t* maxf,
|
BinaryFile::BinaryFile(int ind, uint32_t* maxf,
|
||||||
int* nd, char* fname, char* fpath, uint64_t* findex, bool* owenable,
|
int* nd, char* fname, char* fpath, uint64_t* findex, bool* owenable,
|
||||||
int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t* portno,
|
int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t* portno,
|
||||||
bool* smode, bool hwenable):
|
bool* smode):
|
||||||
File(ind, maxf, nd, fname, fpath, findex, owenable, dindex, nunits, nf, dr, portno, smode),
|
File(ind, maxf, nd, fname, fpath, findex, owenable, dindex, nunits, nf, dr, portno, smode),
|
||||||
filefd(nullptr),
|
filefd(nullptr),
|
||||||
numFramesInFile(0),
|
numFramesInFile(0),
|
||||||
numActualPacketsInFile(0),
|
numActualPacketsInFile(0)
|
||||||
headerWriteEnable(hwenable)
|
|
||||||
{
|
{
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
PrintMembers();
|
PrintMembers();
|
||||||
@ -80,11 +79,6 @@ int BinaryFile::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_
|
|||||||
|
|
||||||
// write to file
|
// write to file
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
// remove header for ctb
|
|
||||||
if (!headerWriteEnable) {
|
|
||||||
buffersize -= sizeof(sls_receiver_header);
|
|
||||||
buffer += sizeof(sls_receiver_header);
|
|
||||||
}
|
|
||||||
|
|
||||||
// contiguous bitset
|
// contiguous bitset
|
||||||
if (sizeof(sls_bitset) == sizeof(bitset_storage)) {
|
if (sizeof(sls_bitset) == sizeof(bitset_storage)) {
|
||||||
@ -93,30 +87,22 @@ int BinaryFile::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_
|
|||||||
|
|
||||||
// not contiguous bitset
|
// not contiguous bitset
|
||||||
else {
|
else {
|
||||||
|
// write detector header
|
||||||
|
ret = BinaryFileStatic::WriteDataFile(filefd, buffer, sizeof(sls_detector_header));
|
||||||
|
|
||||||
if (headerWriteEnable) {
|
// get contiguous representation of bit mask
|
||||||
// write detector header
|
bitset_storage storage;
|
||||||
ret = BinaryFileStatic::WriteDataFile(filefd, buffer, sizeof(sls_detector_header));
|
memset(storage, 0 , sizeof(bitset_storage));
|
||||||
|
sls_bitset bits = *(sls_bitset*)(buffer + sizeof(sls_detector_header));
|
||||||
// get contiguous representation of bit mask
|
for (int i = 0; i < MAX_NUM_PACKETS; ++i)
|
||||||
bitset_storage storage;
|
storage[i >> 3] |= (bits[i] << (i & 7));
|
||||||
memset(storage, 0 , sizeof(bitset_storage));
|
// write bitmask
|
||||||
sls_bitset bits = *(sls_bitset*)(buffer + sizeof(sls_detector_header));
|
ret += BinaryFileStatic::WriteDataFile(filefd, (char*)storage, sizeof(bitset_storage));
|
||||||
for (int i = 0; i < MAX_NUM_PACKETS; ++i)
|
|
||||||
storage[i >> 3] |= (bits[i] << (i & 7));
|
|
||||||
// write bitmask
|
|
||||||
ret += BinaryFileStatic::WriteDataFile(filefd, (char*)storage, sizeof(bitset_storage));
|
|
||||||
|
|
||||||
// write data
|
// write data
|
||||||
ret += BinaryFileStatic::WriteDataFile(filefd,
|
ret += BinaryFileStatic::WriteDataFile(filefd,
|
||||||
buffer + sizeof(sls_detector_header), buffersize - sizeof(sls_receiver_header));
|
buffer + sizeof(sls_detector_header), buffersize - sizeof(sls_receiver_header));
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
|
||||||
// write only data
|
|
||||||
ret += BinaryFileStatic::WriteDataFile(filefd, buffer, buffersize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if write error
|
// if write error
|
||||||
if (ret != buffersize) {
|
if (ret != buffersize) {
|
||||||
@ -141,7 +127,7 @@ int BinaryFile::CreateMasterFile(bool en, uint32_t size,
|
|||||||
FILE_LOG(logINFO) << "Master File: " << masterFileName;
|
FILE_LOG(logINFO) << "Master File: " << masterFileName;
|
||||||
}
|
}
|
||||||
return BinaryFileStatic::CreateMasterDataFile(masterfd, masterFileName,
|
return BinaryFileStatic::CreateMasterDataFile(masterfd, masterFileName,
|
||||||
*overWriteEnable, headerWriteEnable,
|
*overWriteEnable,
|
||||||
*dynamicRange, en, size, nx, ny, *numImages, *maxFramesPerFile,
|
*dynamicRange, en, size, nx, ny, *numImages, *maxFramesPerFile,
|
||||||
at, st, sp, ap, BINARY_WRITER_VERSION);
|
at, st, sp, ap, BINARY_WRITER_VERSION);
|
||||||
}
|
}
|
||||||
|
@ -235,7 +235,7 @@ void DataProcessor::SetupFileWriter(bool fwe, int* nd, uint32_t* maxf,
|
|||||||
default:
|
default:
|
||||||
file = new BinaryFile(index, maxf,
|
file = new BinaryFile(index, maxf,
|
||||||
nd, fname, fpath, findex, owenable,
|
nd, fname, fpath, findex, owenable,
|
||||||
dindex, nunits, nf, dr, portno, silentMode, generalData->headerWriteEnable);
|
dindex, nunits, nf, dr, portno, silentMode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user