12#include <QtQml/QQmlEngine>
18 , timeScale(timeScale_)
25MAVLinkInspectorController::Range_st::Range_st(
const QString &label_, qreal range_)
36 , _updateFrequencyTimer(new QTimer(this))
48 (void) connect(_updateFrequencyTimer, &QTimer::timeout,
this, &MAVLinkInspectorController::_refreshFrequency);
50 _updateFrequencyTimer->setInterval(1000);
51 _updateFrequencyTimer->setSingleShot(
false);
52 _updateFrequencyTimer->start();
54 _timeScaleSt.append(
new TimeScale_st(tr(
"5 Sec"), 5 * 1000));
55 _timeScaleSt.append(
new TimeScale_st(tr(
"10 Sec"), 10 * 1000));
56 _timeScaleSt.append(
new TimeScale_st(tr(
"30 Sec"), 30 * 1000));
57 _timeScaleSt.append(
new TimeScale_st(tr(
"60 Sec"), 60 * 1000));
60 _rangeSt.append(
new Range_st(tr(
"Auto"), 0));
61 _rangeSt.append(
new Range_st(tr(
"10,000"), 10000));
62 _rangeSt.append(
new Range_st(tr(
"1,000"), 1000));
63 _rangeSt.append(
new Range_st(tr(
"100"), 100));
64 _rangeSt.append(
new Range_st(tr(
"10"), 10));
65 _rangeSt.append(
new Range_st(tr(
"1"), 1));
66 _rangeSt.append(
new Range_st(tr(
"0.1"), 0.1));
67 _rangeSt.append(
new Range_st(tr(
"0.01"), 0.01));
68 _rangeSt.append(
new Range_st(tr(
"0.001"), 0.001));
69 _rangeSt.append(
new Range_st(tr(
"0.0001"), 0.0001));
75 qDeleteAll(_timeScaleSt);
84 if (_timeScales.isEmpty()) {
85 for (
const TimeScale_st *timeScale : _timeScaleSt) {
86 _timeScales << timeScale->label;
95 if (_rangeList.isEmpty()) {
96 for (
const Range_st *range : _rangeSt) {
97 _rangeList << range->label;
104void MAVLinkInspectorController::_setActiveVehicle(
Vehicle *vehicle)
109 _activeSystem = system;
111 _activeSystem =
nullptr;
114 _activeSystem =
nullptr;
122 for (
int i = 0; i < _systems->
count(); i++) {
124 if (system && (system->id() ==
id)) {
132void MAVLinkInspectorController::_refreshFrequency()
134 for (
int i = 0; i < _systems->
count(); i++) {
140 for (
int messageIndex = 0; messageIndex < system->messages()->count(); messageIndex++) {
141 QGCMAVLinkMessage *
const msg = qobject_cast<QGCMAVLinkMessage*>(system->messages()->
get(messageIndex));
149void MAVLinkInspectorController::_vehicleAdded(
Vehicle *vehicle)
158 _systemNames.append(tr(
"System %1").arg(vehicle->
id()));
161 for (
int i = 0; i < sys->messages()->count(); i++) {
163 if ((msg->compId() == compid) && (msg->id() == msgId)) {
164 msg->setTargetRateHz(rate);
174void MAVLinkInspectorController::_vehicleRemoved(
const Vehicle *vehicle)
181 system->deleteLater();
184 const QString systemName = tr(
"System %1").arg(vehicle->
id());
185 (void) _systemNames.removeOne(systemName);
200 _systemNames.append(tr(
"System %1").arg(message.sysid));
203 if (!_activeSystem) {
204 _activeSystem = system;
208 msg = system->findMessage(message.msgid, message.compid);
215 msg->update(message);
222 if (system != _activeSystem) {
223 _activeSystem = system;
230 if (!_activeSystem) {
235 if (!multiVehicleManager) {
239 const uint8_t sysId = _selectedSystemID();
244 Vehicle *
const vehicle = multiVehicleManager->getVehicleById(sysId);
254 const uint8_t compId = _selectedComponentID();
263uint8_t MAVLinkInspectorController::_selectedSystemID()
const
265 return (_activeSystem ? _activeSystem->id() : 0);
268uint8_t MAVLinkInspectorController::_selectedComponentID()
const
270 const QGCMAVLinkMessage *
const msg = _activeSystem ? _activeSystem->selectedMsg() :
nullptr;
271 return (msg ? msg->compId() : 0);
struct __mavlink_message mavlink_message_t
#define QGC_LOGGING_CATEGORY(name, categoryStr)
The link interface defines the interface for all links used to communicate with the ground station ap...
MAVLink message inspector controller (provides the logic for UI display)
void setActiveSystem(int systemId)
void activeSystemChanged()
~MAVLinkInspectorController()
void setMessageInterval(int32_t rate) const
MAVLinkInspectorController(QObject *parent=nullptr)
void messageReceived(LinkInterface *link, const mavlink_message_t &message)
Message received and directly copied via signal.
static MAVLinkProtocol * instance()
void vehicleAdded(Vehicle *vehicle)
void vehicleRemoved(Vehicle *vehicle)
void activeVehicleChanged(Vehicle *activeVehicle)
void append(QObject *object)
Caller maintains responsibility for object ownership and deletion.
QObject * removeOne(const QObject *object) override final
int count() const override final
void clearAndDeleteContents() override final
Clears the list and calls deleteLater on each entry.
void setMessageRate(uint8_t compId, uint16_t msgId, int32_t rate)
void mavlinkMsgIntervalsChanged(uint8_t compid, uint16_t msgId, int32_t rate)