master hdf5 does not work, but so far good

This commit is contained in:
Dhanya Maliakal
2017-02-16 12:48:15 +01:00
parent 54f92fb26c
commit 2cd38fefcd
14 changed files with 958 additions and 225 deletions

View File

@ -5,13 +5,15 @@
***********************************************/
#ifndef BINARY_FILE_H
#define BINARY_FILE_H
#include "File.h"
/**
*@short sets/gets properties for the binary file, creates/closes the file and writes data to it
*/
#include "File.h"
#include <string>
class BinaryFile : private virtual slsReceiverDefs, public File {
public:
@ -26,10 +28,12 @@ class BinaryFile : private virtual slsReceiverDefs, public File {
* @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
* @param nf pointer to number of frames
* @param dr dynamic range
* @param maxf max frames per file
*/
BinaryFile(int ind, char* fname, char* fpath, uint64_t* findex,
bool* frindexenable, bool* owenable, int* dindex, int* nunits, uint32_t maxf);
bool* frindexenable, bool* owenable, int* dindex, int* nunits, uint64_t* nf, uint32_t* dr, uint32_t maxf);
/**
* Destructor
@ -55,9 +59,23 @@ class BinaryFile : private virtual slsReceiverDefs, public File {
int CreateFile(uint64_t fnum);
/**
* Close File
* Close Current File
*/
void CloseFile();
void CloseCurrentFile();
/**
* Close all Files
*/
void CloseAllFiles();
/**
* Write data to file
* @param buffer buffer to write from
* @param buffersize size of buffer
* @param fnum current image number
* @returns OK or FAIL
*/
int WriteToFile(char* buffer, int buffersize, uint64_t fnum);
/**
* Create File Name in format fpath/fnameprefix_fx_dy_z.raw,
@ -77,18 +95,41 @@ class BinaryFile : private virtual slsReceiverDefs, public File {
/**
* Create File
* @param fd file pointer
* @param owenable overwrite enable
* @param fname complete file name
* @returns OK or FAIL
*/
static int CreateDataFile(bool owenable, char* fname);
static int CreateDataFile(FILE*& fd, bool owenable, std::string fname);
/**
* Close File
* @param fd file pointer
*/
static void CloseDataFile();
static void CloseDataFile(FILE*& fd);
/**
* Write data to file
* @param fd file pointer
* @param buf buffer to write from
* @param bsize size of buffer
* @param fnum current image number
* @returns number of elements written
*/
static int WriteDataFile(FILE* fd, char* buf, int bsize, uint64_t fnum);
/**
* Create common files
* @param en ten giga enable
* @param size image size
* @param nx number of pixels in x direction
* @param ny number of pixels in y direction
* @param at acquisition time
* @param ap acquisition period
* @returns OK or FAIL
*/
int CreateCommonFiles(bool en, uint32_t size,
uint32_t nx, uint32_t ny, uint64_t at, uint64_t ap);
private:
@ -97,11 +138,47 @@ class BinaryFile : private virtual slsReceiverDefs, public File {
* Get Type
* @return type
*/
fileFormat GetType();
fileFormat GetFileType();
/** Maximum frames per file */
uint32_t maxFramesPerFile;
/** File Descriptor */
FILE* filefd;
/** Master File Descriptor */
static FILE* masterfd;
/**
* Create file names for master and virtual file
* @param m master file name
* @param fpath file path
* @param fnameprefix file name prefix (includes scan and position variables)
* @param findex file index
*/
void CreateCommonFileNames(std::string& m, char* fpath, char* fnameprefix, uint64_t findex);
/*
* Close master and virtual files
*/
void CloseCommonDataFiles();
/**
* Create master and virtual files
* @param m master file name
* @param owenable overwrite enable
* @param tengigaEnable ten giga enable
* @param imageSize image size
* @param nPixelsX number of pixels in x direction
* @param nPixelsY number of pixels in y direction
* @param acquisitionTime acquisition time
* @param acquisitionPeriod acquisition period
* @returns OK or FAIL
*/
int CreateCommonDataFiles(std::string m, bool owenable,
bool tengigaEnable, uint32_t imageSize, uint32_t nPixelsX, uint32_t nPixelsY,
uint64_t acquisitionTime, uint64_t acquisitionPeriod);
};