Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit33aa75c

Browse files
committed
8.0.0
1 parentbea51e8 commit33aa75c

File tree

224 files changed

+5994
-43120
lines changed

Some content is hidden

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

224 files changed

+5994
-43120
lines changed

‎.gitignore‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,29 @@
3737
version-*
3838
JLink*.*
3939

40-
cert/
40+
include/qs.hpp
41+
include/qs_pkg.hpp
42+
include/qxk.hpp
43+
src/qs/qs.cpp
44+
src/qs/qs_64bit.cpp
45+
src/qs/qs_fp.cpp
46+
src/qs/qs_rx.cpp
47+
src/qs/qutest.cpp
48+
src/qxk/qxk.cpp
49+
src/qxk/qxk_mutex.cpp
50+
src/qxk/qxk_sema.cpp
51+
src/qxk/qxk_xthr.cpp
52+
53+
ports/posix-qutest/
54+
ports/win32-qutest/
55+
56+
priv/
4157
html/
4258
latex/
43-
doxygen/gen/
44-
test_priv/
4559
dbg/
4660
rel/
4761
spy/
48-
build/
49-
build_rel/
50-
build_spy/
62+
build*/
5163
settings/
5264
.settings/
5365
targetConfigs/

‎LICENSES/License.txt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Quantum Leaps Dual-Licensing:
33
The QP/C Real-Time Embedded Framework is dually-licensed under
44
the following two alternatives:
55

6-
1. Open source GNU General Public License (GPL)
7-
version 3, or alternatively,
6+
1. Open source GNU General Public License (GPL) version 3,
7+
or alternatively,
88

99
2. One of the closed source Quantum Leaps commercial licenses.
1010

‎LICENSES/LicenseRef-QL-dual.qlc‎

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
1-
Any user of the QP/C++ real-time embedded framework
1+
public
22
qpcpp
33
2025-12-31
4-
5-
Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
4+
Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
65

76
Q u a n t u m L e a P s
87
------------------------
98
Modern Embedded Software
109

1110
SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
1211

13-
This software is dual-licensed under the terms of the open source GNU
14-
General Public License version 3 (or any later version), or alternatively,
15-
under the terms of one of the closed source Quantum Leaps commercial
16-
licenses.
17-
18-
The terms of the open source GNU General Public License version 3
19-
can be found at: <www.gnu.org/licenses/gpl-3.0>
20-
21-
The terms of the closed source Quantum Leaps commercial licenses
22-
can be found at: <www.state-machine.com/licensing>
12+
The QP/C++ software is dual-licensed under the terms of the open-source
13+
GNU General Public License (GPL) or under the terms of one of the closed-
14+
source Quantum Leaps commercial licenses.
2315

2416
Redistributions in source code must retain this top-level comment block.
2517
Plagiarizing this software to sidestep the license obligations is illegal.
2618

27-
Contact information:
19+
NOTE:
20+
The GPL does NOT permit the incorporation of this code into proprietary
21+
programs. Please contact Quantum Leaps for commercial licensing options,
22+
which expressly supersede the GPL and are designed explicitly for
23+
closed-source distribution.
24+
25+
Quantum Leaps contact information:
2826
<www.state-machine.com/licensing>
2927
<info@state-machine.com>
30-
#CEF384A62BD9270573AA82386A5BE6F6E36AD848
28+
#48B37CF39D4FD9DE279250B31FD388AFD0BE9B40

‎README.md‎

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ provides instructions on how to download, install, and get started with QP.
3434
-[AppNote: "Getting Started with QP Real-Time Embedded Frameworks"][AN]
3535
contains also a tutorial, in which you build a simple "Blinky" application.
3636

37-
##Licensing
38-
The QP frameworks (QP/C and QP/C++) are licensed under the
37+
#Licensing
38+
The QP/C++ real-time embedded framework is licensed under the
3939
[dual licensing model](https://www.state-machine.com/licensing), with
4040
the following licensing options:
4141

4242
1.[Open-source licensing](https://www.state-machine.com/licensing#Open) under the
4343
[GNU General Public License (GPLv3)](https://www.gnu.org/licenses/gpl-3.0.en.html).
4444

45-
>NOTE: GPL requires that all modifications to the original code
45+
>NOTE:TheGPL requires that all modifications to the original code
4646
as well as your application code (Derivative Works as defined in the
4747
Copyright Law) must also be released under the terms of the GPL
4848
open source license.
@@ -56,13 +56,26 @@ proprietary status of their code.
5656
all QP frameworks can be licensed commercially, in which case you don't use
5757
any open source license and you do not violate your policy.
5858

59+
##Files Removed from the QP/C++ Open Source GPL Distribution
60+
Due to the widespread non-compliance with the GPL, as well as infringement on the
61+
[dual-licensing model of QP frameworks][Lic], the following QP/C++ components
62+
have been**removed from the open-source GPL distribution**:
63+
- QS target-resident software tracing component
64+
- QXK dual-mode kernel
65+
66+
>NOTE: These components are available to the[commercial licensees][Cust] with
67+
the active Support Term. Please contact[Quantum Leaps technical support][Sup]
68+
to get the complete QP/C++ framework distribution.
69+
70+
>NOTE: To request**evaluation** of the complete QP/C++ framework, please contact
71+
Quantum Leaps at:https://www.state-machine.com/contact
5972

6073
#About QP/C++
6174
QP/C++ (Quantum Platform in C++) is a lightweight, open source
6275
[Real-Time Embedded Framework (RTEF)][RTEF] for building modern embedded
6376
software as systems of asynchronous, event-driven[Active Objects][Active]
6477
(actors). The[QP/C++] framework is a member of a[QP] family consisting of
65-
[QP/C] and[QP/C++] frameworks, which are strictly quality controlled,
78+
[QP/C++] and[QP/C] frameworks, which are strictly quality controlled,
6679
thoroughly documented, and[commercially licensable][Lic].
6780

6881
##Safer Model of Concurrency
@@ -103,7 +116,7 @@ without any traditional RTOS. The framework contains a selection of
103116
the[preemptive non-blocking QK kernel][QK], and the preemptive,
104117
[dual-mode QXK kernel][QXK] that provides all the features you might expect
105118
from a traditional RTOS. Native QP ports and ready-to-use examples are provided
106-
for major CPUs, such as ARM Cortex-M (M0/M0+/M3/M4/M7/M23/M33/M85).
119+
for major CPUs, such as ARM Cortex-M (M0/M0+/M3/M4/M7/M23/M33/...).
107120

108121
##Traditional RTOS/OS
109122
QP/C++ can also work with a traditional RTOS, such as ThreadX, embOS, FreeRTOS,
@@ -138,12 +151,18 @@ in your web browser.
138151
#How to Help this Project?
139152
If you like this project, please give it a star (in the upper-right corner of your browser window):
140153

141-
![GitHub star](https://www.state-machine.com/img/github-star.jpg)
154+
<palign="center">
155+
<imgsrc="https://www.state-machine.com/img/github-star.jpg"/><br>
156+
</p>
142157

143158
[RTEF]:<https://www.state-machine.com/rtef>
144159
[QP]:<https://www.state-machine.com/products/qp>
145160
[QP/C]:<https://github.com/QuantumLeaps/qpc>
146161
[QP/C++]:<https://github.com/QuantumLeaps/qpcpp>
162+
[QS/C++]:<https://www.state-machine.com/qpcpp/srs-qp_qs.html>
163+
[QV]:<https://www.state-machine.com/qpcpp/srs-qp_qv.html>
164+
[QK]:<https://www.state-machine.com/qpcpp/srs-qp_qk.html>
165+
[QXK]:<https://www.state-machine.com/qpcpp/srs-qp_qxk.html>
147166
[QM]:<https://github.com/QuantumLeaps/qm>
148167
[QTools]:<https://github.com/QuantumLeaps/qtools>
149168
[QP-Rel]:<https://github.com/QuantumLeaps/qpcpp/releases>
@@ -153,6 +172,7 @@ If you like this project, please give it a star (in the upper-right corner of yo
153172
[HSM]:<https://www.state-machine.com/qpcpp/srs-qp_sm.html>
154173
[Lic]:<https://www.state-machine.com/licensing>
155174
[Cust]:<https://www.state-machine.com/customers>
175+
[Sup]:<mailto:support@state-machine.com>
156176
[AN]:<https://www.state-machine.com/doc/AN_Getting_Started_with_QP.pdf>
157177
[Tutorial]:<https://www.state-machine.com/qpcpp/gs_tut.html>
158178
[Video]:<https://youtu.be/O7ER6_VqIH0>

‎cmakeSupport.md‎

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ set(QPCPP_PROJECT qpcPrj)
3838
set(QPCPP_CFG_KERNEL QV)
3939
set(QPCPP_CFG_GUI TRUE)
4040
set(QPCPP_CFG_PORT win32)
41+
# QP/CPP 8.0.0: to include a local 'qp_config.hpp' add the related include path
42+
# to the qpcpp build settings. Replace "${CMAKE_CURRENT_LIST_DIR}/include" by
43+
# your project specific path!
44+
set(QPCPP_CFG_QPCONFIG_H_INCLUDE_PATH ${CMAKE_CURRENT_LIST_DIR}/include)
4145
qpcpp_sdk_init()
4246
4347
target_link_libraries(qpcppApp PRIVATE qpcpp)
@@ -78,6 +82,9 @@ This file is situated in the root directory of qpcpp. It performs a pre-initiali
7882
*`QPCPP-CFG-GUI` - BOOL: set this Boolean variable to ON/TRUE, if GUI support (win32) shall be compiled in. Default: OFF
7983
*`QPCPP_CFG_UNIT_TEST` - BOOL: set this to ON/TRUE to support qutest, if build configuration`Spy` is active. Default: OFF
8084
*`QPCPP_CFG_VERBOSE` - BOOL: set this to enable more verbosity in message output. Default: OFF
85+
*`QPCPP_CFG_QPCONFIG_H_INCLUDE_PATH`: - STRING (PATH): (`QP/CPP 8.0.0`) set this to have the build of QP/CPP use your project specific`qp_config.hpp`.
86+
Default:`${QPCPP_SDK_PATH}/ports/config`
87+
8188

8289
###General usage hints
8390
1. Set`QPCPP_SDK_PATH` or`QPCPP_FETCH_FROM_GIT` either in your`CMakeLists.txt` file or as an environment variable.
@@ -87,7 +94,7 @@ This file is situated in the root directory of qpcpp. It performs a pre-initiali
8794
5. Define the cmake target (executable or library)
8895
6. Include`qpcpp_sdk_init.cmake`
8996
7. configure the qpc SDK
90-
8. call`qpcpp_sdk_init`
97+
8. call`qpcpp_sdk_init()`
9198
9. Add the qpcpp library to your cmake target:
9299
`target_link_libraries(<target>> PRIVATE qpcpp)`
93100

@@ -102,53 +109,23 @@ Generate and build your cmake project
102109
Refer to the[CMakePresets.json manual](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html) for further details.
103110
Then you generate with`cmake --preset=<preset> .` from your project directory. The build then can be started with`cmake --build --preset=<preset>`.
104111

105-
###QPC configurations support
112+
###QPCPP configurations support
106113
Many`qpcpp` examples provide 3 build configurations:
107114
*`Debug` - build with debug support and debug symbols. Most optimizations are turned off
108115
*`Release` - build without debug support. Activate optimizations instead
109116
*`Spy` - build like`Debug`. Additionally activate support for`QSpy`.
110117

111118
These configurations are also supported by qpcpp with cmake. Different possibilities exist to activate those.
112119

113-
###`qp_config.h` support
114-
Some build configurations require the inclusion of`qp_config.h`. To achieve this, the QPC macro`QP_CONFIG` should be set, when compiling the
115-
`qpcpp` source files. The include search paths also needs to be set accordingly in order for the preprocessor to be able to find the correct include
116-
file.
120+
###`qp_config.hpp` support
121+
With the release of QP/C++ V8.0.0 the inclusion of`qp_config.hpp` is mandatory.
122+
The`cmake` build system of qpc addresses this by providing the configuration variable`QPCPP_CFG_QPCONFIG_H_INCLUDE_PATH`. Set this to the path of your local project's`qp_config.hpp` and this will automatically be found by the build system. Do this in your main`CMakeLists.txt` file__before__ calling`qpcpp_sdk_init()`.
117123

118-
As`qp_config.hpp` is a project related file, which - in most cases - resides outside the`qpcpp` source code tree, the decision is to handle the
119-
above mentioned topic within the root project's`CMakeLists.txt` file instead of integrating this topic into a rather complicated configuration
120-
of`qpcpp` itself.
124+
You do not need to set this variable, should the qpcpp default settings be sufficient for your project. In this case the build system uses the`qp_config.hpp` file, as it can be found in the directory`${QPCPP_SDK_PATH}/src/ports/config`.
121125

122126
An example can be found in the[cmake dpp example](https://github.com/QuantumLeaps/qpcpp-examples/tree/main/posix-win32-cmake/dpp). Have a look into
123127
the example's[CMakeLists.txt](https://github.com/QuantumLeaps/qpcpp-examples/blob/main/posix-win32-cmake/dpp/CMakeLists.txt).
124128

125-
You will find the reference to the`qpc` library, followed by the project's specific setup for`qp_config.h` like this:
126-
```
127-
# set up qpcpp library
128-
target_link_libraries(dpp
129-
PRIVATE
130-
qpcpp
131-
)
132-
# should a 'qp_config.h' configuration file be used and is it available
133-
# edit the HINTS in the 'find_file()' call according to your project settings
134-
if(USE_QP_CONFIG)
135-
find_file(QP_CONFIG qp_config.h HINTS ${CMAKE_CURRENT_SOURCE_DIR}) # try to identify 'qp_config.h'
136-
if(QP_CONFIG) # found 'qp_config.h'
137-
cmake_path(GET QP_CONFIG PARENT_PATH QP_CONFIG_DIR) # extract the path from the FQFN
138-
target_compile_definitions(qpcpp # add -DQP_CONFIG to the qpcpp build
139-
PUBLIC
140-
QP_CONFIG
141-
)
142-
target_include_directories(qpcpp # add the path to 'qp_config.h' to the list of include paths for qpcpp
143-
PUBLIC
144-
${QP_CONFIG_DIR}
145-
)
146-
else() # 'qp_config.h' requested but not find - try to configure and build anyways
147-
message(WARNING "File 'qp_config.h' not found!")
148-
endif()
149-
endif()
150-
```
151-
152129
###Multi configuration generators
153130
The most easy way to make use of the different configurations is to use a multi config generator like`Ninja Multi-Config` or`MS Visual Studio`.
154131
Using one of such generators enables to generate the build system using`cmake` and afterwards simply selecting the desired build configuration like

‎examples‎

Submoduleexamples updated648 files

‎include/README.md‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#Files Missing from the QP/C++ GPL Distribution
2+
Due to the widespread non-compliance with the GPL, as well as infringement
3+
on the[dual-licensing model of QP frameworks][Lic], the following files
4+
have been**removed from the open-source GPL distribution**:
5+
6+
```
7+
qpcpp
8+
|
9+
+---include
10+
| qs.hpp
11+
| qs_pkg.hpp
12+
| qxk.hpp
13+
|
14+
\---src
15+
|
16+
+---qs
17+
| qs.cpp
18+
| qs_64bit.cpp
19+
| qs_fp.cpp
20+
| qs_rx.cpp
21+
| qutest.cpp
22+
|
23+
\---qxk
24+
qxk.cpp
25+
qxk_mutex.cpp
26+
qxk_sema.cpp
27+
qxk_xthr.cpp
28+
```
29+
30+
>NOTE: These files are available to the[commercial licensees][Cust] with
31+
the active Support Term. Please contact[Quantum Leaps technical support][Sup]
32+
to get the complete QP/C++ framework distribution.
33+
34+
#QP/C++ Framework Evaluation
35+
To request**evaluation** of the complete QP/C++ framework, please contact
36+
Quantum Leaps at:
37+
-https://www.state-machine.com/contact
38+
39+
#Quantum Leaps Licensing:
40+
To learn more about the open source and commercial licensing options:
41+
-https://www.state-machine.com/licensing
42+
43+
[Lic]:<https://www.state-machine.com/licensing>
44+
[Cust]:<https://www.state-machine.com/customers>
45+
[Sup]:<mailto:support@state-machine.com>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp