7 , _factory(std::move(factory))
16 qCCritical(QGCStateMachineLog) <<
stateName() <<
"no machine factory provided";
21 _childMachine = _factory(
this);
23 qCCritical(QGCStateMachineLog) <<
stateName() <<
"factory returned null machine";
28 qCDebug(QGCStateMachineLog) <<
stateName() <<
"starting child machine:" << _childMachine->machineName();
30 connect(_childMachine, &QStateMachine::finished,
this, &SubMachineState::_onChildFinished);
33 _childMachine->
start();
38 if (_childMachine && _childMachine->isRunning()) {
39 qCDebug(QGCStateMachineLog) <<
stateName() <<
"stopping child machine on exit";
40 _childMachine->stop();
44 _childMachine->deleteLater();
45 _childMachine =
nullptr;
51void SubMachineState::_onChildFinished()
53 qCDebug(QGCStateMachineLog) <<
stateName() <<
"child machine finished";
57void SubMachineState::_onChildError()
59 qCDebug(QGCStateMachineLog) <<
stateName() <<
"child machine error";
void onExit(QEvent *event) override
void onEntry(QEvent *event) override
QString stateName() const
bool event(QEvent *event) override
void start()
Start the state machine with debug logging.
void childError()
Emitted when the child machine encounters an error.
void onEntry(QEvent *event) override
void onExit(QEvent *event) override
SubMachineState(const QString &stateName, QState *parent, MachineFactory factory)
std::function< QGCStateMachine *(SubMachineState *parent)> MachineFactory