Class DdsKinematics2DBuffer

Inheritance Relationships

Base Type

Class Documentation

class DdsKinematics2DBuffer : public DdsBuffer

Buffer class for Kinematics2D or BatchKinematics2D.

This class subscribes to a DDS topic and makes sure the buffers are updated with incoming data.

When updating a QAbstractSeries with DdsBuffer::updateSeries() in QML scripts, the following mapping from DDS member variables to qml_enums::DimId enums are used.

QML enum | Variable

FKIN.T

time

FKIN.PosX

position.x

FKIN.PosY

position.y

FKIN.Speed

speed

FKIN.Course

course

aBuffer.updateSeries(someSeries, FKIN.T, FKIN.Course)

Public Functions

explicit DdsKinematics2DBuffer(QObject *parent = nullptr)

Constructor.

The initialization of DDS instances are deferred to an init() function, but it initializes the data buffers.

Parameters

parent[in] QObject pointer.

virtual ~DdsKinematics2DBuffer()

Destructor.

QPointF rangePosX() const

Property accessor for position x variable range.

QPointF rangePosY() const

Property accessor for position y variable range.

QPointF rangeCourse() const

Property accessor for course variable range.

QPointF rangeSpeed() const

Property accessor for speed variable range.

void init(QtToDds *dds, const QString &topic, const QString &id, int buffer_size, bool use_batch, bool with_listener = true)

Initializes DDS reader and connects Qt signals and slots.

Note

An instance of this class can only be buffer for a single DDS topic, so either type Kinematics2D or BatchKinematics2D.

Parameters
  • dds[in] Pointer to QtToDds instance.

  • topic[in] Name of DDS topic for which to subscribe.

  • id[in] Key identifier for the topic instance.

  • buffer_size[in] Number of data points to store in the circular buffer.

  • use_batch[in] If true, subscribe to BatchIdVec1d, otherwise IdVec1d.

  • with_listener[in] Use DdsReaderListener callback to trigger eventHeard() signal.

Public Slots

virtual void updateBuffers()

Adds samples to the appropriate buffer.

Each data member of the DDS data structure is separated into an appropriate buffer. It picks the last sample and emits newData().

Signals

void rangeChanged(QPointF range, qml_enums::DimId dim)

Triggered when the range has changed.

See class documentation for supported DimId enums.

Parameters
  • range[out] New range for the dimension.

  • dim[out] The dimension in question.

void eventHeard()

DdsReaderListener calls this signal when there is data available on the subscribed topic.

If init() is called with_listener=true, eventHeard() will be connected to the slot updateBuffers().

void newData()

Signal whenever new data is added to the buffers.

Properties

QPointF rangePosX

Data range of variable x.

QPointF rangePosY

Data range of variable y.

QPointF rangeCourse

Data range of variable course.

QPointF rangeSpeed

Data range of variable speed.

Private Members

std::unique_ptr<sinspekto::Reader<fkin::Kinematics2D>> m_reader

The DDS reader wrapper class.

std::unique_ptr<sinspekto::Reader<fkin::BatchKinematics2D>> m_batchReader

The DDS reader wrapper class.

QString m_id

Key identifier for topic instance.