QP/C++ Framework supports compile-time configuration through the following mechanisms:
QP/C++ Framework supports Active Objects through the following base classes.
QP::QActive class (derived from QP::QAsm)
QP::QMActive class (derived from QP::QActive)
Publish-Subscribe
QP/C++ Framework supports events, through the following bases classes:
QP::QEvt class (see also Event Management and Time Management) QP::QEvt class
constexpr
constructor for immutable eventsQP/C++ Framework supports event-driven, hierarchical state machines through the following bases classes:
QP::QAsm class
QP::QHsm class (derived from QP::QAsm)
QP::QMsm class (derived from QP::QAsm)
QP::QMPool class (memory pool, also used for mutable events)
QP::QTimeEvt class (derived from QP::QEvt)
QTicker active object (derived from QTimeEvt)
QP::QEQueue class
QS is a software tracing system that enables developers to monitor live event-driven QP Applications with minimal target system resources and without stopping or significantly slowing down the code. QS is an ideal tool for testing, troubleshooting, and optimizing QP Applications. QS can even be used to support acceptance testing in product manufacturing.
QS Filters
QS Dictionaries
QS Application-Specific Records
QV is a simple non-preemptive kernel, which executes Active Objects one at a time, with priority-based scheduling performed before processing of each event. Due to naturally short duration of event processing in state machines, the simple QV kernel is often adequate for many real-time systems.
QK is a lightweight preemptive, priority-based, run-to-completion (RTC) kernel designed specifically for executing event-driven active objects.
QK Interrupt Management
QXK is a lightweight, preemptive, priority-based, dual-mode (run-to-completion/blocking) kernel that executes active objects like the QK kernel, but can also execute traditional blocking threads (extended threads). In this respect, QXK behaves exactly as a conventional RTOS (Real-Time Operating System). QXK has been designed specifically for mixing event-driven active objects with traditional blocking code, such as commercial middleware (TCP/IP stacks, UDP stacks, embedded file systems, etc.) or legacy software.
QXK Interrupt Management
QXThread class
QXThread Message Queues
QXSemaphore class
QXMutex class
QMPool class