QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCAbstractState.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtStateMachine/QState>
4#include <QtCore/QString>
5
6#include <functional>
7
9class Vehicle;
10
27class QGCAbstractState : public QState
28{
29 Q_OBJECT
30 Q_DISABLE_COPY(QGCAbstractState)
31
32public:
33 using EntryCallback = std::function<void()>;
34 using ExitCallback = std::function<void()>;
35 using EventHandler = std::function<bool(QEvent*)>;
36
37 QGCAbstractState(const QString& stateName, QState* parent);
38
39 QGCStateMachine* machine() const;
40 Vehicle* vehicle() const;
41 QString stateName() const;
42
45 class StateContext* context() const;
46
47 // -------------------------------------------------------------------------
48 // Entry/Exit Callbacks
49 // -------------------------------------------------------------------------
50
52 void setOnEntry(EntryCallback callback) { _entryCallback = std::move(callback); }
53
55 void setOnExit(ExitCallback callback) { _exitCallback = std::move(callback); }
56
59
60 // -------------------------------------------------------------------------
61 // Event Handling
62 // -------------------------------------------------------------------------
63
65 void setEventHandler(EventHandler handler) { _eventHandler = std::move(handler); }
66
67signals:
68 void advance();
69 void error();
70
71protected:
73 virtual void onEnter() {}
74
76 virtual void onLeave() {}
77
78 // QState overrides
79 void onEntry(QEvent* event) override;
80 void onExit(QEvent* event) override;
81 bool event(QEvent* event) override;
82
83private:
84 EntryCallback _entryCallback;
85 ExitCallback _exitCallback;
86 EventHandler _eventHandler;
87};
std::function< void()> EntryCallback
void onExit(QEvent *event) override
void setEventHandler(EventHandler handler)
Set a custom event handler for this state.
void setCallbacks(EntryCallback onEntry, ExitCallback onExit=nullptr)
Set both entry and exit callbacks.
void onEntry(QEvent *event) override
class StateContext * context() const
void setOnEntry(EntryCallback callback)
Set a callback to be invoked when the state is entered.
QString stateName() const
bool event(QEvent *event) override
virtual void onEnter()
Override to perform actions on state entry.
virtual void onLeave()
Override to perform actions on state exit.
std::function< void()> ExitCallback
QGCStateMachine * machine() const
void setOnExit(ExitCallback callback)
Set a callback to be invoked when the state is exited.
Vehicle * vehicle() const
QGroundControl specific state machine with enhanced error handling.