QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
EventQueuedState.cc
Go to the documentation of this file.
1#include "EventQueuedState.h"
2#include "QGCStateMachine.h"
4
5EventQueuedState::EventQueuedState(const QString& stateName, QState* parent,
6 const QString& eventName, int timeoutMsecs)
7 : WaitStateBase(stateName, parent, timeoutMsecs)
8{
9 _expectedEvents.insert(eventName);
10}
11
12EventQueuedState::EventQueuedState(const QString& stateName, QState* parent,
13 const QSet<QString>& eventNames, int timeoutMsecs)
14 : WaitStateBase(stateName, parent, timeoutMsecs)
15 , _expectedEvents(eventNames)
16{
17}
18
19void EventQueuedState::addExpectedEvent(const QString& eventName)
20{
21 _expectedEvents.insert(eventName);
22}
23
24void EventQueuedState::removeExpectedEvent(const QString& eventName)
25{
26 _expectedEvents.remove(eventName);
27}
28
30{
31 if (machine()) {
32 _eventConnection = connect(machine(), &QGCStateMachine::machineEvent,
33 this, &EventQueuedState::_onMachineEvent);
34 }
35}
36
38{
39 if (_eventConnection) {
40 disconnect(_eventConnection);
41 _eventConnection = {};
42 }
43}
44
46{
48 _receivedEvent.clear();
49
50 qCDebug(QGCStateMachineLog) << stateName() << "waiting for events:"
51 << _expectedEvents.values().join(", ");
52}
53
54void EventQueuedState::_onMachineEvent(const QString& eventName)
55{
56 if (_expectedEvents.contains(eventName)) {
57 qCDebug(QGCStateMachineLog) << stateName() << "received expected event:" << eventName;
58
59 _receivedEvent = eventName;
60 emit eventReceived(eventName);
62 }
63}
void onWaitEntered() override
Called when the state is entered - subclasses should call base implementation.
void removeExpectedEvent(const QString &eventName)
void connectWaitSignal() override
Subclasses override to set up their signal connections.
void disconnectWaitSignal() override
Subclasses override to tear down their signal connections.
EventQueuedState(const QString &stateName, QState *parent, const QString &eventName, int timeoutMsecs=0)
void eventReceived(const QString &eventName)
void addExpectedEvent(const QString &eventName)
QString stateName() const
QGCStateMachine * machine() const
void machineEvent(const QString &eventName)
virtual void onWaitEntered()
Called when the state is entered - subclasses should call base implementation.