|
| QXThread (QXThreadHandler const handler, std::uint_fast8_t const tickRate=0U) noexcept |
|
void | init (void const *const e, std::uint_fast8_t const qsId) override |
|
void | init (std::uint_fast8_t const qsId) override |
|
void | dispatch (QEvt const *const e, std::uint_fast8_t const qsId) override |
|
QTimeEvt const * | getTimeEvt () const noexcept |
|
bool | delayCancel () noexcept |
|
void | init (void const *const e, std::uint_fast8_t const qsId) override |
|
void | init (std::uint_fast8_t const qsId) override |
|
void | dispatch (QEvt const *const e, std::uint_fast8_t const qsId) override |
|
bool | isIn (QStateHandler const state) noexcept override |
|
QStateHandler | childState (QStateHandler const parent) noexcept |
|
void | setAttr (std::uint32_t attr1, void const *attr2=nullptr) |
|
void | start (QPrioSpec const prioSpec, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize, void const *const par) |
|
void | start (QPrioSpec const prioSpec, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize) |
|
void | stop () |
|
void | register_ () noexcept |
|
void | unregister_ () noexcept |
|
bool | post_ (QEvt const *const e, std::uint_fast16_t const margin, void const *const sender) noexcept |
|
void | postLIFO (QEvt const *const e) noexcept |
|
QEvt const * | get_ () noexcept |
|
void | subscribe (enum_t const sig) const noexcept |
|
void | unsubscribe (enum_t const sig) const noexcept |
|
void | unsubscribeAll () const noexcept |
|
bool | defer (QEQueue *const eq, QEvt const *const e) const noexcept |
|
bool | recall (QEQueue *const eq) noexcept |
|
std::uint_fast16_t | flushDeferred (QEQueue *const eq, std::uint_fast16_t const num=0xFFFFU) const noexcept |
|
std::uint_fast8_t | getPrio () const noexcept |
|
void | setPrio (QPrioSpec const prio) noexcept |
|
std::uint_fast8_t | getPThre () const noexcept |
|
QACTIVE_EQUEUE_TYPE const & | getEQueue () const noexcept |
|
QACTIVE_OS_OBJ_TYPE const & | getOsObject () const noexcept |
|
QACTIVE_THREAD_TYPE const & | getThread () const noexcept |
|
void | setThread (QACTIVE_THREAD_TYPE const &thr) |
|
virtual bool | postFromISR (QEvt const *const e, std::uint_fast16_t const margin, void *par, void const *const sender) noexcept |
|
virtual void | init (void const *const e, std::uint_fast8_t const qsId)=0 |
|
virtual void | init (std::uint_fast8_t const qsId) |
|
virtual void | dispatch (QEvt const *const e, std::uint_fast8_t const qsId)=0 |
|
virtual bool | isIn (QStateHandler const state) noexcept |
|
QStateHandler | state () const noexcept |
|
QMState const * | stateObj () const noexcept |
|
virtual QStateHandler | getStateHandler () noexcept |
|
|
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...
|
|
std::uint8_t | m_prio_dis |
|
std::uint8_t | m_pthre_dis |
|
| QActive (QStateHandler const initial) noexcept |
|
| QAsm () noexcept |
|
QState | tran (QStateHandler const target) noexcept |
|
QState | tran_hist (QStateHandler const hist) noexcept |
|
QState | super (QStateHandler const superstate) noexcept |
|
QState | qm_tran (void const *const tatbl) noexcept |
|
QState | qm_tran_init (void const *const tatbl) noexcept |
|
QState | qm_tran_hist (QMState const *const hist, void const *const tatbl) noexcept |
|
QState | qm_tran_ep (void const *const tatbl) noexcept |
|
QState | qm_tran_xp (QActionHandler const xp, void const *const tatbl) noexcept |
|
QState | qm_entry (QMState const *const s) noexcept |
|
QState | qm_exit (QMState const *const s) noexcept |
|
QState | qm_sm_exit (QMState const *const s) noexcept |
|
QState | qm_super_sub (QMState const *const s) noexcept |
|
std::uint8_t | m_prio |
|
std::uint8_t | m_pthre |
|
QACTIVE_THREAD_TYPE | m_thread |
|
QACTIVE_OS_OBJ_TYPE | m_osObject |
|
QACTIVE_EQUEUE_TYPE | m_eQueue |
|
QAsmAttr | m_state |
|
QAsmAttr | m_temp |
|
eXtended (blocking) thread of the QXK preemptive kernel
- Description
- QP::QXThread represents the eXtended (blocking) thread of the QXK kernel. Each extended thread in the application must be represented by the corresponding QP::QXThread instance
- Note
- Typically, QP::QXThread is instantiated directly in the application code. The customization of the thread occurs in the constructor, where you provide the thread-handler function as the parameter.
- Usage
- The following example illustrates how to instantiate and use an extended thread in your application.
private:
std::uint8_t m_foo;
public:
static XThread1 inst;
XThread1();
private:
};
eXtended (blocking) thread of the QXK preemptive kernel
QP/C++ interface including the backwards-compatibility layer.
Definition at line 88 of file qxk.hpp.
Obtain a message from the private message queue (block if no messages)
- Description
- The QXThread_queueGet() operation allows the calling extended thread to receive QP events directly into its own built-in event queue from an ISR, basic thread (AO), or another extended thread.
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.
- Parameters
-
[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. |
- Returns
- A pointer to the event. If the pointer is not NULL, the event was delivered. Otherwise the event pointer of NULL indicates that the queue has timed out.
- Precondition
qxk_xthr:500
- must NOT be called from an ISR;
- be called from an extended thread;
- the thread must NOT be already blocked on any object.
- Precondition
qxk_xthr:501
- the thread must NOT be holding a scheduler lock.
Definition at line 173 of file qxk_xthr.cpp.