openDAQ
Open data acquisition platform
Block reader
+ Collaboration diagram for Block reader:

Detailed Description

Classes

struct  IBlockReader
 A signal data reader that abstracts away reading of signal packets by keeping an internal read-position and automatically advances it on subsequent reads. The difference to a StreamReader is that instead of reading on per sample basis it always returns only a full block of samples. This means that even if more samples are available they will not be read until there is enough of them to fill at least one block. More...
 
struct  IBlockReaderBuilder
 Builder component of Block reader objects. Contains setter methods to configure the Block reader parameters and a build method that builds the Unit object. More...
 
class  BlockReaderBuilderPtr
 Builder component of Block reader objects. Contains setter methods to configure the Block reader parameters and a build method that builds the Unit object. More...
 
class  BlockReaderPtr
 A signal data reader that abstracts away reading of signal packets by keeping an internal read-position and automatically advances it on subsequent reads. The difference to a StreamReader is that instead of reading on per sample basis it always returns only a full block of samples. This means that even if more samples are available they will not be read until there is enough of them to fill at least one block. More...
 

Functions

daq::BlockReaderStatusPtr read (void *blocks, daq::SizeT *count, daq::SizeT timeoutMs=0) const
 Copies at maximum the next count blocks of unread samples to the values buffer. The amount actually read is returned through the count parameter. More...
 
daq::BlockReaderStatusPtr readWithDomain (void *dataBlocks, void *domainBlocks, daq::SizeT *count, daq::SizeT timeoutMs=0) const
 Copies at maximum the next count blocks of unread samples and clock-stamps to the dataBlocks and domainBlocks buffers. The amount actually read is returned through the count parameter. More...
 
daq::SizeT getBlockSize () const
 The amount of samples the reader considers as one block. More...
 
daq::SizeT getOverlap () const
 The amount of block overlapping. More...
 

Function Documentation

◆ getBlockSize()

daq::SizeT getBlockSize ( ) const
inline

The amount of samples the reader considers as one block.

Returns
The number of samples in a block.

◆ getOverlap()

daq::SizeT getOverlap ( ) const
inline

The amount of block overlapping.

Returns
The overlap size in percents.

◆ read()

daq::BlockReaderStatusPtr read ( void *  blocks,
daq::SizeT *  count,
daq::SizeT  timeoutMs = 0 
) const
inline

Copies at maximum the next count blocks of unread samples to the values buffer. The amount actually read is returned through the count parameter.

Parameters
[in]blocksThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count * blockSize amount of samples.
[in,out]countThe maximum amount of blocks to be read. If the count is less than available the parameter value is set to the actual amount and only the available blocks are returned. The rest of the buffer is not modified or cleared.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of blocks before returning.
[out]statusRepresents the status of the reader.
  • If the reader is invalid, IReaderStatus::getValid returns false.
  • If an event packet was encountered during processing, IReaderStatus::isEventEncountered returns true.
  • If the reading process is successful, ReaderStatus::isOk returns true, indicating that IReaderStatus::getValid is true and IReaderStatus::isEventEncountered is false.

◆ readWithDomain()

daq::BlockReaderStatusPtr readWithDomain ( void *  dataBlocks,
void *  domainBlocks,
daq::SizeT *  count,
daq::SizeT  timeoutMs = 0 
) const
inline

Copies at maximum the next count blocks of unread samples and clock-stamps to the dataBlocks and domainBlocks buffers. The amount actually read is returned through the count parameter.

Parameters
[in]dataBlocksThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count * blockSize amount of samples.
[in]domainBlocksThe buffer that the domain values will be copied to. The buffer must be a contiguous memory big enough to receive count * blockSize amount of clock-stamps.
[in,out]countThe maximum amount of blocks to be read. If the count is less than available the parameter value is set to the actual amount and only the available blocks are returned. The rest of the buffer is not modified or cleared.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of blocks before returning.
[out]statusRepresents the status of the reader.
  • If the reader is invalid, IReaderStatus::getValid returns false.
  • If an event packet was encountered during processing, IReaderStatus::isEventEncountered returns true.
  • If the reading process is successful, ReaderStatus::isOk returns true, indicating that IReaderStatus::getValid is true and IReaderStatus::isEventEncountered is false.