58Q_DEFINE_THIS_MODULE(
"qf_actq")
63#if (QP_VERSION < 700U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
64#error qpc version 7.0.0 or higher required
72bool QActive_post_(
QActive *
const me,
74 uint_fast16_t
const margin,
75 void const *
const sender)
119 if (me->
eQueue.nMin > nFree) {
145 if (me->eQueue.frontEvt == (
QEvt *)0) {
146 me->eQueue.frontEvt = e;
152 me->eQueue.ring[me->eQueue.head] = e;
154 if (me->eQueue.head == 0U) {
155 me->eQueue.head = me->eQueue.end;
186 #if (QF_MAX_EPOOL > 0U)
199 QEvt const *
const e)
220 if (me->
eQueue.nMin > nFree) {
243 QEvt const *
const frontEvt = me->
eQueue.frontEvt;
247 if (frontEvt == (
QEvt *)0) {
278 if (nFree <= me->eQueue.end) {
282 if (me->
eQueue.tail == 0U) {
317uint_fast16_t QF_getQueueMin(uint_fast8_t
const prio) {
319 && (QActive_registry_[prio] != (
QActive *)0));
322 uint_fast16_t
const min =
323 (uint_fast16_t)QActive_registry_[prio]->eQueue.nMin;
343#define QTICKER_CAST_(me_) ((QActive *)(me_))
352 uint_fast8_t
const tickRate)
358 ,&QHsm_getStateHandler_
376 void const *
const par,
377 uint_fast8_t
const qs_id)
388void QTicker_dispatch_(
390 QEvt const *
const e,
391 uint_fast8_t
const qs_id)
402 for (; nTicks > 0U; --nTicks) {
403 QTimeEvt_tick_((uint_fast8_t)
QTICKER_CAST_(me)->eQueue.head, me);
411 QEvt const *
const e,
412 uint_fast16_t
const margin,
413 void const *
const sender)
425 static QEvt const tickEvt = { 0U, 0U, 0U };
426 me->
eQueue.frontEvt = &tickEvt;
451void QTicker_postLIFO_(
453 QEvt const *
const e)
Customizable and memory-efficient Design by Contract (DbC) for embedded systems.
#define Q_REQUIRE_ID(id_, expr_)
#define Q_UNUSED_PAR(par_)
#define Q_STATE_CAST(handler_)
#define QTICKER_CAST_(me_)
Internal (package scope) QF/C interface.
#define Q_ASSERT_CRIT_(id_, test_)
#define Q_REQUIRE_CRIT_(id_, test_)
#define Q_ERROR_CRIT_(id_)
QF/C sample port with all configurable options.
#define QACTIVE_EQUEUE_SIGNAL_(me_)
#define QACTIVE_EQUEUE_WAIT_(me_)
void QS_onTestPost(void const *sender, QActive *recipient, QEvt const *e, bool status)
@ QS_QF_ACTIVE_POST_ATTEMPT
#define QS_TEST_PROBE_DEF(fun_)
#define QS_LOC_CHECK_(qs_id_)
#define QS_TEST_PROBE_ID(id_, code_)
Internal (package scope) QS/C interface.
#define QS_BEGIN_NOCRIT_PRE_(rec_, qs_id_)
#define QS_OBJ_PRE_(obj_)
#define QS_END_NOCRIT_PRE_()
#define QS_2U8_PRE_(data1_, data2_)
#define QS_SIG_PRE_(sig_)
#define QS_EQC_PRE_(ctr_)
QS/C sample port with all configurable options.
void QActive_start_(QActive *const me, QPrioSpec const prioSpec, QEvt const **const qSto, uint_fast16_t const qLen, void *const stkSto, uint_fast16_t const stkSize, void const *const par)
Active object class (based on the QHsm implementation strategy)
Virtual table for the QActive class.
Hierarchical State Machine class.
struct QHsmVtable const * vptr
"Ticker" Active Object class