QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MAVLinkChartController.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QVariantList>
5#include <QtQmlIntegration/QtQmlIntegration>
6
8class QAbstractSeries;
10class QTimer;
11
12class MAVLinkChartController : public QObject
13{
14 Q_OBJECT
15 QML_ELEMENT
16 Q_MOC_INCLUDE("MAVLinkInspectorController.h")
17 Q_MOC_INCLUDE("MAVLinkMessageField.h")
18 Q_MOC_INCLUDE("QtGraphs/qabstractseries.h")
19
21 Q_PROPERTY(int chartIndex MEMBER _chartIndex REQUIRED)
22 Q_PROPERTY(QVariantList chartFields READ chartFields NOTIFY chartFieldsChanged)
23 Q_PROPERTY(qreal rangeXMin READ rangeXMin NOTIFY rangeXMinChanged)
24 Q_PROPERTY(qreal rangeXMax READ rangeXMax NOTIFY rangeXMaxChanged)
25 Q_PROPERTY(qreal rangeYMin READ rangeYMin NOTIFY rangeYMinChanged)
26 Q_PROPERTY(qreal rangeYMax READ rangeYMax NOTIFY rangeYMaxChanged)
27 Q_PROPERTY(quint32 rangeYIndex READ rangeYIndex WRITE setRangeYIndex NOTIFY rangeYIndexChanged)
28 Q_PROPERTY(quint32 rangeXIndex READ rangeXIndex WRITE setRangeXIndex NOTIFY rangeXIndexChanged)
29 Q_PROPERTY(qreal rangeXMs READ rangeXMs NOTIFY rangeXIndexChanged)
31
32public:
33 explicit MAVLinkChartController(QObject *parent = nullptr);
35
36 Q_INVOKABLE void addSeries(QGCMAVLinkMessageField *field, QAbstractSeries *series);
37 Q_INVOKABLE void delSeries(QGCMAVLinkMessageField *field);
38
40 MAVLinkInspectorController *inspectorController() const { return _inspectorController; }
41 QVariantList chartFields() const { return _chartFields; }
42 qreal rangeXMin() const { return _rangeXMin; }
43 qreal rangeXMax() const { return _rangeXMax; }
44 qreal rangeYMin() const { return _rangeYMin; }
45 qreal rangeYMax() const { return _rangeYMax; }
46 quint32 rangeXIndex() const { return _rangeXIndex; }
47 qreal rangeXMs() const;
48 quint32 rangeYIndex() const { return _rangeYIndex; }
49 int chartIndex() const { return _chartIndex; }
50 int plotPixelWidth() const { return _plotPixelWidth; }
51
52 void setRangeXIndex(quint32 index);
53 void setRangeYIndex(quint32 index);
54 void setPlotPixelWidth(int width);
55 void updateXRange();
56 void updateYRange();
57
58signals:
67
68private slots:
69 void _refreshSeries();
70
71private:
72 void _resetFieldBucketing();
73 int _chartIndex = 0;
74 MAVLinkInspectorController *_inspectorController = nullptr;
75 QTimer *_updateSeriesTimer = nullptr;
76
77 qreal _rangeXMin = 0;
78 qreal _rangeXMax = 0;
79 qreal _rangeYMin = 0;
80 qreal _rangeYMax = 1;
81 quint32 _rangeXIndex = 0;
82 quint32 _rangeYIndex = 0;
83 int _plotPixelWidth = 0;
84 QVariantList _chartFields;
85
86 static constexpr int kUpdateFrequency = 1000 / 15;
87};
Q_INVOKABLE void delSeries(QGCMAVLinkMessageField *field)
void setRangeXIndex(quint32 index)
void setRangeYIndex(quint32 index)
MAVLinkInspectorController * inspectorController() const
Q_INVOKABLE void addSeries(QGCMAVLinkMessageField *field, QAbstractSeries *series)
void setInspectorController(MAVLinkInspectorController *inspectorController)
QVariantList chartFields() const
MAVLink message inspector controller (provides the logic for UI display)