Skip to content

Commit 9785ee0

Browse files
author
QL
committed
6.9.0
1 parent 0a4d2f4 commit 9785ee0

File tree

270 files changed

+17150
-9099
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+17150
-9099
lines changed

3rd_party/stm32f4-discovery/system_stm32f4xx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ static void SetSysClock(void)
399399
RCC->CFGR |= RCC_CFGR_SW_PLL;
400400

401401
/* Wait till the main PLL is used as system clock source */
402-
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
402+
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL)
403403
{
404404
}
405405
}

doxygen/Doxyfile

Lines changed: 1 addition & 2198 deletions
Large diffs are not rendered by default.

doxygen/Doxyfile-CHM

Lines changed: 1 addition & 2198 deletions
Large diffs are not rendered by default.

doxygen/history.dox

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,45 @@ namespace QP {
22

33
/** @page history Revision History
44

5+
@section qpcpp_6_9_0 Version 6.9.0, 2020-08-21
6+
The main purpose of this release is to adjust the QP/C++ RTEF to the changes and improvements introduced in [QTools 6.9.0](https://www.state-machine.com/qtools/history.html). Specifically, QP/C++ now includes examples for the new [QView Visualization & Monitoring](https://www.state-machine.com/qtools/qview.html) as well as adjustments for the new version of [QUTest Unit Testing](https://www.state-machine.com/qtools/qutest.html).
7+
8+
9+
__Source code changes:__
10+
11+
Added new #QS_QF_RUN trace record to [QS software tracing](https://www.state-machine.com/qtools/qs.html), which is now generated in all QP/C++ ports upon the entry to QF::run(). This trace record marks the end of the application startup, at which time all the [QS dictionaries](https://www.state-machine.com/qtools/qs.html#qs_dict) are typically produced.
12+
13+
@note
14+
The addition of the #QS_QF_RUN trace record affects only the [Spy build configuration](https://www.state-machine.com/qpc/struct.html#comp_qs) and is has **no impact** on the Release or Debug build configurations.
15+
16+
17+
__Updated Ports:__
18+
19+
+ All QP/C++ ports to 3rd-party RTOSes (embOS, FreeRTOS, ThreadX, uC/OS-II) and OSes (POSIX, POSIX-QV, WIN32, WIN32-QV) have been updated to generate the #QS_QF_RUN trace record.
20+
21+
+ Additionally the POSIX and POSIX-QV ports have been updated to add the call to `pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED)` (see also [bug#276](https://sourceforge.net/p/qpc/bugs/276))
22+
23+
24+
__Updated Examples:__
25+
26+
+ All [QUTest](https://www.state-machine.com/qtools/qutest.html) examples (`qpcpp\examples\qutest` directory) have been modified to use the new location of the `qutest.py` Python module. Also, all QUTest examples that use the `on_reset()` callback have been modified to call `expect_run()`.
27+
28+
@note
29+
The #QS_QF_RUN record is now generated in [QUTest unit testing](https://www.state-machine.com/qtools/qutest.html), which requires adjustments in the existing [test scripts](https://www.state-machine.com/qtools/qutest_script.html). Specifically, the test scripts that provide their own [on_reset() callback](https://www.state-machine.com/qtools/namespacequtest__dsl.html#aa40735b0e2865f928331d30798090ee2) must now also call [expect_run()](https://www.state-machine.com/qtools/namespacequtest__dsl.html#a6a958064a793bd7edd6ecc39e03c356a).
30+
31+
32+
+ ARM Cortex-M examples for STM32 NUCLEO-L053RE (`qpcpp\examples\arm-cm\dpp_nucleo-l053r8`) and NUCLEO-L152RE (`qpcpp\examples\arm-cm\dpp_nucleo-l152re`) have been modified to support bi-directional QSPY communication. These examples now include the QView demos.
33+
+ Added examples of new [Sequence Diagram Generation](https://www.state-machine.com/qtools/html/qspy_seq.html) in QSPY 6.9.0
34+
35+
36+
__Bug Fixes:__
37+
38+
+ [bug#276 "QP/C/C++ POSIX port doesn't set thread priorities correctly"](https://sourceforge.net/p/qpc/bugs/276)
39+
40+
+ [bug#277 "QP/​C++6.8.2 game-gui and dpp-gui examples fail to compile with Visual Studio"](https://sourceforge.net/p/qpc/bugs/277)
41+
42+
43+
544
@section qpcpp_6_8_2 Version 6.8.2, 2020-07-17
645

746
__Source code changes:__

doxygen/macros.hpp

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ namespace QP {
33
/// @file
44
/// command-line macros and macros for porting QP
55

6-
/// The preprocessor switch to disable checking assertions
7-
///
6+
//! The preprocessor switch to disable checking assertions
7+
//
88
/// When defined, Q_NASSERT disables the following macros #Q_ASSERT,
99
/// #Q_REQUIRE, #Q_ENSURE, #Q_INVARIANT, #Q_ERROR as well as
1010
/// #Q_ASSERT_ID, #Q_REQUIRE_ID, #Q_ENSURE_ID, #Q_INVARIANT_ID, and
@@ -16,9 +16,9 @@ namespace QP {
1616
/// failures when the switch Q_NASSERT is defined.
1717
#define Q_NASSERT
1818

19-
/// The preprocessor switch to activate the event-constructors
20-
/// and destructors
21-
///
19+
//! The preprocessor switch to activate the event-constructors
20+
//! and destructors
21+
//
2222
/// When Q_EVT_CTOR is defined (typically in the qep_port.hpp header file),
2323
/// QP::QEvt becomes a class with constructor and virtual destructor.
2424
/// More importantly, the subclasses of QEvt (your custom events) can have
@@ -27,41 +27,42 @@ namespace QP {
2727
/// is invoked before recycling the event with QP::QF::gc().
2828
#define Q_EVT_CTOR
2929

30-
/// The preprocessor switch to activate the QS software tracing
31-
/// instrumentation in the code
32-
///
30+
//! The preprocessor switch to activate the QS software tracing
31+
//! instrumentation in the code
32+
//
3333
/// When defined, Q_SPY activates the QS software tracing instrumentation.
3434
/// When Q_SPY is not defined, the QS instrumentation in the code does
3535
/// not generate any code.
3636
#define Q_SPY
3737

38-
/// The preprocessor switch to activate the QUTest unit testing
39-
/// instrumentation in the code */
38+
//! The preprocessor switch to activate the QUTest unit testing
39+
//! instrumentation in the code
4040
///
4141
/// @note
4242
/// This macro requires that #Q_SPY be defined as well.
4343
#define Q_UTEST
4444

45-
/// This macro defines the type of the OS-Object used for blocking
46-
/// the native QF event queue when the queue is empty
47-
///
48-
/// In QK, the OS object is used to hold the per-thread flags, which might
49-
/// be used, for example, to remember the thread attributes (e.g.,
50-
/// if the thread uses a floating point co-processor). The OS object value
51-
/// is set on per-thread basis in QActive::start(). Later, the extended
52-
/// context switch macros (QK_EXT_SAVE() and QK_EXT_RESTORE()) might use
53-
/// the per-thread flags to determine what kind of extended context switch
54-
/// this particular thread needs (e.g., the thread might not be using the
55-
/// coprocessor or might be using a different one).
56-
#define QF_OS_OBJECT_TYPE uint8_t
57-
58-
/// This macro defines the type of the thread handle used for the
59-
/// active objects. This macro depends on the QP port.
60-
#define QF_THREAD_TYPE void *
61-
62-
/// Platform-dependent macro defining how QF should block the calling
63-
/// task when the QF native queue is empty
45+
//! This macro defines the type of the thread handle used for AOs
46+
#define QF_THREAD_TYPE void*
47+
48+
//! This macro defines the type of the event-queue used for AOs
49+
#define QF_EQUEUE_TYPE QEQueue
50+
51+
//! This macro defines the type of the OS-Object used for blocking
52+
// the native ::QEQueue when the queue is empty
53+
//
54+
/// @description
55+
/// This macro is used when ::QEQueue is used as the event-queue for AOs
56+
/// but also the AO queue must *block* when the queue is empty.
57+
/// In that case, #QF_OS_OBJECT_TYPE specifies the blocking mechanism.
58+
/// For examle, in the POSIX port, the blocking mechanism is a condition
59+
/// variable.
6460
///
61+
#define QF_OS_OBJECT_TYPE pthread_cond_t
62+
63+
//! Platform-dependent macro defining how QF should block the calling
64+
//! task when the QF native queue is empty
65+
//
6566
/// @note This is just an example of #QACTIVE_EQUEUE_WAIT_ for the QK-port
6667
/// of QF. QK never activates a task that has no events to process, so in this
6768
/// case the macro asserts that the queue is not empty. In other QF ports you
@@ -70,9 +71,9 @@ namespace QP {
7071
#define QACTIVE_EQUEUE_WAIT_(me_) \
7172
Q_ASSERT((me_)->m_eQueue.m_frontEvt != nullptr)
7273

73-
/// Platform-dependent macro defining how QF should signal the
74-
/// active object task that an event has just arrived.
75-
///
74+
//! Platform-dependent macro defining how QF should signal the
75+
//! active object task that an event has just arrived.
76+
//
7677
/// The macro is necessary only when the native QF event queue is used.
7778
/// The signaling of task involves unblocking the task if it is blocked.
7879
///
@@ -89,13 +90,13 @@ namespace QP {
8990
uint8_t p = QK_schedPrio_(); \
9091
if (p != 0U) { \
9192
QK_sched_(p); \
92-
} \
93-
} \
93+
} \
94+
} \
9495
} while (false)
9596

96-
/// This macro defines the type of the event pool used in this QF port.
97-
///
98-
/// \note This is a specific implementation for the QK-port of QF.
97+
//! This macro defines the type of the event pool used in this QF port.
98+
//
99+
/// @note This is a specific implementation for the QK-port of QF.
99100
/// In other QF ports you need to define the macro appropriately for
100101
/// the underlying kernel/OS you're using.
101102
#define QF_EPOOL_TYPE_ QMPool
@@ -110,7 +111,7 @@ namespace QP {
110111

111112
/// Platform-dependent macro defining the event pool initialization
112113
///
113-
/// \note This is a specific implementation for the QK-port of QF.
114+
/// @note This is a specific implementation for the QK-port of QF.
114115
/// In other QF ports you need to define the macro appropriately for
115116
/// the underlying kernel/OS you're using.
116117
#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
@@ -119,24 +120,24 @@ namespace QP {
119120
/// Platform-dependent macro defining how QF should obtain the
120121
/// event pool block-size
121122
///
122-
/// \note This is a specific implementation for the QK-port of QF.
123+
/// @note This is a specific implementation for the QK-port of QF.
123124
/// In other QF ports you need to define the macro appropriately for
124125
/// the underlying kernel/OS you're using.
125126
#define QF_EPOOL_EVENT_SIZE_(p_) static_cast<uint32_t>((p_).getBlockSize())
126127

127128
/// Platform-dependent macro defining how QF should obtain an event
128-
/// \a e_ from the event pool \a p_
129+
/// @a e_ from the event pool @a p_
129130
///
130-
/// \note This is a specific implementation for the QK-port of QF.
131+
/// @note This is a specific implementation for the QK-port of QF.
131132
/// In other QF ports you need to define the macro appropriately for
132133
/// the underlying kernel/OS you're using.
133134
#define QF_EPOOL_GET_(p_, e_, m_) \
134135
((e_) = static_cast<QEvt *>((p_).get((m_))))
135136

136137
/// Platform-dependent macro defining how QF should return an event
137-
/// \a e_ to the event pool \a p_
138+
/// @a e_ to the event pool @a p_
138139
///
139-
/// \note This is a specific implementation for the QK-port of QF.
140+
/// @note This is a specific implementation for the QK-port of QF.
140141
/// In other QF ports you need to define the macro appropriately for
141142
/// the underlying kernel/OS you're using.
142143
#define QF_EPOOL_PUT_(p_, e_) ((p_).put(e_))

0 commit comments

Comments
 (0)