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
28class QGCAbstractState : public QState
29{
30 Q_OBJECT
31 Q_DISABLE_COPY(QGCAbstractState)
32
33public:
34 using EntryCallback = std::function<void()>;
35 using ExitCallback = std::function<void()>;
36 using EventHandler = std::function<bool(QEvent*)>;
37
38 QGCAbstractState(const QString& stateName, QState* parent);
39
40 QGCStateMachine* machine() const;
41 Vehicle* vehicle() const;
42 QString stateName() const;
43
46 class StateContext* context() const;
47
48 // -------------------------------------------------------------------------
49 // Entry/Exit Callbacks
50 // -------------------------------------------------------------------------
51
53 void setOnEntry(EntryCallback callback) { _entryCallback = std::move(callback); }
54
56 void setOnExit(ExitCallback callback) { _exitCallback = std::move(callback); }
57
60
61 // -------------------------------------------------------------------------
62 // Event Handling
63 // -------------------------------------------------------------------------
64
66 void setEventHandler(EventHandler handler) { _eventHandler = std::move(handler); }
67
68signals:
69 void advance();
70 void error();
71
72protected:
74 virtual void onEnter() {}
75
77 virtual void onLeave() {}
78
79 // QState overrides
80 void onEntry(QEvent* event) override;
81 void onExit(QEvent* event) override;
82 bool event(QEvent* event) override;
83
84private:
85 EntryCallback _entryCallback;
86 ExitCallback _exitCallback;
87 EventHandler _eventHandler;
88};
Drives the MAVLink events protocol for a single component.
Lightweight base class for simple states.
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.
Type-safe context for passing data between states in a state machine.