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
QP/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/C++ 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/C++ 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
QP::QXThread class
QXThread Message Queues
QP::QXSemaphore class
QP::QXMutex class
QP::QMPool class