51 #include "qs_dummy.hpp"
56Q_DEFINE_THIS_MODULE(
"qf_ps")
61#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
62#error qpcpp version 7.3.0 or higher required
86 enum_t const maxSignal)
noexcept
88 subscrList_ = subscrSto;
89 maxPubSignal_ = maxSignal;
92 for (
enum_t sig = 0; sig < maxSignal; ++sig) {
93 subscrSto[sig].m_set.setEmpty();
95 subscrSto[sig].m_set.update_(&subscrSto[sig].m_set_dis);
108 QEvt const *
const e,
109 void const *
const sender,
110 std::uint_fast8_t
const qsId)
noexcept
125 subscrList_[sig].m_set.verify_(&subscrList_[sig].m_set_dis));
131 QS_2U8_PRE_(e->getPoolNum_(), e->refCtr_);
135 if (e->getPoolNum_() != 0U) {
146 QPSet subscrSet = subscrList_[sig].m_set;
153 std::uint_fast8_t p = subscrSet.
findMax();
191 }
while ((p != 0U) && (limit > 0U));
203 #if (QF_MAX_EPOOL > 0U)
216 std::uint_fast8_t
const p =
static_cast<std::uint_fast8_t
>(m_prio);
223 && (sig < maxPubSignal_)
225 && (registry_[p] ==
this));
227 subscrList_[sig].m_set.verify_(&subscrList_[sig].m_set_dis));
236 subscrList_[sig].m_set.insert(p);
238 subscrList_[sig].m_set.update_(&subscrList_[sig].m_set_dis);
253 std::uint_fast8_t
const p =
static_cast<std::uint_fast8_t
>(m_prio);
260 && (sig < maxPubSignal_)
262 && (registry_[p] ==
this));
264 subscrList_[sig].m_set.verify_(&subscrList_[sig].m_set_dis));
273 subscrList_[sig].m_set.remove(p);
275 subscrList_[sig].m_set.update_(&subscrList_[sig].m_set_dis);
294 std::uint_fast8_t
const p =
static_cast<std::uint_fast8_t
>(
m_prio);
Active object class (based on the QHsm implementation strategy)
void unsubscribeAll() const noexcept
static QSubscrList * subscrList_
static enum_t maxPubSignal_
void subscribe(enum_t const sig) const noexcept
static void publish_(QEvt const *const e, void const *const sender, std::uint_fast8_t const qsId) noexcept
void unsubscribe(enum_t const sig) const noexcept
static QActive * registry_[QF_MAX_ACTIVE+1U]
static void psInit(QSubscrList *const subscrSto, enum_t const maxSignal) noexcept
Set of Active Objects of up to QF_MAX_ACTIVE elements.
void update_(QPSet *const dis) const noexcept
void remove(std::uint_fast8_t const n) noexcept
std::uint_fast8_t findMax() const noexcept
bool notEmpty() const noexcept
Subscriber List (for publish-subscribe)
void gc(QEvt const *const e) noexcept
constexpr enum_t Q_USER_SIG
void QEvt_refCtr_inc_(QEvt const *const e) noexcept
@ QS_QF_ACTIVE_UNSUBSCRIBE
an AO unsubscribed to an event
@ QS_QF_ACTIVE_SUBSCRIBE
an AO subscribed to an event
@ QS_QF_PUBLISH
an event was published to active objects
#define QF_SCHED_LOCK_(ceil_)
#define QF_SCHED_UNLOCK_()
#define Q_UNUSED_PAR(par_)
#define QF_CRIT_EXIT_NOP()
Internal (package scope) QP/C++ interface.
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_ENSURE_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)