MultiChannelData

General description

Data packet of the MultiChannelData type contains a generic nsamples-by-nchannels array of data.

Payload details

name

type

description

timestamp

uint64

signal

vector of any datatype

API

template<typename T>
class Data : public Base::Data

Public Types

typedef stride_iter<T*> channel_iterator
typedef T *sample_iterator

Public Functions

inline Data()
inline Data(size_t nchannels, size_t nsamples, double sample_rate)
inline void ClearData() override
inline void Initialize(const Parameters &parameters)
inline void Initialize(size_t nchannels, size_t nsamples, double sample_rate)
inline size_t nchannels() const
inline size_t nsamples() const
inline double sample_rate() const
inline uint64_t sample_timestamp(size_t sample = 0) const
inline std::vector<uint64_t> &sample_timestamps()
inline void set_sample_timestamp(size_t sample, uint64_t t)
inline void set_sample_timestamps(std::vector<uint64_t> &t)
inline void set_data_channel(size_t channel, std::vector<T> &data)
inline void set_data_sample(size_t sample, std::vector<T> &data)
inline void set_data_sample(size_t sample, size_t channel, T data)
inline std::vector<T> &data()
inline const T &data_sample(size_t sample, size_t channel = 0) const
inline T &operator()(size_t index)
inline const T &operator()(size_t index) const
inline T &operator()(size_t sample, size_t channel = 0)
inline const T &operator()(size_t sample, size_t channel = 0) const
inline T *begin_sample(size_t sample)
inline T *end_sample(size_t sample)
inline const T *begin_sample(size_t sample) const
inline const T *end_sample(size_t sample) const
inline stride_iter<T*> begin_channel(size_t channel)
inline stride_iter<T*> end_channel(size_t channel)
inline void SerializeBinary(std::ostream &stream, Serialization::Format format = Serialization::Format::FULL) const override
inline void SerializeYAML(YAML::Node &node, Serialization::Format format = Serialization::Format::FULL) const override
inline void SerializeFlatBuffer(flexbuffers::Builder &flex_builder) override
inline void YAMLDescription(YAML::Node &node, Serialization::Format format = Serialization::Format::FULL) const override
inline T sum_abs_sample(size_t sample) const
inline T sum_sample(size_t sample) const
inline T mean_abs_sample(size_t sample) const
inline T mean_sample(size_t sample) const

Parameters

name

type

description

validation

nsample

unsigned int

0

Number of samples cannot be zero and needs to be in range

nchannels

unsigned int

0

Number of channels cannot be zero and needs to be in range

sample_rate

double

1.0

Sample rate needs to be larger than 0

struct Parameters : public Base::Parameters

Public Functions

inline Parameters(size_t nchan = 0, size_t nsamp = 0, double rate = 1.0)

Public Members

size_t nchannels
size_t nsamples
double sample_rate

Capabilities

name

type

default

description

channel range

ChannelRange or Range<unsigned int>

(none)

the number of channels that is supported

sample range

SampleRange or Range<size_t>

[1, (maximum of the datatype can hold)]

the number of samples that is supported

class Capabilities : public Base::Capabilities

Public Functions

inline Capabilities(ChannelRange channel_range, SampleRange sample_range = SampleRange(1, std::numeric_limits<uint32_t>::max()))
inline ChannelRange channel_range() const
inline SampleRange sample_range() const
inline virtual void VerifyCompatibility(const Capabilities &capabilities) const
inline virtual void Validate(const Parameters &parameters) const

Binary Serialization

For serialization formats FULL and COMPACT, The timestamps and the data are serialized.

YAML Serialization

For serialization formats FULL and COMPACT,

the following YAML is emitted:

timestamps: [timestamps (unsigned int)] signal: [data]