Abstract State Machine class (state machine interface)
More...
#include "qp.hpp"
|
| enum | QStateRet : QState {
Q_RET_SUPER
, Q_RET_SUPER_SUB
, Q_RET_UNHANDLED
, Q_RET_HANDLED
,
Q_RET_IGNORED
, Q_RET_ENTRY
, Q_RET_EXIT
, Q_RET_NULL
,
Q_RET_TRAN
, Q_RET_TRAN_INIT
, Q_RET_TRAN_EP
, Q_RET_TRAN_HIST
,
Q_RET_TRAN_XP
} |
| |
| enum | ReservedSig : QSignal { Q_EMPTY_SIG
, Q_ENTRY_SIG
, Q_EXIT_SIG
, Q_INIT_SIG
} |
| | Reserved signals by the QP-framework. More...
|
| |
Abstract State Machine class (state machine interface)
- Traceability
-
Definition at line 220 of file qp.hpp.
◆ QStateRet
All possible return values from state-handlers
- Note
- The order is important for algorithmic correctness.
| Enumerator |
|---|
| Q_RET_SUPER | event passed to superstate to handle
|
| Q_RET_SUPER_SUB | event passed to submachine superstate
|
| Q_RET_UNHANDLED | event unhandled due to a guard
|
| Q_RET_HANDLED | event handled (internal transition)
|
| Q_RET_IGNORED | event silently ignored (bubbled up to top)
|
| Q_RET_ENTRY | state entry action executed
|
| Q_RET_EXIT | state exit action executed
|
| Q_RET_NULL | return value without any effect
|
| Q_RET_TRAN | regular transition
|
| Q_RET_TRAN_INIT | initial transition in a state or submachine
|
| Q_RET_TRAN_EP | entry-point transition into a submachine
|
| Q_RET_TRAN_HIST | transition to history of a given state
|
| Q_RET_TRAN_XP | exit-point transition out of a submachine
|
Definition at line 230 of file qp.hpp.
◆ ReservedSig
Reserved signals by the QP-framework.
| Enumerator |
|---|
| Q_EMPTY_SIG | signal to execute the default case
|
| Q_ENTRY_SIG | signal for entry actions
|
| Q_EXIT_SIG | signal for exit actions
|
| Q_INIT_SIG | signal for nested initial transitions
|
Definition at line 258 of file qp.hpp.
◆ QAsm()
|
|
inlineexplicitprotectednoexcept |
◆ init() [1/2]
| QP::QAsm::init |
( |
void const *const | e, |
|
|
std::uint_fast8_t const | qsId ) |
|
pure virtual |
Virtual function to take the top-most initial transition in the state machine.
- Description
- Synchronously executes the top-most initial transition in a state machine (must be overridden in the subclasses).
- Parameters
-
| [in] | e | pointer to an initialization parameter (might be nullptr) |
| [in] | qsId | QS-id of this state machine (for QS local filter) |
- Precondition
qep_asm:200
- the virtual pointer must be initialized,
- the top-most initial transition must be initialized,
- the initial transition must not be taken yet.
Implemented in QP::QHsm, QP::QMsm, QP::QActive, QP::QMActive, QP::QTicker, QP::QHsmDummy, QP::QActiveDummy, and QP::QXThread.
◆ init() [2/2]
| QP::QAsm::init |
( |
std::uint_fast8_t const | qsId | ) |
|
|
inlinevirtual |
Virtual function to take the top-most initial transition in the state machine (overloaded).
- Description
- Synchronously executes the top-most initial transition in a state machine. This overloaded version takes no initialization parameter.
- Parameters
-
| [in] | qsId | QS-id of this state machine (for QS local filter) |
Reimplemented in QP::QHsm, QP::QMsm, QP::QActive, QP::QMActive, QP::QTicker, and QP::QXThread.
Definition at line 281 of file qp.hpp.
◆ dispatch()
| QP::QAsm::dispatch |
( |
QEvt const *const | e, |
|
|
std::uint_fast8_t const | qsId ) |
|
pure virtual |
Virtual function to dispatch an event to the state machine.
- Description
- Synchronously dispatches an event for processing to a state machine (must be overridden in the subclasses). The processing of an event represents one run-to-completion (RTC) step.
- Parameters
-
| [in] | e | pointer to the event to be dispatched to the MSM |
| [in] | qsId | QS-id of this state machine (for QS local filter) |
- Precondition
qep_asm:302
- current state must be initialized
- check the internal integrity (Software Self-Monitoring (SSM))
Implemented in QP::QHsm, QP::QMsm, QP::QActive, QP::QMActive, QP::QTicker, QP::QHsmDummy, QP::QActiveDummy, and QP::QXThread.
◆ isIn()
Virtual function to check whether the state machine is in a given state.
- Description
- Tests if a given state is part of the current active state configuration. Please note that in a hierarchical state machine, to "be in a state" means also to be in a superstate of of the state.
- Parameters
-
| [in] | state | pointer to the state-handler function to be checked |
- Returns
- 'true' if the state machine "is in" the
state and 'false' otherwise
- Attention
- This function must be called only on a state machine that is in the "stable state configuration". Among others, this means that the state machine cannot call it in the middle of its own transition.
- Traceability
-
Reimplemented in QP::QHsm, QP::QMsm, QP::QActive, and QP::QMActive.
Definition at line 287 of file qp.hpp.
◆ state()
◆ stateObj()
| QMState const * QP::QAsm::stateObj |
( |
| ) |
const |
|
inlinenoexcept |
◆ getStateHandler()
| QP::QAsm::getStateHandler |
( |
| ) |
|
|
inlinevirtualnoexcept |
◆ top()
| QP::QAsm::top |
( |
void *const | me, |
|
|
QEvt const *const | e ) |
|
inlinestaticnoexcept |
Top state handler that ignores all events.
Definition at line 303 of file qp.hpp.
◆ tran()
Internal helper function to take a state transition in QP::QHsm
Definition at line 313 of file qp.hpp.
◆ tran_hist()
Internal helper function to take a state transition to history in QP::QHsm
Definition at line 317 of file qp.hpp.
◆ super()
Internal helper function to indicate superstate of a given state
Definition at line 321 of file qp.hpp.
◆ qm_tran()
| QP::QAsm::qm_tran |
( |
void const *const | tatbl | ) |
|
|
inlineprotectednoexcept |
Internal helper function to take a state transition in QP::QMsm
Definition at line 325 of file qp.hpp.
◆ qm_tran_init()
| QP::QAsm::qm_tran_init |
( |
void const *const | tatbl | ) |
|
|
inlineprotectednoexcept |
Internal helper function to take an initial transition in QP::QMsm
Definition at line 329 of file qp.hpp.
◆ qm_tran_hist()
| QAsm::qm_tran_hist |
( |
QMState const *const | hist, |
|
|
void const *const | tatbl ) |
|
inlineprotectednoexcept |
Internal helper function to take a state transition to history in QP::QMsm
Definition at line 333 of file qp.hpp.
◆ qm_tran_ep()
| QP::QAsm::qm_tran_ep |
( |
void const *const | tatbl | ) |
|
|
inlineprotectednoexcept |
Internal helper function to take a transition to an entry point in QP::QMsm
Definition at line 341 of file qp.hpp.
◆ qm_tran_xp()
| QP::QAsm::qm_tran_xp |
( |
QActionHandler const | xp, |
|
|
void const *const | tatbl ) |
|
inlineprotectednoexcept |
Internal helper function to take a transition from an exit point in QP::QMsm
Definition at line 345 of file qp.hpp.
◆ qm_entry()
| QP::QAsm::qm_entry |
( |
QMState const *const | s | ) |
|
|
inlineprotectednoexcept |
Internal helper function to execute state entry actions in QP::QMsm
Definition at line 355 of file qp.hpp.
◆ qm_exit()
| QP::QAsm::qm_exit |
( |
QMState const *const | s | ) |
|
|
inlineprotectednoexcept |
Internal helper function to execute state exit actions in QP::QMsm
Definition at line 369 of file qp.hpp.
◆ qm_sm_exit()
| QP::QAsm::qm_sm_exit |
( |
QMState const *const | s | ) |
|
|
inlineprotectednoexcept |
Internal helper function to execute state exit in a submachine in QP::QMsm
- Traceability
-
Definition at line 381 of file qp.hpp.
◆ qm_super_sub()
◆ m_state
Current state (pointer to the current state-handler function)
- Traceability
-
Definition at line 222 of file qp.hpp.
◆ m_temp
Temporary storage for target/act-table, etc.
- Description
- The
m_temp data member is used for passing information from the QP Application to the "event processor" of QP. The m_temp member is also used as the Duplicate Inverse Storage of the m_state attribute in between transitions (part of QP Functional Safety (FuSa) Subsystem).
Definition at line 223 of file qp.hpp.
The documentation for this class was generated from the following files: