ctb file frame header back in

This commit is contained in:
2019-04-30 11:18:09 +02:00
parent 668cff1c65
commit 56d1994b8c
5 changed files with 37 additions and 68 deletions

View File

@ -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;
}; };

View File

@ -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;

View File

@ -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;
}; };
/** /**

View File

@ -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);
} }

View File

@ -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;
} }
} }