QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
NamedEventTransition.cc
Go to the documentation of this file.
2#include "QGCState.h"
3
4NamedEventTransition::NamedEventTransition(const QString& eventName, QAbstractState* target, QState* sourceState)
5 : QGCAbstractTransition(target, sourceState)
6 , _eventName(eventName)
7{
8}
9
10NamedEventTransition::NamedEventTransition(const QString& eventName, QAbstractState* target, NamedGuard guard, QState* sourceState)
11 : QGCAbstractTransition(target, sourceState)
12 , _eventName(eventName)
13 , _namedGuard(std::move(guard))
14{
15}
16
18{
19 // Only handle QGCStateMachineEvent events
20 if (event->type() != QGCStateMachineEvent::EventType) {
21 return false;
22 }
23
24 auto* smEvent = static_cast<QGCStateMachineEvent*>(event);
25
26 if (smEvent->name() != _eventName) {
27 return false;
28 }
29
30 if (_namedGuard && !_namedGuard(smEvent)) {
31 qCDebug(QGCStateMachineLog) << "NamedEventTransition" << _eventName << "blocked by guard";
32 return false;
33 }
34
35 qCDebug(QGCStateMachineLog) << "NamedEventTransition matched event:" << _eventName;
36 return true;
37}
NamedEventTransition(const QString &eventName, QAbstractState *target, QState *sourceState=nullptr)
std::function< bool(const QGCStateMachineEvent *)> NamedGuard
bool eventTest(QEvent *event) override
Base class for custom transitions that need access to QGCStateMachine and Vehicle.
Custom event for QGCStateMachine delayed/scheduled events.
static const QEvent::Type EventType