QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
OnboardLogEntry.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/QFile>
7#include <QtCore/QObject>
8#include <QtCore/QString>
9#include <QtQmlIntegration/QtQmlIntegration>
10
12
14{
15 explicit OnboardLogDownloadData(QGCOnboardLogEntry * const logEntry);
17
18 void advanceChunk();
19
21 uint32_t chunkBins() const;
22
24 uint32_t numChunks() const;
25
27 bool chunkEquals(const bool val) const;
28
29 uint ID = 0;
30 QGCOnboardLogEntry *const entry = nullptr;
31
32 QBitArray chunk_table;
33 uint32_t current_chunk = 0;
34 QFile file;
35 QString filename;
36 uint written = 0;
38 size_t rate_bytes = 0;
39 qreal rate_avg = 0.;
40 QElapsedTimer elapsed;
41
42 static constexpr uint32_t kTableBins = 2048; // 2048 packets = ~180 KB chunks (4x larger for better throughput)
43 static const uint32_t kChunkSize; // kTableBins * MAVLINK_MSG_LOG_DATA_FIELD_DATA_LEN (defined in .cc)
44};
45
46/*===========================================================================*/
47
48class QGCOnboardLogEntry : public QObject
49{
50 Q_OBJECT
51 // QML_ELEMENT
52
53 Q_PROPERTY(uint id READ id NOTIFY idChanged)
54 Q_PROPERTY(QDateTime time READ time NOTIFY timeChanged)
55 Q_PROPERTY(uint size READ size NOTIFY sizeChanged)
56 Q_PROPERTY(QString sizeStr READ sizeStr NOTIFY sizeChanged)
57 Q_PROPERTY(bool received READ received NOTIFY receivedChanged)
58 Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged)
59 Q_PROPERTY(QString status READ status NOTIFY statusChanged)
60
61public:
62 explicit QGCOnboardLogEntry(uint logId, const QDateTime &dateTime = QDateTime(), uint logSize = 0, bool received = false, QObject *parent = nullptr);
64
65 uint id() const { return _logID; }
66 uint size() const { return _logSize; }
67 QString sizeStr() const;
68 QDateTime time() const { return _logTimeUTC; }
69 bool received() const { return _received; }
70 bool selected() const { return _selected; }
71 QString status() const { return _status; }
72
73 void setId(uint id) { if (id != _logID) { _logID = id; emit idChanged(); } }
74 void setSize(uint size) { if (size != _logSize) { _logSize = size; emit sizeChanged(); } }
75 void setTime(const QDateTime &date) { if (date != _logTimeUTC) {_logTimeUTC = date; emit timeChanged(); } }
76 void setReceived(bool rec) { if (rec != _received) { _received = rec; emit receivedChanged(); } }
77 void setSelected(bool sel) { if (sel != _selected) { _selected = sel; emit selectedChanged(); } }
78 void setStatus(const QString &stat) { if (stat != _status) { _status = stat; emit statusChanged(); } }
79
80signals:
81 void idChanged();
87
88private:
89 uint _logID = 0;
90 uint _logSize = 0;
91 QDateTime _logTimeUTC;
92 bool _received = false;
93 bool _selected = false;
94 QString _status = QStringLiteral("Pending");
95};
static const uint32_t kChunkSize
static constexpr uint32_t kTableBins
QGCOnboardLogEntry *const entry
uint32_t numChunks() const
The number of kChunkSize chunks in the file.
bool chunkEquals(const bool val) const
True if all bins in the chunk have been set to val.
uint32_t chunkBins() const
The number of MAVLINK_MSG_LOG_DATA_FIELD_DATA_LEN bins in the current chunk.