QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCAbstractState.cc
Go to the documentation of this file.
1
#include "
QGCAbstractState.h
"
2
#include "
QGCStateMachine.h
"
3
#include "
QGCLoggingCategory.h
"
4
5
QGCAbstractState::QGCAbstractState
(
const
QString& stateName, QState* parent)
6
: QState(QState::ExclusiveStates, parent)
7
{
8
setObjectName(
stateName
);
9
}
10
11
QGCStateMachine
*
QGCAbstractState::machine
()
const
12
{
13
return
qobject_cast<QGCStateMachine*>(QState::machine());
14
}
15
16
Vehicle
*
QGCAbstractState::vehicle
()
const
17
{
18
return
machine
() ?
machine
()->
vehicle
() :
nullptr
;
19
}
20
21
StateContext
*
QGCAbstractState::context
()
const
22
{
23
return
machine
() ? &
machine
()->
context
() :
nullptr
;
24
}
25
26
QString
QGCAbstractState::stateName
()
const
27
{
28
if
(
machine
()) {
29
return
QStringLiteral(
"%1:%2"
).arg(
machine
()->machineName(), objectName());
30
}
else
{
31
return
objectName();
32
}
33
}
34
35
void
QGCAbstractState::setCallbacks
(
EntryCallback
onEntry,
ExitCallback
onExit)
36
{
37
_entryCallback = std::move(
onEntry
);
38
_exitCallback = std::move(
onExit
);
39
}
40
41
void
QGCAbstractState::onEntry
(QEvent* event)
42
{
43
QState::onEntry(
event
);
44
qCDebug(QGCStateMachineLog) <<
"Entered"
<<
stateName
();
45
46
if
(_entryCallback) {
47
_entryCallback();
48
}
49
50
onEnter
();
51
}
52
53
void
QGCAbstractState::onExit
(QEvent* event)
54
{
55
onLeave
();
56
57
if
(_exitCallback) {
58
_exitCallback();
59
}
60
61
QState::onExit(
event
);
62
qCDebug(QGCStateMachineLog) <<
"Exited"
<<
stateName
();
63
}
64
65
bool
QGCAbstractState::event
(QEvent* event)
66
{
67
if
(_eventHandler && _eventHandler(
event
)) {
68
return
true
;
69
}
70
71
return
QState::event(
event
);
72
}
QGCAbstractState.h
QGCLoggingCategory.h
QGCStateMachine.h
QGCAbstractState::EntryCallback
std::function< void()> EntryCallback
Definition
QGCAbstractState.h:34
QGCAbstractState::onExit
void onExit(QEvent *event) override
Definition
QGCAbstractState.cc:53
QGCAbstractState::setCallbacks
void setCallbacks(EntryCallback onEntry, ExitCallback onExit=nullptr)
Set both entry and exit callbacks.
Definition
QGCAbstractState.cc:35
QGCAbstractState::onEntry
void onEntry(QEvent *event) override
Definition
QGCAbstractState.cc:41
QGCAbstractState::QGCAbstractState
QGCAbstractState(const QString &stateName, QState *parent)
Definition
QGCAbstractState.cc:5
QGCAbstractState::context
class StateContext * context() const
Definition
QGCAbstractState.cc:21
QGCAbstractState::stateName
QString stateName() const
Definition
QGCAbstractState.cc:26
QGCAbstractState::event
bool event(QEvent *event) override
Definition
QGCAbstractState.cc:65
QGCAbstractState::onEnter
virtual void onEnter()
Override to perform actions on state entry.
Definition
QGCAbstractState.h:74
QGCAbstractState::onLeave
virtual void onLeave()
Override to perform actions on state exit.
Definition
QGCAbstractState.h:77
QGCAbstractState::ExitCallback
std::function< void()> ExitCallback
Definition
QGCAbstractState.h:35
QGCAbstractState::machine
QGCStateMachine * machine() const
Definition
QGCAbstractState.cc:11
QGCAbstractState::vehicle
Vehicle * vehicle() const
Definition
QGCAbstractState.cc:16
QGCStateMachine
QGroundControl specific state machine with enhanced error handling.
Definition
QGCStateMachine.h:63
QGCStateMachine::context
StateContext & context()
Definition
QGCStateMachine.h:91
QGCStateMachine::vehicle
Vehicle * vehicle() const
Definition
QGCStateMachine.h:86
StateContext
Type-safe context for passing data between states in a state machine.
Definition
StateContext.h:32
Vehicle
Definition
Vehicle.h:86
src
Utilities
StateMachine
States
QGCAbstractState.cc
Generated by
1.9.8