removing header metadata for ctb binary files

This commit is contained in:
2019-04-25 19:20:13 +02:00
parent 2eac75aa0b
commit f5feb081ab
5 changed files with 67 additions and 36 deletions

View File

@ -16,11 +16,12 @@ FILE* BinaryFile::masterfd = nullptr;
BinaryFile::BinaryFile(int ind, uint32_t* maxf,
int* nd, char* fname, char* fpath, uint64_t* findex, bool* owenable,
int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t* portno,
bool* smode):
bool* smode, bool hwenable):
File(ind, maxf, nd, fname, fpath, findex, owenable, dindex, nunits, nf, dr, portno, smode),
filefd(nullptr),
numFramesInFile(0),
numActualPacketsInFile(0)
numActualPacketsInFile(0),
headerWriteEnable(hwenable)
{
#ifdef VERBOSE
PrintMembers();
@ -79,6 +80,11 @@ int BinaryFile::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_
// write to file
int ret = 0;
// remove header for ctb
if (!headerWriteEnable) {
buffersize -= sizeof(sls_receiver_header);
buffer += sizeof(sls_receiver_header);
}
// contiguous bitset
if (sizeof(sls_bitset) == sizeof(bitset_storage)) {
@ -87,21 +93,29 @@ int BinaryFile::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_
// not contiguous bitset
else {
// write detector header
ret = BinaryFileStatic::WriteDataFile(filefd, buffer, sizeof(sls_detector_header));
// get contiguous representation of bit mask
bitset_storage storage;
memset(storage, 0 , sizeof(bitset_storage));
sls_bitset bits = *(sls_bitset*)(buffer + sizeof(sls_detector_header));
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));
if (headerWriteEnable) {
// write detector header
ret = BinaryFileStatic::WriteDataFile(filefd, buffer, sizeof(sls_detector_header));
// get contiguous representation of bit mask
bitset_storage storage;
memset(storage, 0 , sizeof(bitset_storage));
sls_bitset bits = *(sls_bitset*)(buffer + sizeof(sls_detector_header));
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
ret += BinaryFileStatic::WriteDataFile(filefd,
buffer + sizeof(sls_detector_header), buffersize - sizeof(sls_receiver_header));
// write data
ret += BinaryFileStatic::WriteDataFile(filefd,
buffer + sizeof(sls_detector_header), buffersize - sizeof(sls_receiver_header));
}
else {
// write only data
ret += BinaryFileStatic::WriteDataFile(filefd, buffer, buffersize);
}
}
// if write error
@ -127,7 +141,7 @@ int BinaryFile::CreateMasterFile(bool en, uint32_t size,
FILE_LOG(logINFO) << "Master File: " << masterFileName;
}
return BinaryFileStatic::CreateMasterDataFile(masterfd, masterFileName,
*overWriteEnable,
*overWriteEnable, headerWriteEnable,
*dynamicRange, en, size, nx, ny, *numImages, *maxFramesPerFile,
at, st, sp, ap, BINARY_WRITER_VERSION);
}

View File

@ -235,7 +235,7 @@ void DataProcessor::SetupFileWriter(bool fwe, int* nd, uint32_t* maxf,
default:
file = new BinaryFile(index, maxf,
nd, fname, fpath, findex, owenable,
dindex, nunits, nf, dr, portno, silentMode);
dindex, nunits, nf, dr, portno, silentMode, generalData->headerWriteEnable);
break;
}
}