From f40f0bab459895eaa8338636811247eb6e99ad5c Mon Sep 17 00:00:00 2001 From: QL Date: Tue, 30 Apr 2019 10:10:12 -0400 Subject: [PATCH] 6.5.0 --- doxygen/main.dox | 20 +++--- doxygen/metrics.dox | 2 +- examples/arm-cm/game_efm32-slstk3401a/game.qm | 8 ++- .../arm-cm/game_efm32-slstk3401a/ship.cpp | 6 +- examples/qt/dpp-gui/.dpp | 61 ------------------- examples/workstation/blinky/blinky.qm | 18 +++--- 6 files changed, 31 insertions(+), 84 deletions(-) delete mode 100644 examples/qt/dpp-gui/.dpp diff --git a/doxygen/main.dox b/doxygen/main.dox index e69f9365..6f8664e4 100644 --- a/doxygen/main.dox +++ b/doxygen/main.dox @@ -8,9 +8,9 @@ To check what's new in QP/C++, please see @ref history "QP/C++ Revision History" ------------------------------------------------------------------------------ @section ab_about What is it? -QP/C++™ (Quantum Platform in C++) is a lightweight Real-Time Embedded Framework (RTEF) for building modern, responsive and modular real-time embedded applications as systems of asynchronous event-driven active objects (actors). The QP/C++™ framework is a member of a larger family consisting of QP/C++, QP/C, and QP-nano frameworks, which are all strictly quality controlled, thoroughly documented, and available under @ref licensing "dual licensing model". +QP/C++™ (Quantum Platform in C++) is a lightweight Real-Time Embedded Framework (RTEF) for building modern, responsive and modular real-time embedded applications as systems of asynchronous event-driven active objects (actors). QP/C++™ is a member of a larger family of real-time embedded frameworks (RTEFs) consisting of QP/C++, QP/C, and QP-nano frameworks, which are all strictly quality controlled, thoroughly documented, and available under @ref licensing "dual licensing model". -The behavior of active objects is specified in QP/C++ by means of hierarchical state machines (UML statecharts). The framework supports manual coding of UML state machines in C as well as automatic code generation by means of the free QM™ modeling tool. +The behavior of active objects is specified in QP/C++ by means of hierarchical state machines (UML statecharts). The framework supports @ref sm "manual coding of UML state machines in C++" as well as automatic code generation by means of the free QM™ model-based design tool. @attention To use QP/C++™ effectively, you need to understand the key concepts that underline the architecture of the framework and your applications based on the framework. @@ -26,19 +26,19 @@ To use QP/C++™ effectively, you need to understand the active objects (actors), which is _safer_ and easier to understand than "free-threading" with a traditional RTOS. -- to provide a simple-to-use coding techniques for hierarchical state machines, with which to implement the behavior of active objects. +- to provide a simple-to-use coding techniques for @ref sm "hierarchical state machines", with which to implement the behavior of active objects. - to provide efficient and thread-safe event-driven mechanisms for active objects to communicate, such as direct event passing and publish-subscribe. - to provide event-driven timing services (time events). - to provide a selection of built-in real-time kernels to run the QP applications, such as the cooperative @ref qv "QV kernel", the preemptive non-blocking @ref qk "QK kernel", and the preemptive blocking @ref qxk "QXK kernel". - to provide testing support for applications based on software tracing (@ref qs "Q-Spy"). -- to provide portability layer and ready-to-use ports to @ref ports_rtos "3rd-party RTOSes" and desktop operating systems such as @ref posix "Linux" and @ref win32 "Windows". -- to provide a target for modeling and automatic code generation from the QM modeling tool. +- to provide portability layer and ready-to-use ports to @ref ports_rtos "3rd-party RTOSes" and desktop operating systems such as @ref win32 "Windows", @ref posix "Linux" and @ref macos "macOS". +- to provide a target for modeling and automatic code generation from the QM™ model-based design (MBD) tool. ------------------------------------------------------------------------------ @section ab_special What's special about it? -The QP/C++™ Real-Time Embedded Framework (RTEF) is a unique offering on the embedded software market. It provides a modern, reusable **architecture** of embedded applications, which combines object-orientation with the particular model of concurrency, known as active objects (actors). This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the right abstractions to effectively apply modeling and code generation to deeply embedded systems. +The QP/C++™ Real-Time Embedded Framework (RTEF) is a unique offering on the embedded software market. It provides a modern, reusable **architecture** of embedded applications, which combines object-orientation and @ref sm "hierarchical state machines" with the particular model of concurrency, known as active objects (actors). This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the right abstractions to effectively apply modeling and code generation to deeply embedded systems.
@@ -48,16 +48,16 @@ QP/C++™ is fundamentally an **object-oriented** framework, which means tha
@subsection lightweight Lightweight -The most unique characteristic of the QP/C++™ framework is its very small footprint, especially in RAM. In this respect, QP/C++™ requires less resources than even the smallest conventional Real-Time Operating System (RTOS) kernel. At the same time, QP gives you a much higher level of abstraction than a conventional RTOS. With QP, you work at the level of active objects, state machines and events, as opposed to "naked" threads of an RTOS. +The most unique characteristic of the QP/C++™ framework is its very small footprint, especially in RAM. In this respect, QP/C++™ requires less resources than even the smallest conventional Real-Time Operating System (RTOS) kernel. At the same time, QP/C++ gives you a much higher level of abstraction than a conventional RTOS. With QP, you work at the level of active objects, state machines and events, as opposed to "naked" threads of an RTOS.
@subsection hsms Hierarchical State Machines -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 fully automatic code generation by means of the free graphical QM™ modeling tool. +The behavior of active objects is specified in QP/C++ by means of +hierarchical state machines (UML statecharts). The framework supports @ref sm "manual coding of UML state machines in C++" as well as fully automatic code generation by means of the free graphical QM™ model-based design (MBD) tool. @remarks -State machines can be an incredibly powerful technique, but they require an event-driven **infrastructure** (framework) that provides, at a minimum: a run-to-completion (RTC) execution context for each state machine, queuing of events, and event-based timing services. This is really the pivotal point. Without an event-driven framewok (like QP/C++), state machines are like cars without an infrastructure of roads. +State machines can be an incredibly powerful technique, but they require an event-driven **infrastructure** (framework) that provides, at a minimum: a run-to-completion (RTC) execution context for each state machine, queuing of events, and event-based timing services. This is really the pivotal point. Without an event-driven framework (like QP/C++), state machines are like cars without an infrastructure of roads.
diff --git a/doxygen/metrics.dox b/doxygen/metrics.dox index a881c746..60918d80 100644 --- a/doxygen/metrics.dox +++ b/doxygen/metrics.dox @@ -9,7 +9,7 @@ License Type: Windows Single User License Licensed To : Quantum Leaps, LLC License No. : WS2975 License Date: Dec 15, 2013 - Build Date : Sep 2 2009 Run Date: Apr 11, 2019 + Build Date : Sep 2 2009 Run Date: Apr 25, 2019 (C)1996-2009 M Squared Technologies LLC ________________________________________________________________________ diff --git a/examples/arm-cm/game_efm32-slstk3401a/game.qm b/examples/arm-cm/game_efm32-slstk3401a/game.qm index 15a098ee..f45138f6 100644 --- a/examples/arm-cm/game_efm32-slstk3401a/game.qm +++ b/examples/arm-cm/game_efm32-slstk3401a/game.qm @@ -530,10 +530,14 @@ QS_SIG_DICTIONARY(DESTROYED_MINE_SIG, this); - m_score = 0U; /* reset the score */ + m_score = 0U; // reset the score ScoreEvt *sev = Q_NEW(ScoreEvt, SCORE_SIG); sev->score = m_score; -AO_Tunnel->POST(sev, this); +AO_Tunnel->POST(sev, this); + +// lauch the ship from the initial position +m_x = GAME_SHIP_X; +m_y = (GAME_SHIP_Y << 2); if (BSP_isThrottle()) { if (m_y > 0U) { diff --git a/examples/arm-cm/game_efm32-slstk3401a/ship.cpp b/examples/arm-cm/game_efm32-slstk3401a/ship.cpp index ab896c7c..42c0d5ce 100644 --- a/examples/arm-cm/game_efm32-slstk3401a/ship.cpp +++ b/examples/arm-cm/game_efm32-slstk3401a/ship.cpp @@ -148,10 +148,14 @@ Q_STATE_DEF(Ship, flying) { switch (e->sig) { //${AOs::Ship::SM::active::flying} case Q_ENTRY_SIG: { - m_score = 0U; /* reset the score */ + m_score = 0U; // reset the score ScoreEvt *sev = Q_NEW(ScoreEvt, SCORE_SIG); sev->score = m_score; AO_Tunnel->POST(sev, this); + + // lauch the ship from the initial position + m_x = GAME_SHIP_X; + m_y = (GAME_SHIP_Y << 2); status_ = Q_RET_HANDLED; break; } diff --git a/examples/qt/dpp-gui/.dpp b/examples/qt/dpp-gui/.dpp deleted file mode 100644 index 8b37fb5e..00000000 --- a/examples/qt/dpp-gui/.dpp +++ /dev/null @@ -1,61 +0,0 @@ - - - GPL - - - 1 - 0 - 3 - 0 - - - 0,0,557,470,* - - - 2033156 - 1 - - - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - diff --git a/examples/workstation/blinky/blinky.qm b/examples/workstation/blinky/blinky.qm index f89c534f..9cf32b97 100644 --- a/examples/workstation/blinky/blinky.qm +++ b/examples/workstation/blinky/blinky.qm @@ -10,35 +10,35 @@ - (void)e; // unused parameter -m_timeEvt.armX(BSP_TICKS_PER_SEC/2, BSP_TICKS_PER_SEC/2); - - + m_timeEvt.armX(BSP_TICKS_PER_SEC/2, BSP_TICKS_PER_SEC/2); +(void)e; // unused parameter + + BSP_ledOff(); - + - + BSP_ledOn(); - + - + - +