QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MAVLinkConsoleController.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QMetaObject>
4#include <QtCore/QObject>
5#include <QtCore/QString>
6#include <QtCore/QStringListModel>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9class QGCPalette;
10class Vehicle;
11
12class MAVLinkConsoleController : public QStringListModel
13{
14 Q_OBJECT
15 QML_ELEMENT
16 Q_MOC_INCLUDE("Vehicle.h")
17 Q_PROPERTY(QString text READ _getText CONSTANT)
18
19 class CommandHistory
20 {
21 public:
22 void append(const QString &command);
23 QString up(const QString &current);
24 QString down(const QString &current);
25
26 private:
27 QList<QString> _history;
28 int _index = 0;
29 static constexpr int kMaxHistoryLength = 100;
30 };
31
32public:
33 explicit MAVLinkConsoleController(QObject *parent = nullptr);
35
36 Q_INVOKABLE void sendCommand(const QString &command);
37 Q_INVOKABLE QString historyUp(const QString &current) { return _history.up(current); }
38 Q_INVOKABLE QString historyDown(const QString &current) { return _history.down(current); }
39
43 Q_INVOKABLE QString handleClipboard(const QString &command_pre);
44
45private slots:
46 void _setActiveVehicle(Vehicle *vehicle);
47 void _receiveData(uint8_t device, uint8_t flags, uint16_t timeout, uint32_t baudrate, const QByteArray &data);
48
49private:
50 bool _processANSItext(QByteArray &line);
51 void _sendSerialData(const QByteArray &data, bool close = false);
52 void _writeLine(int line, const QByteArray &text);
53 QString _transformLineForRichText(const QString &line) const;
54 QString _getText() const;
55
56 QGCPalette *_palette = nullptr;
57 int _cursorHomePos = -1;
58 int _cursorY = 0;
59 int _cursorX = 0;
60 QByteArray _incomingBuffer;
61 QList<QMetaObject::Connection> _connections;
62 CommandHistory _history;
63 Vehicle *_vehicle = nullptr;
64
65 static constexpr int kMaxNumLines = 500;
66};
Q_INVOKABLE QString historyUp(const QString &current)
Q_INVOKABLE void sendCommand(const QString &command)
Q_INVOKABLE QString historyDown(const QString &current)
Q_INVOKABLE QString handleClipboard(const QString &command_pre)
QGCPalette is used in QML ui to expose color properties for the QGC palette.
Definition QGCPalette.h:83