QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LogFileParser.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QHash>
4#include <QtCore/QObject>
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
27class LogFileParser : public QObject
28{
29 Q_OBJECT
30 QML_ELEMENT
31
32 Q_PROPERTY(bool parsed READ parsed NOTIFY parsedChanged)
33 Q_PROPERTY(QString parseError READ parseError NOTIFY parseErrorChanged)
34 Q_PROPERTY(QStringList availableFields READ availableFields NOTIFY availableFieldsChanged)
35 Q_PROPERTY(QVariantList parameters READ parameters NOTIFY parametersChanged)
36 Q_PROPERTY(QVariantList events READ events NOTIFY eventsChanged)
37 Q_PROPERTY(QVariantList messages READ messages NOTIFY messagesChanged)
38 Q_PROPERTY(QStringList plottableFields READ plottableFields NOTIFY plottableFieldsChanged)
39 Q_PROPERTY(QVariantList modeSegments READ modeSegments NOTIFY modeSegmentsChanged)
40 Q_PROPERTY(QVariantList dropouts READ dropouts NOTIFY dropoutsChanged)
41 Q_PROPERTY(QString detectedVehicleType READ detectedVehicleType NOTIFY detectedVehicleTypeChanged)
42 Q_PROPERTY(double minTimestamp READ minTimestamp NOTIFY timeRangeChanged)
43 Q_PROPERTY(double maxTimestamp READ maxTimestamp NOTIFY timeRangeChanged)
44 Q_PROPERTY(int sampleCount READ sampleCount NOTIFY sampleCountChanged)
45
46public:
47 explicit LogFileParser(QObject *parent = nullptr);
49
50 bool parsed() const { return _parsed; }
51 QString parseError() const { return _parseError; }
52 QStringList availableFields() const { return _availableFields; }
53 QVariantList parameters() const { return _parameters; }
54 QVariantList events() const { return _events; }
55 QVariantList messages() const { return _messages; }
56 QStringList plottableFields() const { return _plottableFields; }
57 QVariantList modeSegments() const { return _modeSegments; }
58 QVariantList dropouts() const { return _dropouts; }
59 QString detectedVehicleType() const { return _detectedVehicleType; }
60 double minTimestamp() const { return _minTimestamp; }
61 double maxTimestamp() const { return _maxTimestamp; }
62 int sampleCount() const { return _sampleCount; }
63
64 Q_INVOKABLE bool parseFile(const QString &filePath);
65 Q_INVOKABLE void parseFileAsync(const QString &filePath);
66 Q_INVOKABLE void clear();
67 Q_INVOKABLE QVariantList fieldSamples(const QString &fieldName) const;
68 Q_INVOKABLE double fieldValueAt(const QString &fieldName, double timestampSeconds) const;
69 Q_INVOKABLE QString modeAt(double timestampSeconds) const;
70 Q_INVOKABLE QVariantList eventsNear(double timestampSeconds, double thresholdSeconds) const;
71
72signals:
85 void parseFileFinished(const QString &filePath, bool ok, const QString &errorMessage);
86
87private:
88 void _setParseError(const QString &error);
89 void _applyResult(const struct LogParseResult &result);
90
91 bool _parsed = false;
92 QString _parseError;
93 QStringList _availableFields;
94 QStringList _plottableFields;
95 QVariantList _parameters;
96 QVariantList _events;
97 QVariantList _messages;
98 QVariantList _modeSegments;
99 QVariantList _dropouts;
100 QString _detectedVehicleType;
101 QHash<QString, QVector<QPointF>> _fieldSamples;
102 double _minTimestamp = -1.0;
103 double _maxTimestamp = -1.0;
104 int _sampleCount = 0;
105 quint64 _parseRequestId = 0;
106};
Error error
void parametersChanged()
void timeRangeChanged()
void parseErrorChanged()
void dropoutsChanged()
void detectedVehicleTypeChanged()
void sampleCountChanged()
void plottableFieldsChanged()
void availableFieldsChanged()
void modeSegmentsChanged()
void parsedChanged()
void parseFileFinished(const QString &filePath, bool ok, const QString &errorMessage)
void eventsChanged()
void messagesChanged()