54Q_DEFINE_THIS_MODULE(
"qf_time")
58#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
59#error qpc version 7.3.0 or higher required
69void QTimeEvt_ctorX(
QTimeEvt *
const me,
72 uint_fast8_t
const tickRate)
100 uint_fast8_t
const tickRate
104 uint_fast8_t
const qsId = ((
QActive *)(me->
act))->prio;
137 me->
next = (
QTimeEvt *)QTimeEvt_timeEvtHead_[tickRate].act;
138 QTimeEvt_timeEvtHead_[tickRate].act = me;
144 QS_OBJ_PRE_(me->
act);
146 QS_TEC_PRE_(interval);
147 QS_U8_PRE_(tickRate);
174 QS_OBJ_PRE_(me->
act);
175 QS_TEC_PRE_(me->
ctr);
189 QS_OBJ_PRE_(me->
act);
205 uint_fast8_t
const tickRate
208 uint_fast8_t
const qsId = ((
QActive *)(me->
act))->prio;
242 me->
next = (
QTimeEvt *)QTimeEvt_timeEvtHead_[tickRate].act;
243 QTimeEvt_timeEvtHead_[tickRate].act = me;
254 QS_OBJ_PRE_(me->
act);
255 QS_TEC_PRE_(me->
ctr);
257 QS_2U8_PRE_(tickRate, (wasArmed ? 1U : 0U));
279 return wasDisarmed != 0U;
296 uint_fast8_t
const tickRate,
297 void const *
const sender)
309 QTimeEvt *prev = &QTimeEvt_timeEvtHead_[tickRate];
313 QS_TEC_PRE_(prev->
ctr);
314 QS_U8_PRE_(tickRate);
319 for (; lbound > 0U; --lbound) {
325 if (QTimeEvt_timeEvtHead_[tickRate].act != (
void *)0) {
329 prev->
next = (
QTimeEvt *)QTimeEvt_timeEvtHead_[tickRate].act;
330 QTimeEvt_timeEvtHead_[tickRate].act = (
void *)0;
379 QS_U8_PRE_(tickRate);
388 QS_U8_PRE_(tickRate);
393 QXThread_timeout_(act);
433bool QTimeEvt_noActive(uint_fast8_t
const tickRate) {
440 if (QTimeEvt_timeEvtHead_[tickRate].next != (
QTimeEvt *)0) {
443 else if ((QTimeEvt_timeEvtHead_[tickRate].act != (
void *)0)) {
#define Q_UNUSED_PAR(par_)
Helper macro to clearly mark unused parameters of functions.
#define QEVT_MARKER
QEvt memory marker (for internal integrity checks)
uint32_t QTimeEvtCtr
Data type to store the block-size defined based on the macro QF_TIMEEVT_CTR_SIZE.
#define Q_EVT_CAST(class_)
Perform downcast of an event onto a subclass of QEvt class_
@ Q_USER_SIG
offset for the user signals (QP Application)
#define QACTIVE_POST(me_, e_, sender_)
Invoke the direct event posting facility QActive_post_().
#define QF_CRIT_EXIT_NOP()
No-operation for exiting a critical section.
uint16_t QSignal
The signal of event QEvt.
#define QF_MAX_TICK_RATE
Maximum # clock tick rates in the system (0..15)
#define QF_MAX_ACTIVE
Maximum # Active Objects in the system (1..64)
Internal (package scope) QP/C interface.
#define QACTIVE_CAST_(ptr_)
@ QS_QF_TIMEEVT_AUTO_DISARM
a time event expired and was disarmed
@ QS_QF_TIMEEVT_DISARM
true disarming of an armed time event
@ QS_QF_TIMEEVT_REARM
rearming of a time event
@ QS_QF_TIMEEVT_POST
a time event posted itself directly to an AO
@ QS_QF_TIMEEVT_DISARM_ATTEMPT
attempt to disarm a disarmed QTimeEvt
@ QS_QF_TICK
QTimeEvt tick was called.
@ QS_QF_TIMEEVT_ARM
a time event was armed
QS/C package-scope interface.
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
#define Q_INVARIANT_INCRIT(id_, expr_)
#define Q_ENSURE_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)
Active object class (based on the QHsm implementation strategy)
uint8_t prio
QF-priority [1..QF_MAX_ACTIVE] of this AO.
QSignal sig
Signal of the event (see Event Signal)
uint8_t evtTag_
Event "tag" containing pool-ID (indicating which event pool it came from) plus event marker.
uint8_t volatile refCtr_
Reference counter (for mutable events and 0 for immutable (static) events)
struct QTimeEvt *volatile next
Link to the next time event in the list.
void *volatile act
Active object that receives the time events.
QTimeEvtCtr volatile ctr
Down-counter of the time event.
QTimeEvtCtr interval
Interval for periodic time event (zero for one-shot time event)