41 #include "qf_port.hpp"
53 #error "Source file included in a project NOT based on the QV kernel"
168 QEvt
const *
const e = a->get_();
169 a->dispatch(e, a->m_prio);
174 if (a->m_eQueue.isEmpty()) {
225 void const *
const par)
227 static_cast<void>(stkSize);
234 && (stkSto ==
nullptr));
236 m_eQueue.init(qSto, qLen);
241 this->
init(par, m_prio);
unsigned int uint_fast16_t
fast at-least 16-bit unsigned int
unsigned char uint8_t
exact-width 8-bit unsigned int
unsigned int uint_fast8_t
fast at-least 8-bit unsigned int
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 void onStartup(void)
Startup QF callback.
static void init(void)
QF initialization.
static void onCleanup(void)
Cleanup QF callback.
static int_t run(void)
Transfers control to QF to run the application.
static QTimeEvt timeEvtHead_[QF_MAX_TICK_RATE]
heads of linked lists of time events, one for every clock tick rate
static void gc(QEvt const *const e) noexcept
Recycle a dynamic event.
static void bzero(void *const start, std::uint_fast16_t const len) noexcept
Clear a specified region of memory to zero.
static void add_(QActive *const a) noexcept
Register an active object to be managed by the framework.
static void stop(void)
Function invoked by the application layer to stop the QF application and return control to the OS/Ker...
static QActive * active_[QF_MAX_ACTIVE+1U]
array of registered active objects
static void onIdle(void)
QV idle callback (customized in BSPs for QK)
namespace associated with the QP/C++ framework
@ QS_QF_RUN
QF_run() was entered.
@ QS_SCHED_IDLE
scheduler became idle
@ QS_SCHED_NEXT
scheduler found next task to execute
enum_t QF_maxPubSignal_
the maximum published signal
std::uint_fast8_t QF_maxPool_
QSubscrList * QF_subscrList_
the subscriber list array
Customizable and memory-efficient assertions for embedded systems.
#define Q_DEFINE_THIS_MODULE(name_)
Define the user-specified module name for assertions in this file.
int int_t
typedef for assertions-ids and line numbers in assertions.
#define Q_REQUIRE_ID(id_, test_)
Assertion for checking preconditions with user-specified assertion-id.
Internal (package scope) QF/C++ interface.
#define QS_FLUSH()
Flush the QS trace data to the host.
Dummy definitions of the QS macros that avoid code generation from the QS instrumentation.
#define QS_U8_PRE_(data_)
#define QS_BEGIN_NOCRIT_PRE_(rec_, qs_id_)
#define QS_END_NOCRIT_PRE_()
#define QS_2U8_PRE_(data1_, data2_)
Internal (package scope) QS/C++ interface.
QS/C++ port to a 32-bit CPU, generic compiler.
#define QF_MAX_ACTIVE
The maximum number of active objects in the application.
Priority Set of up to 32 elements */.
void rmove(std::uint_fast8_t const n) noexcept
remove element n from the set, n = 1..QF_MAX_ACTIVE
bool notEmpty(void) const noexcept
Evaluates to true if the priority set is not empty.
std::uint_fast8_t findMax(void) const noexcept