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/QDateTime>
4#include <QtCore/QLoggingCategory>
5#include <QtCore/QObject>
6#include <QtCore/QVariantList>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9Q_DECLARE_LOGGING_CATEGORY(MAVLinkChartControllerLog)
10
12class QAbstractSeries;
14class QTimer;
15
16class MAVLinkChartController : public QObject
17{
18 Q_OBJECT
19 QML_ELEMENT
20 Q_MOC_INCLUDE("MAVLinkInspectorController.h")
21 Q_MOC_INCLUDE("MAVLinkMessageField.h")
22 Q_MOC_INCLUDE("QtCharts/qabstractseries.h")
23
24 Q_PROPERTY(MAVLinkInspectorController* inspectorController READ inspectorController WRITE setInspectorController REQUIRED)
25 Q_PROPERTY(int chartIndex MEMBER _chartIndex REQUIRED)
26 Q_PROPERTY(QVariantList chartFields READ chartFields NOTIFY chartFieldsChanged)
27 Q_PROPERTY(QDateTime rangeXMin READ rangeXMin NOTIFY rangeXMinChanged)
28 Q_PROPERTY(QDateTime rangeXMax READ rangeXMax NOTIFY rangeXMaxChanged)
29 Q_PROPERTY(qreal rangeYMin READ rangeYMin NOTIFY rangeYMinChanged)
30 Q_PROPERTY(qreal rangeYMax READ rangeYMax NOTIFY rangeYMaxChanged)
31 Q_PROPERTY(quint32 rangeYIndex READ rangeYIndex WRITE setRangeYIndex NOTIFY rangeYIndexChanged)
32 Q_PROPERTY(quint32 rangeXIndex READ rangeXIndex WRITE setRangeXIndex NOTIFY rangeXIndexChanged)
33
34
35public:
36 explicit MAVLinkChartController(QObject *parent = nullptr);
38
39 Q_INVOKABLE void addSeries(QGCMAVLinkMessageField *field, QAbstractSeries *series);
40 Q_INVOKABLE void delSeries(QGCMAVLinkMessageField *field);
41
42 void setInspectorController(MAVLinkInspectorController *inspectorController);
43 MAVLinkInspectorController *inspectorController() const { return _inspectorController; }
44 QVariantList chartFields() const { return _chartFields; }
45 QDateTime rangeXMin() const { return _rangeXMin; }
46 QDateTime rangeXMax() const { return _rangeXMax; }
47 qreal rangeYMin() const { return _rangeYMin; }
48 qreal rangeYMax() const { return _rangeYMax; }
49 quint32 rangeXIndex() const { return _rangeXIndex; }
50 quint32 rangeYIndex() const { return _rangeYIndex; }
51 int chartIndex() const { return _chartIndex; }
52
53 void setRangeXIndex(quint32 index);
54 void setRangeYIndex(quint32 index);
55 void updateXRange();
56 void updateYRange();
57
58signals:
66
67private slots:
68 void _refreshSeries();
69
70private:
71 int _chartIndex = 0;
72 MAVLinkInspectorController *_inspectorController = nullptr;
73 QTimer *_updateSeriesTimer = nullptr;
74
75 QDateTime _rangeXMin;
76 QDateTime _rangeXMax;
77 qreal _rangeYMin = 0;
78 qreal _rangeYMax = 1;
79 quint32 _rangeXIndex = 0;
80 quint32 _rangeYIndex = 0;
81 QVariantList _chartFields;
82
83 static constexpr int kUpdateFrequency = 1000 / 15;
84};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
MAVLink message inspector controller (provides the logic for UI display)