Extended (blocking) thread of the QXK preemptive kernel. More...
#include <qxthread.hpp>
Public Member Functions | |
QXThread (QXThreadHandler const handler, std::uint_fast8_t const tickRate=0U) noexcept | |
public constructor More... | |
bool | delayCancel (void) noexcept |
cancel the delay More... | |
void | init (void const *const e, std::uint_fast8_t const qs_id) noexcept override |
Executes the top-most initial transition in HSM. More... | |
void | init (std::uint_fast8_t const qs_id) noexcept override |
overloaded init(qs_id) More... | |
void | dispatch (QEvt const *const e, std::uint_fast8_t const qs_id) noexcept override |
Dispatches an event to HSM. More... | |
void | start (std::uint_fast8_t const prio, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize, void const *const par) override |
Starts execution of an extended thread and registers the thread with the framework. More... | |
void | start (std::uint_fast8_t const prio, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize) override |
Overloaded start function (no initialization event) More... | |
bool | post_ (QEvt const *const e, std::uint_fast16_t const margin, void const *const sender) noexcept override |
void | postLIFO (QEvt const *const e) noexcept override |
Posts an event directly to the event queue of the active object using the Last-In-First-Out (LIFO) policy. More... | |
![]() | |
void | stop (void) |
Stops execution of an active object and removes it from the framework's supervision. More... | |
void | unsubscribeAll (void) const noexcept |
Un-subscribes from the delivery of all signals to the active object. More... | |
void | subscribe (enum_t const sig) const noexcept |
Subscribes for delivery of signal sig to the active object. More... | |
void | unsubscribe (enum_t const sig) const noexcept |
Un-subscribes from the delivery of signal sig to the active object. More... | |
bool | defer (QEQueue *const eq, QEvt const *const e) const noexcept |
Defer an event to a given separate event queue. More... | |
bool | recall (QEQueue *const eq) noexcept |
Recall a deferred event from a given event queue. More... | |
std::uint_fast16_t | flushDeferred (QEQueue *const eq) const noexcept |
Flush the specified deferred queue 'eq'. More... | |
std::uint_fast8_t | getPrio (void) const noexcept |
Get the priority of the active object. More... | |
void | setPrio (std::uint_fast8_t const prio) |
Set the priority of the active object. More... | |
void | setAttr (std::uint32_t attr1, void const *attr2=nullptr) |
Generic setting of additional attributes (useful in QP ports) More... | |
QEvt const * | get_ (void) noexcept |
Get an event from the event queue of an active object. More... | |
![]() | |
virtual | ~QHsm () |
virtual destructor More... | |
bool | isIn (QStateHandler const s) noexcept |
Tests if a given state is part of the current active state configuration. More... | |
QStateHandler | state (void) const noexcept |
Obtain the current state (state handler function) More... | |
QStateHandler | childState (QStateHandler const parent) noexcept |
Obtain the current active child state of a given parent. More... | |
Static Public Member Functions | |
static bool | delay (std::uint_fast16_t const nTicks) noexcept |
delay (block) the current extended thread for a specified # ticks More... | |
static QEvt const * | queueGet (std::uint_fast16_t const nTicks=QXTHREAD_NO_TIMEOUT) noexcept |
obtain a message from the private message queue (block if no messages) More... | |
![]() | |
static QState | top (void *const me, QEvt const *const e) noexcept |
the top-state. More... | |
Private Member Functions | |
void | block_ (void) const noexcept |
void | unblock_ (void) const noexcept |
void | teArm_ (enum_t const sig, std::uint_fast16_t const nTicks) noexcept |
bool | teDisarm_ (void) noexcept |
Private Attributes | |
QTimeEvt | m_timeEvt |
time event to handle blocking timeouts More... | |
Friends | |
class | QXSemaphore |
class | QXMutex |
Additional Inherited Members | |
![]() | |
std::uint8_t | m_prio |
QF priority (1..QF_MAX_ACTIVE) of this active object. More... | |
![]() | |
static constexpr QState | Q_RET_SUPER {static_cast<QState>(0)} |
event passed to the superstate to handle More... | |
static constexpr QState | Q_RET_SUPER_SUB {static_cast<QState>(1)} |
event passed to submachine superstate More... | |
static constexpr QState | Q_RET_UNHANDLED {static_cast<QState>(2)} |
event unhandled due to a guard evaluating to 'false' More... | |
static constexpr QState | Q_RET_HANDLED {static_cast<QState>(3)} |
event handled (internal transition) More... | |
static constexpr QState | Q_RET_IGNORED {static_cast<QState>(4)} |
event silently ignored (bubbled up to top) More... | |
static constexpr QState | Q_RET_ENTRY {static_cast<QState>(5)} |
state entry action executed More... | |
static constexpr QState | Q_RET_EXIT {static_cast<QState>(6)} |
state exit action executed More... | |
static constexpr QState | Q_RET_NULL {static_cast<QState>(7)} |
return value without any effect More... | |
static constexpr QState | Q_RET_TRAN {static_cast<QState>(8)} |
regular transition taken More... | |
static constexpr QState | Q_RET_TRAN_INIT {static_cast<QState>(9)} |
initial transition taken More... | |
static constexpr QState | Q_RET_TRAN_EP {static_cast<QState>(10)} |
entry-point transition into a submachine More... | |
static constexpr QState | Q_RET_TRAN_HIST {static_cast<QState>(11)} |
transition to history of a given state More... | |
static constexpr QState | Q_RET_TRAN_XP {static_cast<QState>(12)} |
exit-point transition out of a submachine More... | |
![]() | |
enum | ReservedHsmSignals : QSignal { Q_ENTRY_SIG = 1 , Q_EXIT_SIG , Q_INIT_SIG } |
![]() | |
QActive (QStateHandler const initial) noexcept | |
protected constructor (abstract class) More... | |
![]() | |
QHsm (QStateHandler const initial) noexcept | |
Protected constructor of QHsm. More... | |
QState | tran (QStateHandler const target) noexcept |
Helper function to specify a state transition. More... | |
QState | tran_hist (QStateHandler const hist) noexcept |
Helper function to specify a transition to history. More... | |
QState | super (QStateHandler const superstate) noexcept |
Helper function to specify the superstate of a given state. More... | |
QState | qm_tran (void const *const tatbl) noexcept |
Helper function to specify a regular state transition in a QM state-handler. More... | |
QState | qm_tran_hist (QMState const *const hist, void const *const tatbl) noexcept |
Helper function to specifiy a transition to history in a QM state-handler. More... | |
QState | qm_tran_init (void const *const tatbl) noexcept |
Helper function to specify an initial state transition in a QM state-handler. More... | |
QState | qm_tran_ep (void const *const tatbl) noexcept |
Helper function to specify a transition to an entry point to a submachine state in a QM state-handler. More... | |
QState | qm_tran_xp (QActionHandler const xp, void const *const tatbl) noexcept |
Helper function to specify a transition to an exit point from a submachine state in a QM state-handler. More... | |
QState | qm_entry (QMState const *const s) noexcept |
Helper function to specify a state entry in a QM state-handler. More... | |
QState | qm_exit (QMState const *const s) noexcept |
Helper function to specify a state exit in a QM state-handler. More... | |
virtual QStateHandler | getStateHandler () noexcept |
Get the current state handler of the HSM. More... | |
QState | qm_sm_exit (QMState const *const s) noexcept |
Helper function to specify a submachine exit in a QM state-handler. More... | |
QState | qm_super_sub (QMState const *const s) noexcept |
Helper function to call in a QM state-handler when it passes the event to the host submachine state to handle an event. More... | |
Extended (blocking) thread of the QXK preemptive kernel.
Definition at line 66 of file qxthread.hpp.
|
noexcept |
public constructor
Definition at line 73 of file qxk_xthr.cpp.
|
staticnoexcept |
delay (block) the current extended thread for a specified # ticks
delay (timed blocking of) the current extended thread (static)
Definition at line 549 of file qxk_xthr.cpp.
|
noexcept |
cancel the delay
Definition at line 586 of file qxk_xthr.cpp.
|
staticnoexcept |
obtain a message from the private message queue (block if no messages)
If QXThread::queueGet() is called when no events are present in the thread's private event queue, the operation blocks the current extended thread until either an event is received, or a user-specified timeout expires.
[in] | nTicks | number of clock ticks (at the associated rate) to wait for the event to arrive. The value of QXTHREAD_NO_TIMEOUT indicates that no timeout will occur and the queue will block indefinitely. |
Definition at line 366 of file qxk_xthr.cpp.
|
overridevirtualnoexcept |
Executes the top-most initial transition in HSM.
Reimplemented from QHsm.
Definition at line 84 of file qxk_xthr.cpp.
|
inlineoverridevirtualnoexcept |
|
overridevirtualnoexcept |
|
overridevirtual |
Starts execution of an extended thread and registers the thread with the framework.
[in] | prio | priority at which to start the extended thread |
[in] | qSto | pointer to the storage for the ring buffer of the event queue. This cold be NULL, if this extended thread does not use the built-in event queue. |
[in] | qLen | length of the event queue [in events], or zero if queue not used |
[in] | stkSto | pointer to the stack storage (must be provided) |
[in] | stkSize | stack size [in bytes] (must not be zero) |
[in] | par | pointer to an extra parameter (might be NULL) |
Reimplemented from QActive.
Definition at line 122 of file qxk_xthr.cpp.
|
inlineoverridevirtual |
Overloaded start function (no initialization event)
Reimplemented from QActive.
Definition at line 103 of file qxthread.hpp.
|
overridevirtualnoexcept |
margin
specifies the minimum number of free slots in the queue that must be available for posting to succeed. The function returns 1 (success) if the posting succeeded (with the provided margin) and 0 (failure) when the posting fails.[in] | e | pointer to the event to be posted |
[in] | margin | number of required free slots in the queue after posting the event. The special value QP::QF_NO_MARGIN means that this function will assert if posting fails. |
[in] | sender | pointer to a sender object (used in QS only) |
margin
parameter is special and denotes situation when the post() operation is assumed to succeed (event delivery guarantee). An assertion fires, when the event cannot be delivered in this case. delivered in this case. Reimplemented from QActive.
Definition at line 200 of file qxk_xthr.cpp.
|
overridevirtualnoexcept |
Posts an event directly to the event queue of the active object using the Last-In-First-Out (LIFO) policy.
[in] | e | pointer to the event to post to the queue |
Reimplemented from QActive.
Definition at line 341 of file qxk_xthr.cpp.
|
privatenoexcept |
Definition at line 459 of file qxk_xthr.cpp.
|
privatenoexcept |
Definition at line 473 of file qxk_xthr.cpp.
|
privatenoexcept |
Definition at line 491 of file qxk_xthr.cpp.
|
privatenoexcept |
Definition at line 532 of file qxk_xthr.cpp.
|
friend |
Definition at line 134 of file qxthread.hpp.
|
friend |
Definition at line 135 of file qxthread.hpp.
|
private |
time event to handle blocking timeouts
Definition at line 131 of file qxthread.hpp.