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