46Q_DEFINE_THIS_MODULE(
"qf_actq")
51#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
52#error qpc version 7.3.0 or higher required
59bool QActive_post_(
QActive *
const me,
61 uint_fast16_t
const margin,
62 void const *
const sender)
71 return QActiveDummy_fakePost_(me, e, margin, sender);
116 if (QEvt_getPoolNum_(e) != 0U) {
127 if (me->
eQueue.nMin > tmp) {
150 if (QS_LOC_CHECK_(me->prio)) {
161 if (me->eQueue.frontEvt == (
QEvt *)0) {
162 me->eQueue.frontEvt = e;
171 QXTHREAD_EQUEUE_SIGNAL_(me);
181 tmp = me->eQueue.head;
186 me->eQueue.ring[tmp] = e;
189 tmp = me->eQueue.end;
193 me->eQueue.head = tmp;
218 if (QS_LOC_CHECK_(me->prio)) {
232 #if (QF_MAX_EPOOL > 0U)
245 QEvt const *
const e)
250 QActiveDummy_fakePostLIFO_(me, e);
278 if (QEvt_getPoolNum_(e) != 0U) {
288 if (me->
eQueue.nMin > tmp) {
310 if (QS_LOC_CHECK_(me->
prio)) {
321 QEvt const *
const frontEvt = me->
eQueue.frontEvt;
327 if (frontEvt != (
QEvt *)0) {
334 if (tmp == me->
eQueue.end) {
341 me->
eQueue.ring[tmp] = frontEvt;
371 == (uintptr_t)~me->
eQueue.frontEvt_dis);
383 if (tmp <= me->eQueue.end) {
399 QEvt const *
const frontEvt = me->
eQueue.ring[tmp];
404 me->
eQueue.frontEvt = frontEvt;
444uint_fast16_t QF_getQueueMin(uint_fast8_t
const prio) {
448 && (QActive_registry_[prio] != (
QActive *)0));
450 uint_fast16_t
const min =
451 (uint_fast16_t)QActive_registry_[prio]->eQueue.nMin;
453 uint_fast16_t
const min = 0U;
467 uint_fast8_t
const tickRate)
476 ,&QHsm_getStateHandler_
492 void const *
const par,
493 uint_fast8_t
const qsId)
514void QTicker_dispatch_(
516 QEvt const *
const e,
517 uint_fast8_t
const qsId)
546 for (; nTicks > 0U; --nTicks) {
547 QTimeEvt_tick_((uint_fast8_t)tickRate, me);
555 void const *
const sender)
581 me->
eQueue.frontEvt = &tickEvt;
#define QACTIVE_EQUEUE_SIGNAL_(me_)
#define QACTIVE_EQUEUE_WAIT_(me_)
#define Q_UNUSED_PAR(par_)
Helper macro to clearly mark unused parameters of functions.
#define QF_NO_MARGIN
Special value of margin that causes asserting failure in case event allocation or event posting fails...
#define Q_STATE_CAST(handler_)
Perform cast to QStateHandler.
#define Q_ACTION_CAST(action_)
Perform cast to QActionHandler.
#define QEVT_INITIALIZER(sig_)
Initializer for immutable (constant) QEvt instances.
#define QF_MAX_ACTIVE
Maximum # Active Objects in the system (1..64)
Internal (package scope) QP/C interface.
#define Q_PTR2UINT_CAST_(ptr_)
#define QACTIVE_CAST_(ptr_)
void QS_onTestPost(void const *sender, QActive *recipient, QEvt const *e, bool status)
#define QS_2U8_PRE(data1_, data2_)
#define QS_TEST_PROBE_DEF(fun_)
#define QS_TEST_PROBE_ID(id_, code_)
#define QS_BEGIN_PRE(rec_, qsId_)
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
#define Q_INVARIANT_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)
#define Q_ERROR_INCRIT(id_)
Active object class (based on the QHsm implementation strategy)
QACTIVE_EQUEUE_TYPE eQueue
Port-dependent event-queue type (often QEQueue)
uint8_t prio
QF-priority [1..QF_MAX_ACTIVE] of this AO.
Abstract State Machine class (state machine interface)
struct QAsmVtable const * vptr
Virtual pointer inherited by all QAsm subclasses (see also Object Orientation)
union QAsmAttr temp
Temporary storage for target/act-table etc.
Virtual table for the QAsm class.
QSignal sig
Signal of the event (see Event Signal)
uint8_t volatile refCtr_
Event reference counter.
"Ticker" Active Object class