openDAQ
Open data acquisition platform
IMultiReader Struct Referenceabstract

Reads multiple Signals at once. More...

+ Inheritance diagram for IMultiReader:
+ Collaboration diagram for IMultiReader:

Detailed Description

Reads multiple Signals at once.

Public Member Functions

virtual ErrCode INTERFACE_FUNC read (void *samples, SizeT *count, SizeT timeoutMs=0, IMultiReaderStatus **status=nullptr)=0
 Copies at maximum the next count unread samples to the values buffer. The amount actually read is returned through the count parameter. More...
 
virtual ErrCode INTERFACE_FUNC readWithDomain (void *samples, void *domain, SizeT *count, SizeT timeoutMs=0, IMultiReaderStatus **status=nullptr)=0
 Copies at maximum the next count unread samples and clock-stamps to the samples and domain buffers. The amount actually read is returned through the count parameter. More...
 
virtual ErrCode INTERFACE_FUNC skipSamples (SizeT *count, IMultiReaderStatus **status)=0
 Skips the specified amount of samples. More...
 
virtual ErrCode INTERFACE_FUNC getTickResolution (IRatio **resolution)=0
 Gets the resolution the reader aligned all the signals to. This is the highest resolution (lowest value) of all the signals to not loose the precision. More...
 
virtual ErrCode INTERFACE_FUNC getOrigin (IString **origin)=0
 Gets the origin the reader aligned all the signals to. This is usually the earliest (lowest value) from all the signals. More...
 
virtual ErrCode INTERFACE_FUNC getOffset (void *domainStart)=0
 Gets the domain value (offset) from the aligned origin at the point the reader starts to provide synchronized samples. More...
 
virtual ErrCode INTERFACE_FUNC getIsSynchronized (Bool *isSynchronized)=0
 Gets the synchronization status of the reader. More...
 
virtual ErrCode INTERFACE_FUNC getCommonSampleRate (Int *commonSampleRate)=0
 Gets the common sample rate in case input signal have different rates. The value of common sample rate is such that sample rate of any individual signal can be represented as commonSampleRate / Div, where Div is an integer. Unless the required common sample rate is specified in the MultiReader constructor, common sample rate is lowest common multiple of individual signal's sample rates. The number of samples to be read is specified in common sample rate. More...
 
virtual ErrCode INTERFACE_FUNC setActive (Bool isActive)=0
 Sets active or inactive MultiReader state. In inactive state MultiReader will receive only event packets. More...
 
virtual ErrCode INTERFACE_FUNC getActive (Bool *isActive)=0
 Gets active or inactive MultiReader state. In inactive state MultiReader will receive only event packets.
 
- Public Member Functions inherited from ISampleReader
virtual ErrCode INTERFACE_FUNC getValueReadType (SampleType *sampleType)=0
 Gets the sample-type the signal value samples will be converted to when read or SampleType::Invalid if read-type has not been determined yet. More...
 
virtual ErrCode INTERFACE_FUNC getDomainReadType (SampleType *sampleType)=0
 Gets the sample-type the signal domain samples will be converted to when read or SampleType::Invalid if read-type has not been determined yet. More...
 
virtual ErrCode INTERFACE_FUNC setValueTransformFunction (IFunction *transform)=0
 Sets the transform function that will be called with the read value-data and currently valid Signal-Descriptor giving the user the chance add a custom post-processing step. The function should have a signature compatible with: More...
 
virtual ErrCode INTERFACE_FUNC setDomainTransformFunction (IFunction *transform)=0
 Sets the transform function that will be called with the read domain-data and currently valid Signal-Descriptor giving the user the chance add a custom post-processing step. The function should have a signature compatible with: More...
 
virtual ErrCode INTERFACE_FUNC getReadMode (ReadMode *mode)=0
 Gets the reader's read mode which determines if the reader will also scale the read data or not. More...
 
- Public Member Functions inherited from IReader
virtual ErrCode INTERFACE_FUNC getAvailableCount (SizeT *count)=0
 Gets the number of segments available to read. More...
 
virtual ErrCode INTERFACE_FUNC setOnDataAvailable (IProcedure *callback)=0
 Sets the specified callback function to be called when there is available data in the reader. Pass nullptr to unset the callback. The callback should take no arguments. More...
 
virtual ErrCode INTERFACE_FUNC getEmpty (Bool *empty)=0
 Checks if there is data to read. More...
 
- Public Member Functions inherited from IBaseObject
virtual ErrCode INTERFACE_FUNC borrowInterface (const IntfID &intfID, void **obj) const =0
 Returns another interface which is supported by the object without incrementing the reference count. More...
 
virtual ErrCode INTERFACE_FUNC dispose ()=0
 Disposes all references held by the object. More...
 
virtual ErrCode INTERFACE_FUNC getHashCode (SizeT *hashCode)=0
 Returns hash code of the object. More...
 
virtual ErrCode INTERFACE_FUNC equals (IBaseObject *other, Bool *equal) const =0
 Compares object to another object for equality. More...
 
virtual ErrCode INTERFACE_FUNC toString (CharPtr *str)=0
 Returns a string representation of the object. More...
 
- Public Member Functions inherited from IUnknown
virtual ErrCode INTERFACE_FUNC queryInterface (const IntfID &intfID, void **obj)=0
 Returns another interface which is supported by the object and increments the reference count. More...
 
virtual int INTERFACE_FUNC addRef ()=0
 Increments the reference count for an interface on an object. More...
 
virtual int INTERFACE_FUNC releaseRef ()=0
 Decrements the reference count for an interface on an object. More...
 

Member Function Documentation

◆ getCommonSampleRate()

virtual ErrCode INTERFACE_FUNC getCommonSampleRate ( Int *  commonSampleRate)
pure virtual

Gets the common sample rate in case input signal have different rates. The value of common sample rate is such that sample rate of any individual signal can be represented as commonSampleRate / Div, where Div is an integer. Unless the required common sample rate is specified in the MultiReader constructor, common sample rate is lowest common multiple of individual signal's sample rates. The number of samples to be read is specified in common sample rate.

Parameters
commonSampleRateThe domain point at which the reader managed to synchronize all the signals.

◆ getIsSynchronized()

virtual ErrCode INTERFACE_FUNC getIsSynchronized ( Bool *  isSynchronized)
pure virtual

Gets the synchronization status of the reader.

Parameters
isSynchronizedTrue if reader is synchronized, False otherwise.

Reader will try to synchronize the data from the signals when getAvailableCount or any of the read methods is called.

◆ getOffset()

virtual ErrCode INTERFACE_FUNC getOffset ( void *  domainStart)
pure virtual

Gets the domain value (offset) from the aligned origin at the point the reader starts to provide synchronized samples.

Parameters
domainStartThe domain point at which the reader managed to synchronize all the signals.
Returns
OPENDAQ_SUCCESS if the reader is synchronized, OPENDAQ_IGNORED if the reader is not synchronized.

◆ getOrigin()

virtual ErrCode INTERFACE_FUNC getOrigin ( IString **  origin)
pure virtual

Gets the origin the reader aligned all the signals to. This is usually the earliest (lowest value) from all the signals.

Parameters
originThe origin all signals are aligned to.

◆ getTickResolution()

virtual ErrCode INTERFACE_FUNC getTickResolution ( IRatio **  resolution)
pure virtual

Gets the resolution the reader aligned all the signals to. This is the highest resolution (lowest value) of all the signals to not loose the precision.

Parameters
resolutionThe aligned resolution used for all read signals.

◆ read()

virtual ErrCode INTERFACE_FUNC read ( void *  samples,
SizeT *  count,
SizeT  timeoutMs = 0,
IMultiReaderStatus **  status = nullptr 
)
pure virtual

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

Parameters
[in]samplesThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count amount of samples. This should be a jagged array (array of pointers to arrays) where the size is equal to the Signal count and each Signal buffer is at least count size long. E.g: reading the next 5 samples of 3 signals samples | ˇ 0 1 2 3 4 5 <– count [0] = [0, 0, 0, 0, 0, 0] [1] = [0, 0, 0, 0, 0, 0] [2] = [0, 0, 0, 0, 0, 0]
[in,out]countThe maximum amount of samples to be read expressed in commonSampleRate. If the count is less than available the parameter value is set to the actual amount and only the available samples are returned. The rest of the buffer is not modified or cleared. In case of different sample rates, the number of read samples may be different for each individual signal.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of samples before returning.
[out]statusRepresents the status of the reader.

◆ readWithDomain()

virtual ErrCode INTERFACE_FUNC readWithDomain ( void *  samples,
void *  domain,
SizeT *  count,
SizeT  timeoutMs = 0,
IMultiReaderStatus **  status = nullptr 
)
pure virtual

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

Parameters
[in]samplesThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count amount of samples. This should be a jagged array (array of pointers to arrays) where the size is equal to the Signal count and each Signal buffer is at least count size long. E.g: reading the next 5 samples of 3 signals samples | ˇ 0 1 2 3 4 5 <– count [0] = [0, 0, 0, 0, 0, 0] [1] = [0, 0, 0, 0, 0, 0] [2] = [0, 0, 0, 0, 0, 0]
[in]domainThe buffer that the domain values will be copied to. The buffer must be a contiguous memory big enough to receive count amount of clock-stamps. This should be a jagged array (array of pointers to arrays) where the size is equal to the Signal count and each Signal buffer is at least count size long. E.g: reading the next 5 samples of 3 signals domain | ˇ 0 1 2 3 4 5 <– count [0] = [0, 0, 0, 0, 0, 0] [1] = [0, 0, 0, 0, 0, 0] [2] = [0, 0, 0, 0, 0, 0]
[in,out]countThe maximum amount of samples to be read expressed in commonSampleRate. If the count is less than available the parameter value is set to the actual amount and only the available samples are returned. The rest of the buffer is not modified or cleared. In case of different sample rates, the number of read samples may be different for each individual signal.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of samples before returning.
[out]statusRepresents the status of the reader.

◆ setActive()

virtual ErrCode INTERFACE_FUNC setActive ( Bool  isActive)
pure virtual

Sets active or inactive MultiReader state. In inactive state MultiReader will receive only event packets.

Parameters
isActiveSet true for the active state.

◆ skipSamples()

virtual ErrCode INTERFACE_FUNC skipSamples ( SizeT *  count,
IMultiReaderStatus **  status 
)
pure virtual

Skips the specified amount of samples.

Parameters
[in,out]countThe maximum amount of samples to be skipped. If the count is less than available the parameter value is set to the actual amount and only the available samples are skipped. The rest of the buffer is not modified or cleared.
[out]statusRepresents the status of the reader.