50 #include "qs_port.hpp"
53 #include "qs_dummy.hpp"
58 #error "Source file included in a project NOT based on the QV kernel"
69#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
70#error qpcpp version 6.9.0 or higher required
109 std::uint_fast8_t pprev = 0U;
145 QEvt
const *
const e = a->get_();
146 a->dispatch(e, a->m_prio);
150 if (a->m_eQueue.isEmpty()) {
192 std::uint_fast8_t
const prio,
193 QEvt
const * *
const qSto,
194 std::uint_fast16_t
const qLen,
196 std::uint_fast16_t
const stkSize,
197 void const *
const par)
206 && (stkSto ==
nullptr));
208 m_eQueue.init(qSto, qLen);
209 m_prio =
static_cast<std::uint8_t
>(prio);
std::uint8_t m_prio
QF priority (1..QF_MAX_ACTIVE) of this active object.
static enum_t maxPubSignal_
The maximum published signal (the size of the subscrList_ array)
static QActive * registry_[QF_MAX_ACTIVE+1U]
Internal array of registered active objects.
void register_() noexcept
Register this active object to be managed by the framework.
virtual void start(std::uint_fast8_t const prio, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize, void const *const par)
Starts execution of an active object and registers the object with the framework.
static QSubscrList * subscrList_
pointer to the array of all subscriber AOs for a given event signal
virtual void init(void const *const e, std::uint_fast8_t const qs_id)
Executes the top-most initial transition in QP::QHsm.
std::uint_fast8_t findMax() const noexcept
Find the maximum element in the set, returns zero if the set is empty.
void rmove(std::uint_fast8_t const n) noexcept
Remove element n from the set (n = 1U..64U)
bool notEmpty() const noexcept
Return 'true' if the priority set is NOT empty.
static QTimeEvt timeEvtHead_[QF_MAX_TICK_RATE]
heads of linked lists of time events, one for every clock tick rate
#define QF_MAX_ACTIVE
The maximum number of active objects in the application.
#define QF_INT_DISABLE()
Define the interrupt disabling policy.
#define QF_INT_ENABLE()
Define the interrupt enabling policy.
void init()
QF initialization.
std::uint_fast8_t maxPool_
number of initialized event pools
QPSet readySet_
"Ready-set" of all threads used in the built-in kernels
void onCleanup()
Cleanup QF callback (defined in applications/ports)
void gc(QEvt const *const e) noexcept
Recycle a dynamic event.
void stop()
Function invoked by the application layer to stop the QF application and return control to the OS/Ker...
int_t run()
Transfers control to QF to run the application.
void bzero(void *const start, std::uint_fast16_t const len) noexcept
Clear a specified region of memory to zero.
void onStartup()
Startup QF callback (defined in applications/ports)
void onIdle()
QV idle callback (customized in BSPs for QV)
@ QS_QF_RUN
QF_run() was entered.
@ QS_SCHED_IDLE
scheduler became idle
@ QS_SCHED_NEXT
scheduler found next task to execute
Customizable and memory-efficient Design by Contract (DbC) for embedded systems.
#define Q_DEFINE_THIS_MODULE(name_)
#define Q_REQUIRE_ID(id_, expr_)
#define Q_UNUSED_PAR(par_)
Helper macro to clearly mark unused parameters of functions.
Internal (package scope) QF/C++ interface.
#define QS_TIME_PRE_()
Output time stamp to a QS record (used in predefined and application-specific trace records)
#define QS_FLUSH()
Flush the QS trace data to the host.
Internal (package scope) QS/C++ interface.
#define QS_U8_PRE_(data_)
Internal QS macro to output an unformatted uint8_t data element.
#define QS_BEGIN_NOCRIT_PRE_(rec_, qs_id_)
Internal QS macro to begin a predefined QS record without critical section.
#define QS_END_NOCRIT_PRE_()
Internal QS macro to end a predefiend QS record without critical section.
#define QS_2U8_PRE_(data1_, data2_)
Internal QS macro to output 2 unformatted uint8_t data elements.