QP is a family of lightweight software frameworks for building responsive and modular real-time embedded applications as systems of cooperating, event-driven active objects (actors). The QP family consists of QP/C, QP/C++, and QP-nano frameworks, which are all strictly quality controlled, superbly documented, and commercially licensable.
The behavior of active objects is specified in QP by means of hierarchical state machines (UML statecharts). The frameworks support manual coding of UML state machines in C or C++ as well as automatic code generation by means of the free QM modeling tool.
All QP frameworks can run on bare-metal MCUs, completely replacing a traditional RTOS. Ports and ready-to-use examples are provided for all major CPUs, such as ARM Cortex-M, ARM7/9, MSP430, C28x, C55x, RX, AVR32, AVRMega, PIC24/dsPIC, as well as Arduino and mbed. QP/C and QP/C++ can also work with a traditional OS/RTOS, such as: POSIX (Linux, QNX), Windows, VxWorks, ThreadX, uC/OS, and FreeRTOS
- World's smallest active object (actor) frameworks for embedded microcontrollers
- Modern event-driven architecture with publish-subsrcibe and direct event posting
- Thread-safe execution of state machine objects (actors) with zero-copy event passing
- Highly maintainable and traceable mapping of UML hierarchical state machines to C or C++
- Free, QM modeling tool for drawing UML statecharts and automatic code generation based on QP
- Compliant with MISRA-C:2004 (QP/C and QP-nano) and MISRA-C++:2008 (QP/C++)
- Complete toolkit for prototyping QP applications on Windows with realistic GUI-based front panels
- Book "Practical UML Statecharts in C/C" with detailed design study of the QP framework, application notes, articles, user manuals, and blog
Thanks for Qpc, it's perfect!
Very easy to use qpc
QP and QM are wonderful tools for creating modern model driven reactive designs.
Miro does an excellent job of supporting this product. In the last couple of weeks I have submitted two requests for clarification and he has gotten back in less than a day. I encourage anyone who want to learn a new way of thinking and coding that results in better, much better, code right away consider this product.
The QP State Machine Framework should be in every embedded developer's toolkit. Virtually every embedded system is event-driven (even cyclical / periodic systems are event-driven - the event is a timer timeout!), and thus the QP can be used in a huge variety of systems, ranging from tiny low-power devices to very large distributed systems with thousands of states and objects. The QP supports FSMs and HSMs in C and C++. The active object computing model (active object = state machine + thread + message queue) is exploited to obtain ultra-efficient processing of events. Also the licensing model is very reasonable, especially when you consider what you get (including excellent & speedy support) -- a hierarchical event processor, a framework for event driven applications (memory / event pools, timers, garbage collection, zero copy event posting, broadcast & direct post, etc...) Also the QF can sit on top of any RTOS, a lean & fast preemptive kernel named QK, or even a simple non-preemtpive kernel. There's even a very small lightweight version called QP-nano that is tailored for memory & CPU-constrained systems. The best part: you spend your time focusing on identifying your system's states & events, and implementing your design in the QP, instead of writing the infrastructure ("reinventing the wheel"). In short: get the book, download the code, build the examples, and evaluate the QP for use in your system.