diff --git a/README.md b/README.md index e131f53..9784835 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +![QP-Arduino](https://www.state-machine.com/img/logo_qp-arduino.png) + This README provides a quick overview of QP for Arduino. Please refer to the companion webiste to this project at: @@ -19,7 +21,7 @@ dialog box. Once you identify the `` folder, you simply unzip the whole `qp-_arduino-1.8.x.zip` archive to this folder. ---- -# Provided Libraries and Tools +# Provided Libraries and Examples The archive `qp-_arduino-1.8.x.zip` contains two external libraries for SAM-based Arduinos: @@ -29,11 +31,16 @@ for SAM-based Arduinos: NOTE: qpn_avr is now obsolete. It is provided for backgwards compatibility only! +---- +# Provided Tools The archive also contains the QM modeling tool for Windows - `qm` -- QM modeling tool for Windows 32/64-bit +---- +# Directories and Files + After the installation, your Arduino `` folder should look as follows: @@ -45,6 +52,12 @@ as follows: | | | +-blinky/ - Blinky example | | | | +-blinky.ino - Blinky code (generated) | | | | +-blinky.qm - Blinky model (for QM tool) + | | | +-blinky_bsp/ - Blinky example with Board Support Package + | | | | +-blinky_bsp.ino - Blinky code (generated) + | | | | +-blinky_bsp.qm - Blinky model (for QM tool) + | | | +-dpp_bsp/ - Dining Philosopher example with BSP + | | | | +-dpp_bsp.ino - DPP code (generated) + | | | | +-dpp_bsp.qm - DPP model (for QM tool) | | +-src/ - QP/C++ library source code | | | +-qpcpp.h - QP/C++ library header file | | | +-... - QP/C++ library sources diff --git a/libraries/qpcpp_sam/examples/blinky/blinky.ino b/libraries/qpcpp_sam/examples/blinky/blinky.ino index 09eb980..f51d35e 100644 --- a/libraries/qpcpp_sam/examples/blinky/blinky.ino +++ b/libraries/qpcpp_sam/examples/blinky/blinky.ino @@ -3,7 +3,7 @@ // Model: blinky.qm // File: ${.::blinky.ino} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or @@ -144,8 +144,8 @@ protected: //.$enddecl${AOs::Blinky} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv //. Check for the minimum required QP version -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpcpp version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpcpp version 6.9.0 or higher required #endif //.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$define${AOs::Blinky} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv diff --git a/libraries/qpcpp_sam/examples/blinky/blinky.qm b/libraries/qpcpp_sam/examples/blinky/blinky.qm index 634dfd0..31c43ce 100644 --- a/libraries/qpcpp_sam/examples/blinky/blinky.qm +++ b/libraries/qpcpp_sam/examples/blinky/blinky.qm @@ -1,5 +1,5 @@ - + This is the simple Blinky example for the Arduino DUE board. The example demonstrates: 1. One active object class "Blinky" (inside the package "AOs") diff --git a/libraries/qpcpp_sam/examples/blinky_bsp/blinky.hpp b/libraries/qpcpp_sam/examples/blinky_bsp/blinky.hpp index 210c866..e4aaf7e 100644 --- a/libraries/qpcpp_sam/examples/blinky_bsp/blinky.hpp +++ b/libraries/qpcpp_sam/examples/blinky_bsp/blinky.hpp @@ -3,7 +3,7 @@ // Model: blinky_bsp.qm // File: ${.::blinky.hpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.ino b/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.ino index 511836d..42e2d5c 100644 --- a/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.ino +++ b/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.ino @@ -3,7 +3,7 @@ // Model: blinky_bsp.qm // File: ${.::blinky_bsp.ino} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or @@ -62,8 +62,8 @@ protected: //.$enddecl${AOs::Blinky} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv //. Check for the minimum required QP version -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpcpp version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpcpp version 6.9.0 or higher required #endif //.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$define${AOs::Blinky} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv diff --git a/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.qm b/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.qm index 934ee0f..09f3694 100644 --- a/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.qm +++ b/libraries/qpcpp_sam/examples/blinky_bsp/blinky_bsp.qm @@ -1,5 +1,5 @@ - + This is a little more advanced Blinky example for the Arduino DUE board. The example demonstrates: 1. One active object class "Blinky" (inside the package "AOs") diff --git a/libraries/qpcpp_sam/examples/blinky_bsp/bsp.cpp b/libraries/qpcpp_sam/examples/blinky_bsp/bsp.cpp index a54df68..f0ebcae 100644 --- a/libraries/qpcpp_sam/examples/blinky_bsp/bsp.cpp +++ b/libraries/qpcpp_sam/examples/blinky_bsp/bsp.cpp @@ -3,7 +3,7 @@ // Model: blinky_bsp.qm // File: ${.::bsp.cpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/blinky_bsp/bsp.hpp b/libraries/qpcpp_sam/examples/blinky_bsp/bsp.hpp index 2151386..fb74735 100644 --- a/libraries/qpcpp_sam/examples/blinky_bsp/bsp.hpp +++ b/libraries/qpcpp_sam/examples/blinky_bsp/bsp.hpp @@ -3,7 +3,7 @@ // Model: blinky_bsp.qm // File: ${.::bsp.hpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/bsp.cpp b/libraries/qpcpp_sam/examples/dpp_bsp/bsp.cpp index 9af6cb4..e486708 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/bsp.cpp +++ b/libraries/qpcpp_sam/examples/dpp_bsp/bsp.cpp @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::bsp.cpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/bsp.hpp b/libraries/qpcpp_sam/examples/dpp_bsp/bsp.hpp index 6b349ca..79bb1fa 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/bsp.hpp +++ b/libraries/qpcpp_sam/examples/dpp_bsp/bsp.hpp @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::bsp.hpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/dpp.hpp b/libraries/qpcpp_sam/examples/dpp_bsp/dpp.hpp index d973382..5224a67 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/dpp.hpp +++ b/libraries/qpcpp_sam/examples/dpp_bsp/dpp.hpp @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::dpp.hpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.ino b/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.ino index 78f54df..4d32fd8 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.ino +++ b/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.ino @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::dpp_bsp.ino} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.qm b/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.qm index 50f015d..0f7c498 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.qm +++ b/libraries/qpcpp_sam/examples/dpp_bsp/dpp_bsp.qm @@ -1,5 +1,5 @@ - + This is the Dining Philosopher Problem (DPP) example for the Arduino-DUE board. The example demonstrates: 1. Multiple active objects (5 Philosophers and 1 Table AO) diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/philo.cpp b/libraries/qpcpp_sam/examples/dpp_bsp/philo.cpp index bc3f407..fa34fed 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/philo.cpp +++ b/libraries/qpcpp_sam/examples/dpp_bsp/philo.cpp @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::philo.cpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or @@ -46,8 +46,8 @@ class Philo : public QP::QActive { // generate definition of the opaque pointer to the AO ----------------------- //.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv //. Check for the minimum required QP version -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpcpp version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpcpp version 6.9.0 or higher required #endif //.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$define${AOs::AO_Philo[N_PHILO]} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv diff --git a/libraries/qpcpp_sam/examples/dpp_bsp/table.cpp b/libraries/qpcpp_sam/examples/dpp_bsp/table.cpp index 72cce11..2000a51 100644 --- a/libraries/qpcpp_sam/examples/dpp_bsp/table.cpp +++ b/libraries/qpcpp_sam/examples/dpp_bsp/table.cpp @@ -3,7 +3,7 @@ // Model: dpp_bsp.qm // File: ${.::table.cpp} // -// This code has been generated by QM 5.1.0 . +// This code has been generated by QM 5.1.2 . // DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. // // This program is open source software: you can redistribute it and/or @@ -47,8 +47,8 @@ class Table : public QP::QActive { // generate definition of the opaque pointer to the AO ----------------------- //.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv //. Check for the minimum required QP version -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpcpp version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpcpp version 6.9.0 or higher required #endif //.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //.$define${AOs::AO_Table} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv diff --git a/libraries/qpcpp_sam/library.properties b/libraries/qpcpp_sam/library.properties index df50b29..2d967bc 100644 --- a/libraries/qpcpp_sam/library.properties +++ b/libraries/qpcpp_sam/library.properties @@ -1,5 +1,5 @@ name=QP-C++ -version=6.9.2 +version=6.9.3 author=Quantum Leaps maintainer=Quantum Leaps sentence=QP/C++ Real-Time Embedded Framework for Arduino. diff --git a/libraries/qpcpp_sam/src/qep.hpp b/libraries/qpcpp_sam/src/qep.hpp index 6e7c2da..761a29d 100644 --- a/libraries/qpcpp_sam/src/qep.hpp +++ b/libraries/qpcpp_sam/src/qep.hpp @@ -3,14 +3,14 @@ /// @ingroup qep /// @cond ///*************************************************************************** -/// Last updated for version 6.9.2 -/// Last updated on 2020-12-17 +/// Last updated for version 6.9.3 +/// Last updated on 2021-02-26 /// /// Q u a n t u m L e a P s /// ------------------------ /// Modern Embedded Software /// -/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved. +/// Copyright (C) 2005-2021 Quantum Leaps. All rights reserved. /// /// This program is open source software: you can redistribute it and/or /// modify it under the terms of the GNU General Public License as published @@ -43,15 +43,15 @@ //! The current QP version as a decimal constant XXYZ, where XX is a 2-digit // major version number, Y is a 1-digit minor version number, and Z is // a 1-digit release number. -#define QP_VERSION 692U +#define QP_VERSION 693U //! The current QP version number string of the form XX.Y.Z, where XX is // a 2-digit major version number, Y is a 1-digit minor version number, // and Z is a 1-digit release number. -#define QP_VERSION_STR "6.9.2" +#define QP_VERSION_STR "6.9.3" -//! Encrypted current QP release (6.9.2) and date (2021-01-18) -#define QP_RELEASE 0x82C286EBU +//! Encrypted current QP release (6.9.3) and date (2021-04-12) +#define QP_RELEASE 0x8295AA8AU //**************************************************************************** diff --git a/libraries/qpcpp_sam/src/qf.hpp b/libraries/qpcpp_sam/src/qf.hpp index b9c85a3..3665941 100644 --- a/libraries/qpcpp_sam/src/qf.hpp +++ b/libraries/qpcpp_sam/src/qf.hpp @@ -3,14 +3,14 @@ /// @ingroup qf /// @cond ///*************************************************************************** -/// Last updated for version 6.9.2 -/// Last updated on 2020-12-17 +/// Last updated for version 6.9.3 +/// Last updated on 2021-02-26 /// /// Q u a n t u m L e a P s /// ------------------------ /// Modern Embedded Software /// -/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved. +/// Copyright (C) 2005-2021 Quantum Leaps. All rights reserved. /// /// This program is open source software: you can redistribute it and/or /// modify it under the terms of the GNU General Public License as published @@ -536,7 +536,8 @@ class QF { #else //! Publish event to the framework. static void publish_(QEvt const * const e, - void const * const sender) noexcept; + void const * const sender, + std::uint_fast8_t const qs_id) noexcept; //! Processes all armed time events at every clock tick. static void tickX_(std::uint_fast8_t const tickRate, @@ -835,7 +836,8 @@ class QTicker : public QActive { /// unambiguously identify the publisher of the event. /// /// @sa QP::QF::publish_() - #define PUBLISH(e_, sender_) publish_((e_), (sender_)) + #define PUBLISH(e_, sender_) \ + publish_((e_), (sender_), (sender_)->getPrio()) //! Invoke the direct event posting facility QP::QActive::post_(). /// @description diff --git a/libraries/qpcpp_sam/src/qf_dyn.cpp b/libraries/qpcpp_sam/src/qf_dyn.cpp index d238f9e..66bb5e4 100644 --- a/libraries/qpcpp_sam/src/qf_dyn.cpp +++ b/libraries/qpcpp_sam/src/qf_dyn.cpp @@ -2,14 +2,14 @@ /// @brief QF/C++ dynamic event management /// @cond ///*************************************************************************** -/// Last updated for version 6.9.1 -/// Last updated on 2020-09-17 +/// Last updated for version 6.9.3 +/// Last updated on 2021-04-09 /// /// Q u a n t u m L e a P s /// ------------------------ /// Modern Embedded Software /// -/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved. +/// Copyright (C) 2005-2021 Quantum Leaps. All rights reserved. /// /// This program is open source software: you can redistribute it and/or /// modify it under the terms of the GNU General Public License as published @@ -90,7 +90,7 @@ void QF::poolInit(void * const poolSto, < static_cast(Q_DIM(QF_pool_))); // last initialized event size - std::uint_fast16_t const lastEvtSize = ((QF_maxPool_ ==0U) + std::uint_fast16_t const lastEvtSize = ((QF_maxPool_ == 0U) ? 0U : QF_EPOOL_EVENT_SIZE_(QF_pool_[QF_maxPool_ - 1U])); @@ -178,7 +178,9 @@ QEvt *QF::newX_(std::uint_fast16_t const evtSize, QS_END_PRE_() } else { - // must tolerate bad alloc. + // This assertion means that the event allocation failed, + // and this failure cannot be tolerated. The most frequent + // reason is an event leak in the application. Q_ASSERT_ID(320, margin != QF_NO_MARGIN); QS_BEGIN_PRE_(QS_QF_NEW_ATTEMPT, diff --git a/libraries/qpcpp_sam/src/qf_ps.cpp b/libraries/qpcpp_sam/src/qf_ps.cpp index ab7898f..b1ad29f 100644 --- a/libraries/qpcpp_sam/src/qf_ps.cpp +++ b/libraries/qpcpp_sam/src/qf_ps.cpp @@ -4,14 +4,14 @@ /// @ingroup qf /// @cond ///*************************************************************************** -/// Last updated for version 6.9.1 -/// Last updated on 2020-09-17 +/// Last updated for version 6.9.3 +/// Last updated on 2021-02-26 /// /// Q u a n t u m L e a P s /// ------------------------ /// Modern Embedded Software /// -/// Copyright (C) 2005-2020 Quantum Leaps. All rights reserved. +/// Copyright (C) 2005-2021 Quantum Leaps. All rights reserved. /// /// This program is open source software: you can redistribute it and/or /// modify it under the terms of the GNU General Public License as published @@ -118,7 +118,10 @@ void QF::psInit(QSubscrList * const subscrSto, #ifndef Q_SPY void QF::publish_(QEvt const * const e) noexcept { #else -void QF::publish_(QEvt const * const e, void const * const sender) noexcept { +void QF::publish_(QEvt const * const e, + void const * const sender, + std::uint_fast8_t const qs_id) noexcept +{ #endif /// @pre the published signal must be within the configured range Q_REQUIRE_ID(100, static_cast(e->sig) < QF_maxPubSignal_); @@ -126,7 +129,7 @@ void QF::publish_(QEvt const * const e, void const * const sender) noexcept { QF_CRIT_STAT_ QF_CRIT_E_(); - QS_BEGIN_NOCRIT_PRE_(QS_QF_PUBLISH, 0U) + QS_BEGIN_NOCRIT_PRE_(QS_QF_PUBLISH, qs_id) QS_TIME_PRE_(); // the timestamp QS_OBJ_PRE_(sender); // the sender object QS_SIG_PRE_(e->sig); // the signal of the event diff --git a/libraries/qpcpp_sam/src/qs.hpp b/libraries/qpcpp_sam/src/qs.hpp index e998dfd..bd066e2 100644 --- a/libraries/qpcpp_sam/src/qs.hpp +++ b/libraries/qpcpp_sam/src/qs.hpp @@ -3,8 +3,8 @@ /// @ingroup qs /// @cond ///*************************************************************************** -/// Last updated for version 6.9.2 -/// Last updated on 2021-01-14 +/// Last updated for version 6.9.3 +/// Last updated on 2021-02-26 /// /// Q u a n t u m L e a P s /// ------------------------ @@ -240,6 +240,13 @@ enum QSpyIdGroups : std::int16_t { QS_AP_IDS = 0x80 + QS_AP_ID, //!< Application-specific IDs }; +//! QS ID type for applying local filtering +struct QSpyId { + std::uint8_t m_prio; + std::uint_fast8_t getPrio(void) const noexcept { + return static_cast(m_prio); + } +}; } // namespace QP ************************************************************ diff --git a/libraries/qpn_avr/examples/blinky/blinky.ino b/libraries/qpn_avr/examples/blinky/blinky.ino index 6ea90db..8e931f3 100644 --- a/libraries/qpn_avr/examples/blinky/blinky.ino +++ b/libraries/qpn_avr/examples/blinky/blinky.ino @@ -3,7 +3,7 @@ * Model: blinky.qm * File: ${.::blinky.ino} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or @@ -114,8 +114,8 @@ Q_NORETURN Q_onAssert(char const Q_ROM * const module, int location) { // define all AO classes (state machine)... /*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*. Check for the minimum required QP version */ -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpn version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpn version 6.9.0 or higher required #endif /*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${AOs::Blinky} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ diff --git a/libraries/qpn_avr/examples/blinky/blinky.qm b/libraries/qpn_avr/examples/blinky/blinky.qm index f2a42e8..3fab2c3 100644 --- a/libraries/qpn_avr/examples/blinky/blinky.qm +++ b/libraries/qpn_avr/examples/blinky/blinky.qm @@ -1,5 +1,5 @@ - + This is the Blinky example for the Arduino-UNO board, which blinks the on-board LED (L) once per second. The example demonstrates: 1. One active object class "Blinky" (inside the package "AOs") diff --git a/libraries/qpn_avr/examples/blinky_bsp/.blinky_bsp b/libraries/qpn_avr/examples/blinky_bsp/.blinky_bsp deleted file mode 100644 index 35faa47..0000000 --- a/libraries/qpn_avr/examples/blinky_bsp/.blinky_bsp +++ /dev/null @@ -1,64 +0,0 @@ - - - GPL - - - 1 - 0 - 3 - 0 - - - 0,0,674,300 - 0,300,674,300 - 0,600,674,300 - 0,0,1067,1299,* - - - 2032128 - 0 - - - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - diff --git a/libraries/qpn_avr/examples/blinky_bsp/blinky.hpp b/libraries/qpn_avr/examples/blinky_bsp/blinky.hpp index 12d07f6..065adab 100644 --- a/libraries/qpn_avr/examples/blinky_bsp/blinky.hpp +++ b/libraries/qpn_avr/examples/blinky_bsp/blinky.hpp @@ -3,7 +3,7 @@ * Model: blinky_bsp.qm * File: ${.::blinky.hpp} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or diff --git a/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.ino b/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.ino index 06f7958..2d87f14 100644 --- a/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.ino +++ b/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.ino @@ -3,7 +3,7 @@ * Model: blinky_bsp.qm * File: ${.::blinky_bsp.ino} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or @@ -49,8 +49,8 @@ void Blinky_ctor(void) { // define all AO classes (state machine)... /*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*. Check for the minimum required QP version */ -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpn version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpn version 6.9.0 or higher required #endif /*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${AOs::Blinky} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ diff --git a/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.qm b/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.qm index 3d58b51..b1a0305 100644 --- a/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.qm +++ b/libraries/qpn_avr/examples/blinky_bsp/blinky_bsp.qm @@ -1,5 +1,5 @@ - + This is a redesign of the original Blinky example for the Arduino-UNO board, which blinks the on-board LED (L) once per second. This example demonstrates: diff --git a/libraries/qpn_avr/examples/blinky_bsp/bsp.hpp b/libraries/qpn_avr/examples/blinky_bsp/bsp.hpp index e4319aa..4d97cf2 100644 --- a/libraries/qpn_avr/examples/blinky_bsp/bsp.hpp +++ b/libraries/qpn_avr/examples/blinky_bsp/bsp.hpp @@ -3,7 +3,7 @@ * Model: blinky_bsp.qm * File: ${.::bsp.hpp} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or diff --git a/libraries/qpn_avr/examples/blinky_bsp/bsp_uno.cpp b/libraries/qpn_avr/examples/blinky_bsp/bsp_uno.cpp index 7e367dc..e4adc9f 100644 --- a/libraries/qpn_avr/examples/blinky_bsp/bsp_uno.cpp +++ b/libraries/qpn_avr/examples/blinky_bsp/bsp_uno.cpp @@ -3,7 +3,7 @@ * Model: blinky_bsp.qm * File: ${.::bsp_uno.cpp} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or diff --git a/libraries/qpn_avr/examples/dpp/dpp.ino b/libraries/qpn_avr/examples/dpp/dpp.ino index 196e706..7397263 100644 --- a/libraries/qpn_avr/examples/dpp/dpp.ino +++ b/libraries/qpn_avr/examples/dpp/dpp.ino @@ -3,7 +3,7 @@ * Model: dpp.qm * File: ${.::dpp.ino} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or @@ -210,8 +210,8 @@ Q_NORETURN Q_onAssert(char const Q_ROM * const module, int location) { // define all AO classes... /*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*. Check for the minimum required QP version */ -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpn version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpn version 6.9.0 or higher required #endif /*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${AOs::Philo} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ diff --git a/libraries/qpn_avr/examples/dpp/dpp.qm b/libraries/qpn_avr/examples/dpp/dpp.qm index 8af3157..b64914b 100644 --- a/libraries/qpn_avr/examples/dpp/dpp.qm +++ b/libraries/qpn_avr/examples/dpp/dpp.qm @@ -1,5 +1,5 @@ - + This is the Dining Philosopher Problem (DPP) example for the Arduino-UNO board. The example demonstrates: 1. Multiple active objects (5 Philosophers and 1 Table AO) diff --git a/libraries/qpn_avr/examples/pelican/pelican.ino b/libraries/qpn_avr/examples/pelican/pelican.ino index 6965519..aa0308c 100644 --- a/libraries/qpn_avr/examples/pelican/pelican.ino +++ b/libraries/qpn_avr/examples/pelican/pelican.ino @@ -3,7 +3,7 @@ * Model: pelican.qm * File: ${.::pelican.ino} * -* This code has been generated by QM 5.1.0 . +* This code has been generated by QM 5.1.2 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This program is open source software: you can redistribute it and/or @@ -206,8 +206,8 @@ Q_NORETURN Q_onAssert(char const Q_ROM * const module, int location) { // define all AO classes (state machines)... /*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*. Check for the minimum required QP version */ -#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) -#error qpn version 6.8.0 or higher required +#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) +#error qpn version 6.9.0 or higher required #endif /*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${AOs::Pelican} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ diff --git a/libraries/qpn_avr/examples/pelican/pelican.qm b/libraries/qpn_avr/examples/pelican/pelican.qm index 7ae35cb..b51c76f 100644 --- a/libraries/qpn_avr/examples/pelican/pelican.qm +++ b/libraries/qpn_avr/examples/pelican/pelican.qm @@ -1,5 +1,5 @@ - + This is the PEdestrian LIght CONtrolled (PELICAN) crossing example for the Arduino-UNO board. The example demonstrates: 1. One active object class "Pelican" (inside the package "AOs") diff --git a/libraries/qpn_avr/library.properties b/libraries/qpn_avr/library.properties index ac99cb9..7df6996 100644 --- a/libraries/qpn_avr/library.properties +++ b/libraries/qpn_avr/library.properties @@ -1,5 +1,5 @@ name=QP-nano -version=6.8.1 +version=6.9.0 author=Quantum Leaps maintainer=Quantum Leaps sentence=QP-nano Real-Time Embedded Framework for Arduino. diff --git a/libraries/qpn_avr/src/qepn.h b/libraries/qpn_avr/src/qepn.h index 9c1ec5b..99cdd0f 100644 --- a/libraries/qpn_avr/src/qepn.h +++ b/libraries/qpn_avr/src/qepn.h @@ -4,8 +4,8 @@ * @ingroup qepn * @cond ****************************************************************************** -* Last updated for version 6.8.1 -* Last updated on 2020-04-02 +* Last updated for version 6.9.0 +* Last updated on 2020-08-21 * * Q u a n t u m L e a P s * ------------------------ @@ -45,16 +45,16 @@ * major version number, Y is a 1-digit minor version number, and Z is * a 1-digit release number. */ -#define QP_VERSION 681U +#define QP_VERSION 690U /*! The current QP version number string of the form XX.Y.Z, where XX is * a 2-digit major version number, Y is a 1-digit minor version number, * and Z is a 1-digit release number. */ -#define QP_VERSION_STR "6.8.1" +#define QP_VERSION_STR "6.9.0" -/*! Encrypted current QP release (6.8.1) and date (2020-04-04) */ -#define QP_RELEASE 0x888CC416U +/*! Encrypted current QP release (6.9.0) and date (2020-08-21) */ +#define QP_RELEASE 0x884D22FDU /****************************************************************************/ @@ -93,7 +93,7 @@ typedef double float64_t; typedef uint8_t QSignal; #ifndef Q_PARAM_SIZE - /*! The size of event parameter Valid values 0, 1, 2, or 4; default 0 */ + /*! The size of event parameter Valid values 0, 1, 2, 4 or 8; default 0 */ #define Q_PARAM_SIZE 0U #endif #if (Q_PARAM_SIZE == 0U) diff --git a/libraries/qpn_avr/src/qfn_port.h b/libraries/qpn_avr/src/qfn_port.h index 4531228..bd5a9ed 100644 --- a/libraries/qpn_avr/src/qfn_port.h +++ b/libraries/qpn_avr/src/qfn_port.h @@ -3,8 +3,8 @@ * @brief QF-nano port AVR ATmega, QV-nano kernel, GNU-AVR toolset, Arduino * @cond ****************************************************************************** -* Last Updated for Version: 6.8.1a -* Date of the Last Update: 2021-01-29 +* Last Updated for Version: 6.8.2 +* Date of the Last Update: 2021-07-07 * * Q u a n t u m L e a P s * ------------------------ diff --git a/logo_qp-arduino.png b/logo_qp-arduino.png new file mode 100644 index 0000000..807133d Binary files /dev/null and b/logo_qp-arduino.png differ