You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doxygen/history.dox
+78-1Lines changed: 78 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,83 @@ namespace QP {
2
2
3
3
/** @page history Revision History
4
4
5
+
@section qpcpp_6_9_1 Version 6.9.1, 2020-09-28
6
+
The main purpose of this release is a redesign of the [<b>QS Local Filter</b>](https://www.state-machine.com/qtools/qs.html#qs_local) (see also [feature request #127](https://sourceforge.net/p/qpc/feature-requests/127)). This new design supports filtering on __multiple__ active objects (as well as other objects in the Target memory), as opposed to filtering just one such object at a time. The main use case for this redesign of QS Local Filter is an application, where some active objects are very "noisy", and would overwhelm your trace. The new QS Local Filter allows you to selectively silence the "noisy" active objects and let all the others through.
7
+
8
+
The new QS Local Filter is based on "QS-IDs" associated with various objects in the Target memory. The QS-IDs are small integer numbers, such as the unique priorities assigned to QP Active Objects, but there are more such QS-IDs, which you can assign to various other objects through the macro QS_BEGIN_ID(). Then, you can setup the QS Local Filter to trace only a specific QS-IDs or whole groups of QS-IDs by means of the macro QS_LOC_FILTER() or remotely via the QS-RX channel.
9
+
10
+
11
+
__Source code changes:__
12
+
13
+
The redesign of the QS Local Filter impacts the QS trace instrumentation in QP/C++: both the [<b>pre-defined QS trace records</b>](https://www.state-machine.com/qtools/qs.html#qs_pre) and the [<b>application-specific trace records</b>](https://www.state-machine.com/qtools/qs.html#qs_app). The changes to the pre-defined records are confided to the QP/C++ source code and are transparent to the application developers. However, the changes to the application-specific trace records require adjusting existing applications as follows:
14
+
15
+
- use the new macro QS_LOC_FILTER() to set/clear the QS Local Filter
16
+
- use the new macro QS_BEGIN_ID() to define [<b>application-specific trace records</b>](https://www.state-machine.com/qtools/qs.html#qs_app).
17
+
18
+
19
+
@note
20
+
The macro QS_BEGIN_ID() assigns the specified QS-ID number to the app-specific record, which can be subsequently filtered by the new QS Local Filter. The old macro QS_BEGIN(), with the old Local Filter interface, is still available, but is @ref deprecated "deprecated" and not recommended.
21
+
22
+
23
+
The following macros are __deprecated__:
24
+
25
+
- macro QS_FILTER_SM_OBJ() does nothing in QP/C++ 6.9.1
26
+
- macro QS_FILTER_AO_OBJ() does nothing in QP/C++ 6.9.1
27
+
- macro QS_FILTER_MP_OBJ() does nothing in QP/C++ 6.9.1
28
+
- macro QS_FILTER_EQ_OBJ() does nothing in QP/C++ 6.9.1
29
+
- macro QS_FILTER_TE_OBJ() does nothing in QP/C++ 6.9.1
30
+
- macro QS_FILTER_AP_OBJ() still works for QS_BEGIN()
31
+
- macro QS_FILTER_ON() still works, but uses QS_GLB_FILTER() internally
32
+
- macro QS_FILTER_OFF() still works, but uses QS_GLB_FILTER() internally
33
+
- macro QS_BEGIN() still works, but uses the old "AP-OBJ" pointer
34
+
35
+
36
+
The following APIs have been __changed__:
37
+
38
+
- QHsm::init() now takes extra `qs_id` parameter
39
+
- QHSM::dispatch() now takes extra `qs_id` parameter
40
+
- QMPool::get() now takes extra `qs_id` parameter
41
+
- QMPool::put() now takes extra `qs_id` parameter
42
+
- QEQueue::post() now takes extra `qs_id` parameter
43
+
- QEQueue::postLIFO() now takes extra `qs_id` parameter
44
+
- QEQueue::get() now takes extra `qs_id` parameter
45
+
46
+
@note
47
+
The API changes are __not backwards-compatible__ and require adjusting existing QP/C++ applications.
48
+
49
+
50
+
Additionally, this release introduces the new pre-defined QS record #QS_QF_NEW_ATTEMPT, which is generated when Q_NEW_X() fails to allocate a dynamic event. Also, this release __reverses the order__ of the pre-defined QS records #QS_QF_NEW and #QS_QF_MPOOL_GET. This was necessary if the dynamic allocation is allowed to fail, because only _after_ attempting to allocate a memory block, the QF::newX_() function can generate either #QS_QF_NEW or #QS_QF_NEW_ATTEMPT.
51
+
52
+
@note
53
+
The reversal of #QS_QF_NEW and #QS_QF_MPOOL_GET trace records has implications for the existing [<b>QUTest test scripts</b>](https://www.state-machine.com/qtools/qutest_script.html), where the order of expectations for "QF-New" and "MP-Get" needs to be reversed as well.
54
+
55
+
56
+
Additionally, this release modifies the @ref qxk "QXK" source code, so that the `QActive.prio` attribute is the fixed priority assigned in QActive_start(), while `QActive.dynPrio` is the "dynamic" priority that can be changed when a @ref qxk_extended "QXK extended thread" acquires a @ref QP::QXMutex "mutex".
57
+
58
+
59
+
__Updated Ports:__
60
+
61
+
- all ARM Cortex-M ports (added workaround for the [<b>ARM Erratum 838869</b>](https://www.state-machine.com/doc/Cortex-M4_Software_Developers_Errata_Notice_v3.pdf))
62
+
- all QK ports (because of the changed QMPool::get() / QMPool::put() interface)
63
+
- all QXK ports (because of the changed QMPool::get() / QMPool::put() interface)
64
+
- embOS port (because of the changed QMPool::get() / QMPool::put() interface)
65
+
- FreeRTOS port (because of the changed QMPool::get() / QMPool::put() interface)
66
+
- ThreadX port (because of the changed QMPool::get() / QMPool::put() interface)
67
+
- uC/OS-II port (because of the changed QMPool::get() / QMPool::put() interface)
68
+
- posix, posix-qv (because of the changed QMPool::get() / QMPool::put() interface)
69
+
- win32, win32-qv (because of the changed QMPool::get() / QMPool::put() interface)
70
+
71
+
72
+
__Feature Requests:__
73
+
74
+
- [feature#181 "Use of QS_U64()) on 32 bit machine"](https://sourceforge.net/p/qpc/feature-requests/181)
75
+
76
+
__Bug Fixes:__
77
+
78
+
- [bug#279 "Confusing documentation of QF_newX_()"](https://sourceforge.net/p/qpc/bugs/279)
79
+
- [bug#280 "QXK_onContextSw() not called at the end of QXK_activate_()"](https://sourceforge.net/p/qpc/bugs/280)
80
+
81
+
5
82
@section qpcpp_6_9_0 Version 6.9.0, 2020-08-21
6
83
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
84
@@ -35,7 +112,7 @@ The #QS_QF_RUN record is now generated in [QUTest unit testing](https://www.stat
35
112
+ 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.
36
113
+ Added examples of new [Sequence Diagram Generation](https://www.state-machine.com/qtools/html/qspy_seq.html) in QSPY 6.9.0
37
114
38
-
+ The example projects for MSP430 now contain the `ccs-ti` and `ccs-gnu` directories, for the TI-MSP430 and GNU-MSP430 toolchains, respectively.
115
+
+ The example projects for MSP430 now contain the `ccs-ti` and `ccs-gnu` directories, for the TI-MSP430 and GNU-MSP430 toolchains, respectively.
0 commit comments