51 #include "qs_dummy.hpp"
57Q_DEFINE_THIS_MODULE(
"qf_actq")
62#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
63#error qpcpp version 7.3.0 or higher required
73 std::uint_fast16_t
const margin,
74 void const *
const sender)
noexcept
83 return static_cast<QActiveDummy *
>(
this)->fakePost(e, margin, sender);
93 std::uint8_t
const pcopy =
static_cast<std::uint8_t
>(~m_prio_dis);
115 else if (nFree >
static_cast<QEQueueCtr>(margin)) {
123 if (e->getPoolNum_() != 0U) {
130 m_eQueue.m_nFree = nFree;
131 if (m_eQueue.m_nMin > nFree) {
132 m_eQueue.m_nMin = nFree;
140 QS_2U8_PRE_(e->getPoolNum_(), e->refCtr_);
142 QS_EQC_PRE_(m_eQueue.m_nMin);
154 if (m_eQueue.m_frontEvt ==
nullptr) {
155 m_eQueue.m_frontEvt = e;
170 m_eQueue.m_ring[m_eQueue.m_head] = e;
172 if (m_eQueue.m_head == 0U) {
173 m_eQueue.m_head = m_eQueue.m_end;
176 m_eQueue.m_head = (m_eQueue.m_head - 1U);
189 QS_2U8_PRE_(e->getPoolNum_(), e->refCtr_);
206 #if (QF_MAX_EPOOL > 0U)
236 std::uint8_t
const pcopy =
static_cast<std::uint8_t
>(~m_prio_dis);
254 if (e->getPoolNum_() != 0U) {
259 m_eQueue.m_nFree = nFree;
260 if (m_eQueue.m_nMin > nFree) {
261 m_eQueue.m_nMin = nFree;
268 QS_2U8_PRE_(e->getPoolNum_(), e->refCtr_);
270 QS_EQC_PRE_(m_eQueue.m_nMin);
282 QEvt const *
const frontEvt = m_eQueue.m_frontEvt;
283 m_eQueue.m_frontEvt = e;
285 if (frontEvt ==
nullptr) {
289 m_eQueue.m_tail = (m_eQueue.m_tail + 1U);
290 if (m_eQueue.m_tail == m_eQueue.m_end) {
291 m_eQueue.m_tail = 0U;
294 m_eQueue.m_ring[m_eQueue.m_tail] = frontEvt;
369 m_eQueue.m_head =
static_cast<QEQueueCtr>(tickRate);
374 void const *
const e,
375 std::uint_fast8_t
const qsId)
392 QEvt const *
const e,
393 std::uint_fast8_t
const qsId)
408 for (; nTicks > 0U; --nTicks) {
424 if (m_eQueue.m_frontEvt ==
nullptr) {
426 static QEvt const tickEvt(0U);
428 m_eQueue.m_frontEvt = &tickEvt;
429 m_eQueue.m_nFree = (m_eQueue.m_nFree - 1U);
435 m_eQueue.m_tail = (m_eQueue.m_tail + 1U);
Dummy Active Object for testing.
void fakePostLIFO(QEvt const *const e) noexcept
Active object class (based on the QHsm implementation strategy)
QEvt const * get_() noexcept
QACTIVE_EQUEUE_TYPE m_eQueue
void postLIFO(QEvt const *const e) noexcept
bool post_(QEvt const *const e, std::uint_fast16_t const margin, void const *const sender) noexcept
std::uint_fast8_t getPoolNum_() const noexcept
std::uint8_t volatile refCtr_
static bool verify_(QEvt const *const e) noexcept
void dispatch(QEvt const *const e, std::uint_fast8_t const qsId) override
void init(void const *const e, std::uint_fast8_t const qsId) override
void trig_(void const *const sender) noexcept
static void tick(std::uint_fast8_t const tickRate, void const *const sender) noexcept
constexpr std::uint_fast16_t NO_MARGIN
void gc(QEvt const *const e) noexcept
void onTestPost(void const *sender, QActive *recipient, QEvt const *e, bool status)
void QEvt_refCtr_inc_(QEvt const *const e) noexcept
@ QS_QF_ACTIVE_GET_LAST
AO got an event and its queue is empty.
@ QS_QF_ACTIVE_POST_ATTEMPT
attempt to post an evt to AO failed
@ 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
an event was posted (FIFO) directly to AO
#define QACTIVE_EQUEUE_SIGNAL_(me_)
#define QACTIVE_EQUEUE_WAIT_(me_)
#define Q_UNUSED_PAR(par_)
#define Q_STATE_CAST(handler_)
Internal (package scope) QP/C++ interface.
#define Q_ACTION_CAST(act_)
#define QS_TEST_PROBE_DEF(fun_)
#define QS_TEST_PROBE_ID(id_, code_)
#define QS_LOC_CHECK_(qsId_)
QS/C++ package-scope interface.
QS/C++ port to a 32-bit CPU, generic C++ compiler.
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)
#define Q_ERROR_INCRIT(id_)
#define QXTHREAD_EQUEUE_SIGNAL_(me_)