QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LogEntry.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QBitArray>
4#include <QtCore/QDateTime>
5#include <QtCore/QElapsedTimer>
6#include <QtCore/QLoggingCategory>
7#include <QtCore/QObject>
8#include <QtCore/QString>
9#include <QtQmlIntegration/QtQmlIntegration>
10
11#include "MAVLinkLib.h"
12
13class QGCLogEntry;
14
16
18{
19 explicit LogDownloadData(QGCLogEntry * const logEntry);
21
22 void advanceChunk();
23
25 uint32_t chunkBins() const;
26
28 uint32_t numChunks() const;
29
31 bool chunkEquals(const bool val) const;
32
33 uint ID = 0;
34 QGCLogEntry *const entry = nullptr;
35
36 QBitArray chunk_table;
37 uint32_t current_chunk = 0;
38 QFile file;
39 QString filename;
40 uint written = 0;
41 uint last_status_written = 0;
42 size_t rate_bytes = 0;
43 qreal rate_avg = 0.;
44 QElapsedTimer elapsed;
45
46 static constexpr uint32_t kTableBins = 2048; // 2048 packets = ~180 KB chunks (4x larger for better throughput)
47 static constexpr uint32_t kChunkSize = kTableBins * MAVLINK_MSG_LOG_DATA_FIELD_DATA_LEN;
48};
49
50/*===========================================================================*/
51
52class QGCLogEntry : public QObject
53{
54 Q_OBJECT
55 // QML_ELEMENT
56
57 Q_PROPERTY(uint id READ id NOTIFY idChanged)
58 Q_PROPERTY(QDateTime time READ time NOTIFY timeChanged)
59 Q_PROPERTY(uint size READ size NOTIFY sizeChanged)
60 Q_PROPERTY(QString sizeStr READ sizeStr NOTIFY sizeChanged)
61 Q_PROPERTY(bool received READ received NOTIFY receivedChanged)
62 Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged)
63 Q_PROPERTY(QString status READ status NOTIFY statusChanged)
64
65public:
66 explicit QGCLogEntry(uint logId, const QDateTime &dateTime = QDateTime(), uint logSize = 0, bool received = false, QObject *parent = nullptr);
68
69 uint id() const { return _logID; }
70 uint size() const { return _logSize; }
71 QString sizeStr() const;
72 QDateTime time() const { return _logTimeUTC; }
73 bool received() const { return _received; }
74 bool selected() const { return _selected; }
75 QString status() const { return _status; }
76
77 void setId(uint id) { if (id != _logID) { _logID = id; emit idChanged(); } }
78 void setSize(uint size) { if (size != _logSize) { _logSize = size; emit sizeChanged(); } }
79 void setTime(const QDateTime &date) { if (date != _logTimeUTC) {_logTimeUTC = date; emit timeChanged(); } }
80 void setReceived(bool rec) { if (rec != _received) { _received = rec; emit receivedChanged(); } }
81 void setSelected(bool sel) { if (sel != _selected) { _selected = sel; emit selectedChanged(); } }
82 void setStatus(const QString &stat) { if (stat != _status) { _status = stat; emit statusChanged(); } }
83
84signals:
85 void idChanged();
91
92private:
93 uint _logID = 0;
94 uint _logSize = 0;
95 QDateTime _logTimeUTC;
96 bool _received = false;
97 bool _selected = false;
98 QString _status = QStringLiteral("Pending");
99};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
void statusChanged()
void timeChanged()
void receivedChanged()
void idChanged()
void selectedChanged()
void sizeChanged()
QString filename
Definition LogEntry.h:39
QElapsedTimer elapsed
Definition LogEntry.h:44
QBitArray chunk_table
Definition LogEntry.h:36