mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-01-28 06:02:56 +08:00
6.8.1
This commit is contained in:
parent
d1b7c05520
commit
db2a7c8de9
4
3rd_party/README.txt
vendored
4
3rd_party/README.txt
vendored
@ -61,6 +61,6 @@ LOSSES.
|
|||||||
Contact Information:
|
Contact Information:
|
||||||
====================
|
====================
|
||||||
Quantum Leaps, LLC
|
Quantum Leaps, LLC
|
||||||
Web: www.state-machine.com
|
https://www.state-machine.com
|
||||||
Email: info@state-machine.com
|
info@state-machine.com
|
||||||
|
|
6
3rd_party/efm32pg1b/gnu/startup_efm32pg1b.c
vendored
6
3rd_party/efm32pg1b/gnu/startup_efm32pg1b.c
vendored
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -281,7 +283,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
6
3rd_party/ek-lm3s6965/gnu/startup_LM3S6965.c
vendored
6
3rd_party/ek-lm3s6965/gnu/startup_LM3S6965.c
vendored
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -314,7 +316,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -471,7 +473,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
6
3rd_party/mbed-lpc1768/gnu/startup_LPC17xx.c
vendored
6
3rd_party/mbed-lpc1768/gnu/startup_LPC17xx.c
vendored
@ -53,12 +53,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -294,7 +296,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -512,7 +514,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -284,7 +286,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -284,7 +286,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -339,7 +341,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -389,7 +391,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -54,12 +54,14 @@ extern int __stack_end__;
|
|||||||
* assembly to avoid accessing the stack, which might be corrupted by
|
* assembly to avoid accessing the stack, which might be corrupted by
|
||||||
* the time assert_failed is called.
|
* the time assert_failed is called.
|
||||||
*/
|
*/
|
||||||
__attribute__ ((naked)) void assert_failed(char const *module, int loc);
|
__attribute__ ((naked, noreturn))
|
||||||
|
void assert_failed(char const *module, int loc);
|
||||||
|
|
||||||
/* Function prototypes -----------------------------------------------------*/
|
/* Function prototypes -----------------------------------------------------*/
|
||||||
void Default_Handler(void); /* Default empty handler */
|
void Default_Handler(void); /* Default empty handler */
|
||||||
void Reset_Handler(void); /* Reset Handler */
|
void Reset_Handler(void); /* Reset Handler */
|
||||||
void SystemInit(void); /* CMSIS system initialization */
|
void SystemInit(void); /* CMSIS system initialization */
|
||||||
|
__attribute__ ((noreturn))
|
||||||
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
void Q_onAssert(char const *module, int loc); /* QP assertion handler */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
@ -420,7 +422,7 @@ void Default_Handler(void) {
|
|||||||
*
|
*
|
||||||
* NOTE: the function Q_onAssert should NOT return.
|
* NOTE: the function Q_onAssert should NOT return.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
__attribute__ ((naked))
|
__attribute__ ((naked, noreturn))
|
||||||
void assert_failed(char const *module, int loc) {
|
void assert_failed(char const *module, int loc) {
|
||||||
/* re-set the SP in case of stack overflow */
|
/* re-set the SP in case of stack overflow */
|
||||||
__asm volatile (
|
__asm volatile (
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
DOXYFILE_ENCODING = UTF-8
|
DOXYFILE_ENCODING = UTF-8
|
||||||
PROJECT_NAME = "QP/C++"
|
PROJECT_NAME = "QP/C++"
|
||||||
PROJECT_NUMBER = "6.8.0"
|
PROJECT_NUMBER = "6.8.1"
|
||||||
PROJECT_BRIEF =
|
PROJECT_BRIEF =
|
||||||
PROJECT_LOGO = images/header_logo_ql.png
|
PROJECT_LOGO = images/header_logo_ql.png
|
||||||
OUTPUT_DIRECTORY =
|
OUTPUT_DIRECTORY =
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
DOXYFILE_ENCODING = UTF-8
|
DOXYFILE_ENCODING = UTF-8
|
||||||
PROJECT_NAME = "QP/C++"
|
PROJECT_NAME = "QP/C++"
|
||||||
PROJECT_NUMBER = "6.8.0"
|
PROJECT_NUMBER = "6.8.1"
|
||||||
PROJECT_BRIEF =
|
PROJECT_BRIEF =
|
||||||
PROJECT_LOGO = images/header_logo_ql.png
|
PROJECT_LOGO = images/header_logo_ql.png
|
||||||
OUTPUT_DIRECTORY =
|
OUTPUT_DIRECTORY =
|
||||||
|
@ -2,7 +2,33 @@ namespace QP {
|
|||||||
|
|
||||||
/** @page history Revision History
|
/** @page history Revision History
|
||||||
|
|
||||||
@section qpcpp_6_8_0 Version 6.8.0, 2020-03-31
|
@section qpcpp_6_8_1 Version 6.8.1, 2020-04-04
|
||||||
|
|
||||||
|
Fixed the following bugs:
|
||||||
|
|
||||||
|
- [bug#261 QTime::disarm() clears the wrong flag](https://sourceforge.net/p/qpc/bugs/261/)
|
||||||
|
|
||||||
|
|
||||||
|
Also, this release updates the QP/C++ ports and examples for workstations (Windows and POSIX) by consistently applying the "safe" versions of services from `<stdio.h>` and `<string.h>`. The "portable" versions of these services are defined as macros in the `safe_std.h` header file and include the following services:
|
||||||
|
|
||||||
|
- `MEMMOVE_S()` -> `memmove_s()`
|
||||||
|
- `STRCPY_S()` -> `strcpy_s()`
|
||||||
|
- `STRCPY_S()` -> `strcpy_s()`
|
||||||
|
- `STRCAT_S()` -> `strcat_s()`
|
||||||
|
- `SNPRINTF_S()` -> `_snprintf_s()`
|
||||||
|
- `PRINTF_S()` -> `printf_s()`
|
||||||
|
- `FPRINTF_S()` ->`fprintf_s()`
|
||||||
|
- `FREAD_S()` -> `fread_s()`
|
||||||
|
- `FOPEN_S()` -> `fopen_s()`
|
||||||
|
- `LOCALTIME_S()` -> `localtime_s()`
|
||||||
|
|
||||||
|
These "safe" functions are mapped to the best approximation of these services available on a given platform. For example, `STRCPY_S()` is mapped to `strcpy_s()` on Windows and `strcpy()` on POSIX (Linux/MacOS/etc.).
|
||||||
|
|
||||||
|
Finally, this release improves the comments in the QF::stop() function. The comments now make it very clear that after calling QF_stop() the application must terminate and cannot continue. In particular, QF::stop() is **not** intended to be followed by a call to QF::init() to "resurrect" the application. The previous comments apparently were confusing and some developers attempted to "restart" a running application, which led to system crashes.
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
@section qpcpp_6_8_0 Version 6.8.0, 2020-03-21
|
||||||
|
|
||||||
This release updates the QP/C++ source code from C++98/03 to the **C++11 Standard**. Specifically, the following C++11 features are now used:
|
This release updates the QP/C++ source code from C++98/03 to the **C++11 Standard**. Specifically, the following C++11 features are now used:
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||||
<title>QP built-in images</title>
|
<title>QP built-in images</title>
|
||||||
|
|
||||||
<img src="logo_ql.gif">
|
<img src="logo_ql.png">
|
||||||
<img src="AN.jpg">
|
<img src="AN.jpg">
|
||||||
<img src="AN_Coding_Standard.jpg">
|
<img src="AN_Coding_Standard.jpg">
|
||||||
<img src="AN_Getting_Started_with_QPC.jpg">
|
<img src="AN_Getting_Started_with_QPC.jpg">
|
||||||
|
BIN
doxygen/img/logo_ql.png
Normal file
BIN
doxygen/img/logo_ql.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
@ -47,7 +47,7 @@ int main() {
|
|||||||
// instantiate and start the active objects...
|
// instantiate and start the active objects...
|
||||||
AO_Blinky->start(1U, // priority
|
AO_Blinky->start(1U, // priority
|
||||||
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
||||||
(void *)0, 0U); // stack (unused)
|
nullptr, 0U); // stack (unused)
|
||||||
|
|
||||||
return QF::run(); // run the QF application
|
return QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ extern "C" {
|
|||||||
void SysTick_Handler(void); // prototype
|
void SysTick_Handler(void); // prototype
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
||||||
QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ extern "C" {
|
|||||||
//............................................................................
|
//............................................................................
|
||||||
void SysTick_Handler(void); // prototype
|
void SysTick_Handler(void); // prototype
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
}
|
}
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -47,7 +47,7 @@ int main() {
|
|||||||
// instantiate and start the active objects...
|
// instantiate and start the active objects...
|
||||||
AO_Blinky->start(1U, // priority
|
AO_Blinky->start(1U, // priority
|
||||||
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
||||||
(void *)0, 0U); // stack (unused)
|
nullptr, 0U); // stack (unused)
|
||||||
|
|
||||||
return QF::run(); // run the QF application
|
return QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ extern "C" {
|
|||||||
void SysTick_Handler(void); // prototype
|
void SysTick_Handler(void); // prototype
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
||||||
QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ extern "C" {
|
|||||||
//............................................................................
|
//............................................................................
|
||||||
void SysTick_Handler(void); // prototype
|
void SysTick_Handler(void); // prototype
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
}
|
}
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -227,7 +227,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -67,7 +67,7 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
@ -77,7 +77,7 @@ int main() {
|
|||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -67,7 +67,7 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
@ -77,7 +77,7 @@ int main() {
|
|||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
@ -243,13 +243,13 @@ void BSP::displayPaused(uint8_t paused) {
|
|||||||
// for testing the extended threads...
|
// for testing the extended threads...
|
||||||
static QP::QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
|
static QP::QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
|
||||||
XT_Test2->delayCancel(); // make sure Test2 is not delayed
|
XT_Test2->delayCancel(); // make sure Test2 is not delayed
|
||||||
XT_Test2->POST_X(&pauseEvt, 1U, (void *)0); // post to Test2's queue
|
XT_Test2->POST_X(&pauseEvt, 1U, nullptr); // post to Test2's queue
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GPIO->P[LED_PORT].DOUT &= ~(1U << LED0_PIN);
|
GPIO->P[LED_PORT].DOUT &= ~(1U << LED0_PIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
QS_BEGIN(PAUSED_STAT, (void *)0) // application-specific record begin
|
QS_BEGIN(PAUSED_STAT, nullptr) // application-specific record begin
|
||||||
QS_U8(1, paused); // Paused status
|
QS_U8(1, paused); // Paused status
|
||||||
QS_END()
|
QS_END()
|
||||||
}
|
}
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -59,12 +59,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U),
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -228,7 +228,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -228,7 +228,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -67,7 +67,7 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
@ -77,7 +77,7 @@ int main() {
|
|||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -67,7 +67,7 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
@ -77,7 +77,7 @@ int main() {
|
|||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
@ -236,7 +236,7 @@ void BSP::displayPaused(uint8_t const paused) {
|
|||||||
//GPIOF->DATA_Bits[LED_RED] = ((paused != 0U) ? 0xFFU : 0U);
|
//GPIOF->DATA_Bits[LED_RED] = ((paused != 0U) ? 0xFFU : 0U);
|
||||||
|
|
||||||
static QP::QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
|
static QP::QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
|
||||||
XT_Test2->POST_X(&pauseEvt, 1U, (void *)0);
|
XT_Test2->POST_X(&pauseEvt, 1U, nullptr);
|
||||||
|
|
||||||
// application-specific trace record
|
// application-specific trace record
|
||||||
QS_BEGIN(PAUSED_STAT, AO_Table)
|
QS_BEGIN(PAUSED_STAT, AO_Table)
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -63,13 +63,13 @@ int main() {
|
|||||||
|
|
||||||
// start the active objects...
|
// start the active objects...
|
||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
DPP::AO_Philo[n]->start(n + 1U,
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
DPP::AO_Table->start((uint8_t)(N_PHILO + 1U),
|
DPP::AO_Table->start(N_PHILO + 1U,
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -176,7 +176,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -209,7 +209,7 @@ void BSP::init(void) {
|
|||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
// initialize the QS software tracing...
|
// initialize the QS software tracing...
|
||||||
if (!QS_INIT((void *)0)) {
|
if (!QS_INIT(nullptr)) {
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -74,12 +74,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ void BSP::init(void) {
|
|||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
// initialize the QS software tracing...
|
// initialize the QS software tracing...
|
||||||
if (!QS_INIT((void *)0)) {
|
if (!QS_INIT(nullptr)) {
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -74,12 +74,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ void BSP::init(void) {
|
|||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
// initialize the QS software tracing...
|
// initialize the QS software tracing...
|
||||||
if (!QS_INIT((void *)0)) {
|
if (!QS_INIT(nullptr)) {
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -179,7 +179,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -178,7 +178,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -65,12 +65,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
||||||
DPP::AO_Table->start((uint8_t)(N_PHILO + 2U),
|
DPP::AO_Table->start((uint8_t)(N_PHILO + 2U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -65,11 +65,11 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
DPP::AO_Table->start((uint8_t)(N_PHILO + 1U),
|
DPP::AO_Table->start((uint8_t)(N_PHILO + 1U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -66,11 +66,11 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
DPP::AO_Table->start((uint8_t)(N_PHILO + 1U),
|
DPP::AO_Table->start((uint8_t)(N_PHILO + 1U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -170,7 +170,7 @@ void BSP::init(void) {
|
|||||||
|
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -219,7 +219,7 @@ void BSP::init(void) {
|
|||||||
// seed the random number generator
|
// seed the random number generator
|
||||||
randomSeed(1234U);
|
randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick);
|
QS_OBJ_DICTIONARY(&l_SysTick);
|
||||||
|
@ -66,17 +66,17 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
DPP::the_Ticker0->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::the_Ticker0->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
(QP::QEvt const **)0, 0U,
|
(QP::QEvt const **)0, 0U,
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ void BSP::init(void) {
|
|||||||
// seed the random number generator
|
// seed the random number generator
|
||||||
randomSeed(1234U);
|
randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick);
|
QS_OBJ_DICTIONARY(&l_SysTick);
|
||||||
|
@ -66,17 +66,17 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
// example of prioritizing the Ticker0 active object
|
// example of prioritizing the Ticker0 active object
|
||||||
DPP::the_Ticker0->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::the_Ticker0->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
(QP::QEvt const **)0, 0U,
|
(QP::QEvt const **)0, 0U,
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ void BSP::init(void) {
|
|||||||
// seed the random number generator
|
// seed the random number generator
|
||||||
randomSeed(1234U);
|
randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0U) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0U) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick);
|
QS_OBJ_DICTIONARY(&l_SysTick);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
SET PATH=C:\tools\Keil_v5\ARM\ARMCLANG\Bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\ProgramData\Oracle\Java\javapath;C:\utils;C:\tools\Git\cmd;C:\qp\qtools\bin;C:\qp\qtools\mingw32\bin
|
SET PATH=C:\tools\Keil_v5\ARM\ARMCLANG\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\ProgramData\Oracle\Java\javapath;C:\tools\Git\cmd;C:\utils;C:\qp\qtools\bin;C:\qp\qtools\mingw32\bin;C:\Users\miro\AppData\Local\GitHubDesktop\bin
|
||||||
SET CPU_TYPE=STM32F746NGHx
|
SET CPU_TYPE=STM32F746NGHx
|
||||||
SET CPU_VENDOR=STMicroelectronics
|
SET CPU_VENDOR=STMicroelectronics
|
||||||
SET UV2_TARGET=dpp-spy
|
SET UV2_TARGET=dpp-spy
|
||||||
|
@ -212,7 +212,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -66,12 +66,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -66,12 +66,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U), // priority
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U), // priority
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ void BSP::init(void) {
|
|||||||
//...
|
//...
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (!QS_INIT((void *)0)) { // initialize the QS software tracing
|
if (!QS_INIT(nullptr)) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::game.hpp}
|
// File: ${.::game.hpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<model version="4.6.0" links="1">
|
<model version="5.0.0" links="1">
|
||||||
<documentation>"Fly 'n' Shoot" game model from Chapters 1 & 9 of PSiCC2
|
<documentation>"Fly 'n' Shoot" game model from Chapters 1 & 9 of PSiCC2
|
||||||
|
|
||||||
NOTE: Requries QP6.</documentation>
|
NOTE: Requries QP6.</documentation>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::mine1.cpp}
|
// File: ${.::mine1.cpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
@ -70,8 +70,8 @@ static inline uint8_t MINE_ID(Mine1 const * const me) {
|
|||||||
// Mine1 class definition ----------------------------------------------------
|
// Mine1 class definition ----------------------------------------------------
|
||||||
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
//. Check for the minimum required QP version
|
//. Check for the minimum required QP version
|
||||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
#if (QP_VERSION < 670U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||||
#error qpcpp version 6.5.0 or higher required
|
#error qpcpp version 6.7.0 or higher required
|
||||||
#endif
|
#endif
|
||||||
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
//.$define${AOs::Mine1} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$define${AOs::Mine1} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::mine2.cpp}
|
// File: ${.::mine2.cpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
@ -70,8 +70,8 @@ static inline uint8_t MINE_ID(Mine2 const * const me) {
|
|||||||
// Mine1 class definition ----------------------------------------------------
|
// Mine1 class definition ----------------------------------------------------
|
||||||
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
//. Check for the minimum required QP version
|
//. Check for the minimum required QP version
|
||||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
#if (QP_VERSION < 670U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||||
#error qpcpp version 6.5.0 or higher required
|
#error qpcpp version 6.7.0 or higher required
|
||||||
#endif
|
#endif
|
||||||
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
//.$define${AOs::Mine2} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$define${AOs::Mine2} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::missile.cpp}
|
// File: ${.::missile.cpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
@ -55,8 +55,8 @@ static Missile l_missile; // the sole instance of the Missile active object
|
|||||||
// Public-scope objects ------------------------------------------------------
|
// Public-scope objects ------------------------------------------------------
|
||||||
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
//. Check for the minimum required QP version
|
//. Check for the minimum required QP version
|
||||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
#if (QP_VERSION < 670U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||||
#error qpcpp version 6.5.0 or higher required
|
#error qpcpp version 6.7.0 or higher required
|
||||||
#endif
|
#endif
|
||||||
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
//.$define${AOs::AO_Missile} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$define${AOs::AO_Missile} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
@ -239,7 +239,7 @@ void BSP_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// initialize the QS software tracing
|
// initialize the QS software tracing
|
||||||
if (!QS_INIT((void *)0)) {
|
if (!QS_INIT(nullptr)) {
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -216,7 +216,7 @@ void BSP_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// initialize the QS software tracing
|
// initialize the QS software tracing
|
||||||
if (!QS_INIT((void *)0)) {
|
if (!QS_INIT(nullptr)) {
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::ship.cpp}
|
// File: ${.::ship.cpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
@ -61,8 +61,8 @@ static Ship l_ship; // the sole instance of the Ship active object
|
|||||||
// Public-scope objects ------------------------------------------------------
|
// Public-scope objects ------------------------------------------------------
|
||||||
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
//. Check for the minimum required QP version
|
//. Check for the minimum required QP version
|
||||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
#if (QP_VERSION < 670U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||||
#error qpcpp version 6.5.0 or higher required
|
#error qpcpp version 6.7.0 or higher required
|
||||||
#endif
|
#endif
|
||||||
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
//.$define${AOs::AO_Ship} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$define${AOs::AO_Ship} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Model: game.qm
|
// Model: game.qm
|
||||||
// File: ${.::tunnel.cpp}
|
// File: ${.::tunnel.cpp}
|
||||||
//
|
//
|
||||||
// This code has been generated by QM 4.6.0 <www.state-machine.com/qm/>.
|
// This code has been generated by QM 5.0.0 <www.state-machine.com/qm/>.
|
||||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||||
//
|
//
|
||||||
// This program is open source software: you can redistribute it and/or
|
// This program is open source software: you can redistribute it and/or
|
||||||
@ -76,8 +76,8 @@ static Tunnel l_tunnel; // the sole instance of the Tunnel active object
|
|||||||
// Public-scope objects ------------------------------------------------------
|
// Public-scope objects ------------------------------------------------------
|
||||||
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
//. Check for the minimum required QP version
|
//. Check for the minimum required QP version
|
||||||
#if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
#if (QP_VERSION < 670U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||||
#error qpcpp version 6.5.0 or higher required
|
#error qpcpp version 6.7.0 or higher required
|
||||||
#endif
|
#endif
|
||||||
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
//.$define${AOs::AO_Tunnel} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
//.$define${AOs::AO_Tunnel} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
@ -74,14 +74,14 @@ enum {
|
|||||||
// ISRs used in this project =================================================
|
// ISRs used in this project =================================================
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
||||||
QP::QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
void Timer0A_IRQHandler(void) {
|
void Timer0A_IRQHandler(void) {
|
||||||
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
QK_ISR_ENTRY(); // inform QK about entering an ISR
|
||||||
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
||||||
QP::QF::TICK_X(1U, (void *)0); // process time events for rate 1
|
QP::QF::TICK_X(1U, nullptr); // process time events for rate 1
|
||||||
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
QK_ISR_EXIT(); // inform QK about exiting an ISR
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
|
@ -73,12 +73,12 @@ enum {
|
|||||||
|
|
||||||
// ISRs used in this project =================================================
|
// ISRs used in this project =================================================
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QP::QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
void Timer0A_IRQHandler(void) {
|
void Timer0A_IRQHandler(void) {
|
||||||
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
||||||
QP::QF::TICK_X(1U, (void *)0); // process time events for rate 1
|
QP::QF::TICK_X(1U, nullptr); // process time events for rate 1
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
void GPIOPortF_IRQHandler(void) {
|
void GPIOPortF_IRQHandler(void) {
|
||||||
|
@ -74,14 +74,14 @@ enum {
|
|||||||
// ISRs used in this project =================================================
|
// ISRs used in this project =================================================
|
||||||
void SysTick_Handler(void) {
|
void SysTick_Handler(void) {
|
||||||
QXK_ISR_ENTRY(); // inform QXK about entering an ISR
|
QXK_ISR_ENTRY(); // inform QXK about entering an ISR
|
||||||
QP::QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
QXK_ISR_EXIT(); // inform QXK about exiting an ISR
|
QXK_ISR_EXIT(); // inform QXK about exiting an ISR
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
void Timer0A_IRQHandler(void) {
|
void Timer0A_IRQHandler(void) {
|
||||||
QXK_ISR_ENTRY(); // inform QXK about entering an ISR
|
QXK_ISR_ENTRY(); // inform QXK about entering an ISR
|
||||||
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
TIMER0->ICR |= (1U << 0); // clear the Timer0 interrupt source
|
||||||
QP::QF::TICK_X(1U, (void *)0); // process time events for rate 1
|
QP::QF::TICK_X(1U, nullptr); // process time events for rate 1
|
||||||
QXK_ISR_EXIT(); // inform QXK about exiting an ISR
|
QXK_ISR_EXIT(); // inform QXK about exiting an ISR
|
||||||
}
|
}
|
||||||
//............................................................................
|
//............................................................................
|
||||||
|
@ -47,7 +47,7 @@ int main() {
|
|||||||
// instantiate and start the active objects...
|
// instantiate and start the active objects...
|
||||||
AO_Blinky->start(1U, // priority
|
AO_Blinky->start(1U, // priority
|
||||||
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
blinkyQSto, Q_DIM(blinkyQSto), // event queue
|
||||||
(void *)0, 0U); // stack (unused)
|
nullptr, 0U); // stack (unused)
|
||||||
|
|
||||||
return QF::run(); // run the QF application
|
return QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ extern "C" {
|
|||||||
//............................................................................
|
//............................................................................
|
||||||
QK_IRQ_BEGIN(rtiCompare0)
|
QK_IRQ_BEGIN(rtiCompare0)
|
||||||
rtiREG1->INTFLAG = 1U; // clear the interrutp source
|
rtiREG1->INTFLAG = 1U; // clear the interrutp source
|
||||||
QP::QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
QK_IRQ_END()
|
QK_IRQ_END()
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -79,7 +79,7 @@ extern "C" {
|
|||||||
//
|
//
|
||||||
void rtiNotification(uint32 notification) {
|
void rtiNotification(uint32 notification) {
|
||||||
if (notification == rtiNOTIFICATION_COMPARE0) {
|
if (notification == rtiNOTIFICATION_COMPARE0) {
|
||||||
QP::QF::TICK_X(0U, (void *)0); // process time events for rate 0
|
QP::QF::TICK_X(0U, nullptr); // process time events for rate 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
@ -171,7 +171,7 @@ void BSP::init(void) {
|
|||||||
// initialize the random seed
|
// initialize the random seed
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_rtiCompare0);
|
QS_OBJ_DICTIONARY(&l_rtiCompare0);
|
||||||
|
@ -58,11 +58,11 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U),
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 1U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ void BSP::init(void) {
|
|||||||
// initialize the random seed
|
// initialize the random seed
|
||||||
BSP::randomSeed(1234U);
|
BSP::randomSeed(1234U);
|
||||||
|
|
||||||
if (QS_INIT((void *)0) == 0) { // initialize the QS software tracing
|
if (QS_INIT(nullptr) == 0) { // initialize the QS software tracing
|
||||||
Q_ERROR();
|
Q_ERROR();
|
||||||
}
|
}
|
||||||
QS_OBJ_DICTIONARY(&l_rtiCompare0);
|
QS_OBJ_DICTIONARY(&l_rtiCompare0);
|
||||||
|
@ -58,12 +58,12 @@ int main() {
|
|||||||
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
||||||
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
DPP::AO_Philo[n]->start((uint_fast8_t)(n + 1U),
|
||||||
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
philoQueueSto[n], Q_DIM(philoQueueSto[n]),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
}
|
}
|
||||||
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
// leave the priority level (N_PHILO + 1) free for the mutex in BSP
|
||||||
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U),
|
DPP::AO_Table->start((uint_fast8_t)(N_PHILO + 2U),
|
||||||
tableQueueSto, Q_DIM(tableQueueSto),
|
tableQueueSto, Q_DIM(tableQueueSto),
|
||||||
(void *)0, 0U);
|
nullptr, 0U);
|
||||||
|
|
||||||
return QP::QF::run(); // run the QF application
|
return QP::QF::run(); // run the QF application
|
||||||
}
|
}
|
||||||
|
@ -110,11 +110,11 @@ Q_STATE_DEF(Table, initial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);
|
||||||
|
@ -174,11 +174,11 @@ for (uint8_t n = 0U; n < N_PHILO; ++n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// global signals...
|
// global signals...
|
||||||
QS_SIG_DICTIONARY(DONE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(DONE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(EAT_SIG, (void *)0);
|
QS_SIG_DICTIONARY(EAT_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(PAUSE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(PAUSE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(SERVE_SIG, (void *)0);
|
QS_SIG_DICTIONARY(SERVE_SIG, nullptr);
|
||||||
QS_SIG_DICTIONARY(TEST_SIG, (void *)0);
|
QS_SIG_DICTIONARY(TEST_SIG, nullptr);
|
||||||
|
|
||||||
// signals just for this AO...
|
// signals just for this AO...
|
||||||
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
QS_SIG_DICTIONARY(HUNGRY_SIG, this);</action>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user