Class HDF5Meas#

Class Documentation#

class HDF5Meas#

eCAL HDF5 measurement API

Public Types

typedef std::function<void(void)> CallbackFunction#

Callback function type for pre file split notification.

Public Functions

HDF5Meas()#

Constructor.

explicit HDF5Meas(const std::string &path, eAccessType access = RDONLY)#

Constructor.

Parameters:
  • path – Input file path / measurement directory path (see meas directory structure description bellow, in Open method).

  • access – Access type

~HDF5Meas()#

Destructor.

HDF5Meas(const HDF5Meas &other) = delete#

Copy constructor deleted.

HDF5Meas &operator=(const HDF5Meas &other) = delete#

Move assignemnt deleted.

HDF5Meas(HDF5Meas&&) = default#

Move constructor.

HDF5Meas &operator=(HDF5Meas&&) = default#

Move assignment.

bool Open(const std::string &path, eAccessType access = RDONLY)#

Open file.

Parameters:
  • path – Input file path / measurement directory path.

                Default measurement directory structure:
                 - root directory e.g.: M:\measurement_directory\measurement01
                 - documents directory:                                |_doc
                 - hosts directories:                                  |_Host1 (e.g.: CARPC01)
                                                                       |_Host2 (e.g.: CARPC02)
    
                File path as input (eAccessType::RDONLY):
                 - root directory (e.g.: M:\measurement_directory\measurement01) in this case all hosts subdirectories will be iterated,
                 - host directory (e.g.: M:\measurement_directory\measurement01\CARPC01),
                 - file path, path to file from measurement (e.g.: M:\measurement_directory\measurement01\CARPC01\meas01_05.hdf5).
    
                File path as output (eAccessType::CREATE):
                 - full path to  measurement directory (recommended with host name) (e.g.: M:\measurement_directory\measurement01\CARPC01),
                 - to set the name of the actual hdf5 file use SetFileBaseName method.
    

  • access – Access type

Returns:

true if output (eAccessType::CREATE) measurement directory structure can be accessed/created, false otherwise. true if input (eAccessType::RDONLY) measurement/file path was opened, false otherwise.

bool Close()#

Close file.

Returns:

true if succeeds, false if it fails

bool IsOk() const#

Checks if file/measurement is ok.

Returns:

true if meas can be opened(read) or location is accessible(write), false otherwise

std::string GetFileVersion() const#

Get the File Type Version of the current opened file.

Returns:

file version

size_t GetMaxSizePerFile() const#

Gets maximum allowed size for an individual file.

Returns:

maximum size in MB

void SetMaxSizePerFile(size_t size)#

Sets maximum allowed size for an individual file.

Parameters:

size – maximum size in MB

bool IsOneFilePerChannelEnabled() const#

Whether each Channel shall be writte in its own file.

When enabled, data is clustered by channel and each channel is written to its own file. The filenames will consist of the basename and the channel name.

Returns:

true, if one file per channel is enabled

void SetOneFilePerChannelEnabled(bool enabled)#

Enable / disable the creation of one individual file per channel.

When enabled, data is clustered by channel and each channel is written to its own file. The filenames will consist of the basename and the channel name.

Parameters:

enabled – Whether one file shall be created per channel

std::set<std::string> GetChannelNames() const#

Get the available channel names of the current opened file / measurement.

Returns:

channel names

bool HasChannel(const std::string &channel_name) const#

Check if channel exists in measurement.

Parameters:

channel_name – name of the channel

Returns:

true if exists, false otherwise

std::string GetChannelDescription(const std::string &channel_name) const#

Get the channel description for the given channel.

Parameters:

channel_name – channel name

Returns:

channel description

void SetChannelDescription(const std::string &channel_name, const std::string &description)#

Set description of the given channel.

Parameters:
  • channel_name – channel name

  • description – description of the channel

std::string GetChannelType(const std::string &channel_name) const#

Gets the channel type of the given channel.

Parameters:

channel_name – channel name

Returns:

channel type

void SetChannelType(const std::string &channel_name, const std::string &type)#

Set type of the given channel.

Parameters:
  • channel_name – channel name

  • type – type of the channel

long long GetMinTimestamp(const std::string &channel_name) const#

Gets minimum timestamp for specified channel.

Parameters:

channel_name – channel name

Returns:

minimum timestamp value

long long GetMaxTimestamp(const std::string &channel_name) const#

Gets maximum timestamp for specified channel.

Parameters:

channel_name – channel name

Returns:

maximum timestamp value

bool GetEntriesInfo(const std::string &channel_name, EntryInfoSet &entries) const#

Gets the header info for all data entries for the given channel Header = timestamp + entry id.

Parameters:
  • channel_name[in] channel name

  • entries[out] header info for all data entries

Returns:

true if succeeds, false if it fails

bool GetEntriesInfoRange(const std::string &channel_name, long long begin, long long end, EntryInfoSet &entries) const#

Gets the header info for data entries for the given channel included in given time range (begin->end) Header = timestamp + entry id.

Parameters:
  • channel_name[in] channel name

  • begin[in] time range begin timestamp

  • end[in] time range end timestamp

  • entries[out] header info for data entries in given range

Returns:

true if succeeds, false if it fails

bool GetEntryDataSize(long long entry_id, size_t &size) const#

Gets data size of a specific entry.

Parameters:
  • entry_id[in] Entry ID

  • size[out] Entry data size

Returns:

true if succeeds, false if it fails

bool GetEntryData(long long entry_id, void *data) const#

Gets data from a specific entry.

Parameters:
  • entry_id[in] Entry ID

  • data[out] Entry data

Returns:

true if succeeds, false if it fails

void SetFileBaseName(const std::string &base_name)#

Set measurement file base name (desired name for the actual hdf5 files that will be created)

Parameters:

base_name – Name of the hdf5 files that will be created.

bool AddEntryToFile(const void *data, const unsigned long long &size, const long long &snd_timestamp, const long long &rcv_timestamp, const std::string &channel_name, long long id, long long clock)#

Add entry to file.

Parameters:
  • data – data to be added

  • size – size of the data

  • snd_timestamp – send time stamp

  • rcv_timestamp – receive time stamp

  • channel_name – channel name

  • id – message id

  • clock – message clock

Returns:

true if succeeds, false if it fails

void ConnectPreSplitCallback(CallbackFunction cb)#

Connect callback for pre file split notification.

Parameters:

cb – callback function

void DisconnectPreSplitCallback()#

Disconnect pre file split callback.