40Q_DEFINE_THIS_MODULE(
"qf_actq")
46 void const * const sender);
52 uint_fast16_t const margin,
53 void const * const sender)
58 return QActiveDummy_fakePost_(me, e, margin, sender);
71 bool status = (nFree > 0U);
80#if (QF_MAX_EPOOL > 0U)
81 if (e->poolNum_ != 0U) {
91 QS_onTestPost(sender, me, e,
true);
111 QS_onTestPost(sender, me, e, status);
118#if (QF_MAX_EPOOL > 0U)
129 QEvt const *
const e)
134 QActiveDummy_fakePostLIFO_(me, e);
157 if (me->
eQueue.nMin > nFree) {
176 QS_onTestPost((
QActive *)0, me, e,
true);
181 QEvt const *
const frontEvt = me->
eQueue.frontEvt;
184 if (frontEvt != (
QEvt *)0) {
187 if (tail == me->
eQueue.end) {
191 me->
eQueue.ring[tail] = frontEvt;
221 if (nFree <= me->
eQueue.end) {
226 QEvt const *
const frontEvt = me->
eQueue.ring[tail];
239 me->
eQueue.frontEvt = frontEvt;
268 QEvt const *
const e,
269 void const *
const sender)
280 if (me->
eQueue.nMin > nFree) {
299 QXTHREAD_EQUEUE_SIGNAL_(me);
310 me->
eQueue.ring[head] = e;
338 nUse = QEQueue_getUse(&a->
eQueue);
345 nUse += QEQueue_getUse(&a->
eQueue);
368 uint16_t
const nFree = (uint16_t)a->
eQueue.nFree;
389 uint16_t
const nMin = (uint16_t)a->
eQueue.nMin;
397#if (QF_MAX_TICK_RATE > 0U)
402 uint_fast8_t
const tickRate)
410 &QHsm_getStateHandler_
421 void const *
const par,
422 uint_fast8_t
const qsId)
442 QEvt const *
const e,
443 uint_fast8_t
const qsId)
464 for (; nTicks > 0U; --nTicks) {
465 QTimeEvt_tick_((uint_fast8_t)tickRate, me);
472 void const *
const sender)
uint16_t QEQueueCtr
The data type to store the ring-buffer counters.
static void QActive_postFIFO_(QActive *const me, QEvt const *const e, void const *const sender)
#define Q_UNUSED_PAR(par_)
Helper macro to 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).
QP Framework in C internal (package-scope) interface
#define QACTIVE_CAST_(ptr_)
Internal helper macro to encapsulate MISRA deviation.
#define QACTIVE_EQUEUE_SIGNAL_(me_)
#define QACTIVE_EQUEUE_WAIT_(me_)
@ QS_QF_ACTIVE_POST_LIFO
an event was posted (LIFO) directly to AO
@ QS_QF_ACTIVE_GET
AO got an event and its queue is not empty.
@ QS_QF_ACTIVE_POST_ATTEMPT
attempt to post an evt to AO failed
@ QS_QF_ACTIVE_POST
an event was posted (FIFO) directly to AO
@ QS_QF_ACTIVE_GET_LAST
AO got an event and its queue is empty.
#define QS_LOC_CHECK_(qsId_)
QS (QP/Spy software tracing) internal (package-scope) interface.
#define QS_OBJ_PRE(obj_)
Output pre-formatted object pointer element.
#define QS_EQC_PRE(ctr_)
Output pre-formatted event queue counter data element.
#define QS_SIG_PRE(sig_)
Output pre-formatted event signal data element.
#define QS_2U8_PRE(data1_, data2_)
Output two pre-formatted unsigned 8-bit integer data elements.
#define QS_END_PRE()
Pre-formatted QS trace record end.
#define QS_BEGIN_PRE(rec_, qsId_)
Pre-formatted QS trace record begin.
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
General-purpose assertion with user-specified ID number (in critical section).
#define Q_REQUIRE_INCRIT(id_, expr_)
Assertion for checking a precondition (in critical section).
Active object class (based on the QHsm implementation strategy).
bool QActive_post_(QActive *const me, QEvt const *const e, uint_fast16_t const margin, void const *const sender)
Posts an event e directly to the event queue of the active object using the First-In-First-Out (FIFO)...
QEvt const * QActive_get_(QActive *const me)
Get an event from the event queue of an active object.
uint16_t QActive_getQueueFree(uint_fast8_t const prio)
void QActive_postLIFO_(QActive *const me, QEvt const *const e)
Posts an event e directly to the event queue of the active object using the Last-In-First-Out (LIFO) ...
void QActive_ctor(QActive *const me, QStateHandler const initial)
QActive constructor (abstract base class).
QACTIVE_EQUEUE_TYPE eQueue
Port-dependent event-queue type (often QEQueue).
static void QActive_postFIFO_(QActive *const me, QEvt const *const e, void const *const sender)
QActive * QActive_registry_[QF_MAX_ACTIVE+1U]
Static (one per-class) array of registered active objects.
uint8_t prio
QF-priority [1..QF_MAX_ACTIVE] of this AO.
uint16_t QActive_getQueueUse(uint_fast8_t const prio)
uint16_t QActive_getQueueMin(uint_fast8_t const prio)
This function returns the minimum of free entries of the given event queue.
Abstract State Machine class (state machine interface).
struct QAsmVtable const * vptr
Virtual pointer inherited by all QAsm subclasses (see also SAS_QP_OO).
union QAsmAttr state
Current state (pointer to the current state-handler function).
union QAsmAttr temp
Temporary storage for target/act-table etc..
Virtual table for the QAsm class.
uint32_t refCtr_
Event reference counter.
uint32_t poolNum_
Event pool number of this event.
uint32_t sig
Event signal (see Event Signal).
"Ticker" Active Object class
void QTicker_init_(QAsm *const me, void const *const par, uint_fast8_t const qsId)
void QTicker_trig_(QTicker *const me, void const *const sender)
Asynchronously trigger the QTicker active object to perform tick processing.
void QTicker_dispatch_(QAsm *const me, QEvt const *const e, uint_fast8_t const qsId)
void QTicker_ctor(QTicker *const me, uint_fast8_t const tickRate)
Constructor of the QTicker Active Object class.