Dhanya Maliakal b260d08225 somewhere
2017-02-10 10:08:00 +01:00

109 lines
2.6 KiB
C++

/************************************************
* @file BinaryFileWriter.h
* @short sets/gets properties for the binary file,
* creates/closes the file and writes data to it
***********************************************/
#ifndef BINARY_FILE_WRITER_H
#define BINARY_FILE_WRITER_H
#include "FileWriter.h"
/**
*@short sets/gets properties for the binary file, creates/closes the file and writes data to it
*/
class BinaryFileWriter : private virtual slsReceiverDefs, public FileWriter {
public:
/**
* Constructor
* creates the File Writer
* @param ind self index
* @param fname pointer to file name prefix
* @param fpath pointer to file path
* @param findex pointer to file index
* @param frindexenable pointer to frame index enable
* @param owenable pointer to over write enable
* @param dindex pointer to detector index
* @param nunits pointer to number of theads/ units per detector
* @param maxf pointer to max frames per file
*/
BinaryFileWriter(int ind, char* fname, char* fpath, uint64_t* findex,
bool* frindexenable, bool* owenable, int* dindex, int* nunits, uint32_t maxf);
/**
* Destructor
*/
~BinaryFileWriter();
/**
* Print all member values
*/
void PrintMembers();
/**
* Set Max frames per file
* @param maxf maximum frames per file
*/
void SetMaxFramesPerFile(uint32_t maxf);
/**
* Create file
* @param fnum current frame index to include in file name
* @returns OK or FAIL
*/
int CreateFile(uint64_t fnum);
/**
* Close File
*/
void CloseFile();
/**
* Create File Name in format fpath/fnameprefix_fx_dy_z.raw,
* where x is fnum, y is (dindex * numunits + unitindex) and z is findex
* @param fpath file path
* @param fnameprefix file name prefix (includes scan and position variables)
* @param findex file index
* @param frindexenable frame index enable
* @param fnum frame number index
* @param dindex readout index
* @param numunits number of units per readout. eg. eiger has 2 udp units per readout
* @param unitindex unit index
* @returns complete file name created
*/
static std::string CreateFileName(char* fpath, char* fnameprefix, uint64_t findex, bool frindexenable,
uint64_t fnum = 0, int dindex = -1, int numunits = 1, int unitindex = 0);
/**
* Create File
* @param owenable overwrite enable
* @param fname complete file name
* @returns OK or FAIL
*/
static int CreateDataFile(bool owenable, char* fname);
/**
* Close File
*/
static void CloseDataFile();
private:
/**
* Get Type
* @return type
*/
fileFormat GetType();
/** Maximum frames per file */
uint32_t maxFramesPerFile;
};
#endif