QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
APMDataFlashLogParser.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QHash>
5#include <QtCore/QPointF>
6#include <QtCore/QString>
7#include <QtCore/QStringList>
8#include <QtCore/QVariant>
9#include <QtCore/QVariantList>
10#include <QtCore/QVector>
11#include <QtCore/QtGlobal>
12#include <QtQmlIntegration/QtQmlIntegration>
13
14class APMDataFlashLogParser : public QObject
15{
16 Q_OBJECT
17 QML_ELEMENT
18
19 Q_PROPERTY(bool parsed READ parsed NOTIFY parsedChanged)
20 Q_PROPERTY(QString parseError READ parseError NOTIFY parseErrorChanged)
21 Q_PROPERTY(QStringList availableFields READ availableFields NOTIFY availableFieldsChanged)
22 Q_PROPERTY(QVariantList parameters READ parameters NOTIFY parametersChanged)
23 Q_PROPERTY(QVariantList events READ events NOTIFY eventsChanged)
24 Q_PROPERTY(QVariantList messages READ messages NOTIFY messagesChanged)
25 Q_PROPERTY(QStringList plottableFields READ plottableFields NOTIFY plottableFieldsChanged)
26 Q_PROPERTY(QVariantList modeSegments READ modeSegments NOTIFY modeSegmentsChanged)
27 Q_PROPERTY(QString detectedVehicleType READ detectedVehicleType NOTIFY detectedVehicleTypeChanged)
28 Q_PROPERTY(double minTimestamp READ minTimestamp NOTIFY timeRangeChanged)
29 Q_PROPERTY(double maxTimestamp READ maxTimestamp NOTIFY timeRangeChanged)
30 Q_PROPERTY(int sampleCount READ sampleCount NOTIFY sampleCountChanged)
31
32public:
33 explicit APMDataFlashLogParser(QObject *parent = nullptr);
35
36 bool parsed() const { return _parsed; }
37 QString parseError() const { return _parseError; }
38 QStringList availableFields() const { return _availableFields; }
39 QVariantList parameters() const { return _parameters; }
40 QVariantList events() const { return _events; }
41 QVariantList messages() const { return _messages; }
42 QStringList plottableFields() const { return _plottableFields; }
43 QVariantList modeSegments() const { return _modeSegments; }
44 QString detectedVehicleType() const { return _detectedVehicleType; }
45 double minTimestamp() const { return _minTimestamp; }
46 double maxTimestamp() const { return _maxTimestamp; }
47 int sampleCount() const { return _sampleCount; }
48
49 Q_INVOKABLE bool parseFile(const QString &filePath);
50 Q_INVOKABLE void parseFileAsync(const QString &filePath);
51 Q_INVOKABLE void clear();
52 Q_INVOKABLE QVariantList fieldSamples(const QString &fieldName) const;
53 Q_INVOKABLE double fieldValueAt(const QString &fieldName, double timestampSeconds) const;
54 Q_INVOKABLE QString modeAt(double timestampSeconds) const;
55 Q_INVOKABLE QVariantList eventsNear(double timestampSeconds, double thresholdSeconds) const;
56
57signals:
69 void parseFileFinished(const QString &filePath, bool ok, const QString &errorMessage);
70
71private:
72 void _setParseError(const QString &error);
73
74 bool _parsed = false;
75 QString _parseError;
76 QStringList _availableFields;
77 QStringList _plottableFields;
78 QVariantList _parameters;
79 QVariantList _events;
80 QVariantList _messages;
81 QVariantList _modeSegments;
82 QString _detectedVehicleType;
83 QHash<QString, QVector<QPointF>> _fieldSamples;
84 double _minTimestamp = -1.0;
85 double _maxTimestamp = -1.0;
86 int _sampleCount = 0;
87 quint64 _parseRequestId = 0;
88};
Error error
void detectedVehicleTypeChanged()
void parseFileFinished(const QString &filePath, bool ok, const QString &errorMessage)