Skip to content

Commit efec637

Browse files
committed
8.0.0
1 parent d3f94c7 commit efec637

File tree

244 files changed

+6070
-45177
lines changed

Some content is hidden

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

244 files changed

+6070
-45177
lines changed

.gitignore

+18-6
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,29 @@
3737
version-*
3838
JLink*.*
3939

40-
cert/
40+
include/qs.h
41+
include/qs_pkg.h
42+
include/qxk.h
43+
src/qs/qs.c
44+
src/qs/qs_64bit.c
45+
src/qs/qs_fp.c
46+
src/qs/qs_rx.c
47+
src/qs/qutest.c
48+
src/qxk/qxk.c
49+
src/qxk/qxk_mutex.c
50+
src/qxk/qxk_sema.c
51+
src/qxk/qxk_xthr.c
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

+2-2
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

+13-15
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
qpc
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 GNU
13+
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
30-
#BC89496843DE5343CECA990E1370BDD6F9ACDC56
28+
#2BACD81DCE8ED122C193E4F48A14170D660DFF1E

README.md

+25-5
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: The GPL 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,6 +56,19 @@ 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
@@ -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+
<p align="center">
155+
<img src="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/qpc/srs-qp_qs.html>
163+
[QV]: <https://www.state-machine.com/qpc/srs-qp_qv.html>
164+
[QK]: <https://www.state-machine.com/qpc/srs-qp_qk.html>
165+
[QXK]: <https://www.state-machine.com/qpc/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/qpc/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/qpc/srs-qp_sm.html>
154173
[Lic]: <https://www.state-machine.com/licensing>
155174
[Cust]: <https://www.state-machine.com/customers>
175+
[Sup]: <mailto:[email protected]>
156176
[AN]: <https://www.state-machine.com/doc/AN_Getting_Started_with_QP.pdf>
157177
[Tutorial]: <https://www.state-machine.com/qpc/gs_tut.html>
158178
[Video]: <https://youtu.be/O7ER6_VqIH0>

cmakeSupport.md

+11-35
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ set(QPC_PROJECT qpcPrj)
3838
set(QPC_CFG_KERNEL QV)
3939
set(QPC_CFG_GUI TRUE)
4040
set(QPC_CFG_PORT win32)
41+
# QP/C 8.0.0: to include a local 'qp_config.h' add the related include path
42+
# to the qpc build settings. Replace "${CMAKE_CURRENT_LIST_DIR}/include" by
43+
# your project specific path!
44+
set(QPC_CFG_QPCONFIG_H_INCLUDE_PATH ${CMAKE_CURRENT_LIST_DIR}/include)
4145
qpc_sdk_init()
4246
4347
target_link_libraries(qpcApp PRIVATE qpc)
@@ -78,6 +82,8 @@ This file is situated in the root directory of qpc. It performs a pre-initializa
7882
* `QPC-CFG-GUI` - BOOL: set this boolean variable to ON/TRUE, if GUI support (win32) shall be compiled in. Default: OFF
7983
* `QPC_CFG_UNIT_TEST` - BOOL: set this to ON/TRUE to support qutest, if build configuration `Spy` is active. Default: OFF
8084
* `QPC_CFG_VERBOSE` - BOOL: set this to enable more verbosity in message output. Default: OFF
85+
* `QPC_CFG_QPCONFIG_H_INCLUDE_PATH`: - STRING (PATH): (`QP/C 8.0.0`) set this to have the build of QP/C use your project specific `qp_config.h`.
86+
Default: `${QPC_SDK_PATH}/ports/config`
8187

8288
### General usage hints
8389
1. Set `QPC_SDK_PATH` or `QPC_FETCH_FROM_GIT` either in your `CMakeLists.txt` file or as an environment variable.
@@ -111,43 +117,13 @@ Many `qpc` examples provide 3 build configurations:
111117
These configurations are also supported by qpc with cmake. Different possibilities exist to activate those.
112118

113119
### `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-
`qpc` 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+
With the release of QP/C V8.0.0 the inclusion of `qp_config.h` is mandatory.
121+
The `cmake` build system of qpc addresses this by providing the configuration variable `QPC_CFG_QPCONFIG_H_INCLUDE_PATH`. Set this to the path of your local project's `qp_config.h` and this will automatically be found by the build system. Do this in your main `CMakeLists.txt` file __before__ calling `qpc_sdk_init()`.
117122

118-
As `qp_config.h` is a project related file, which - in most cases - resides outside the `qpc` 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 `qpc` itself.
123+
You do not need to set this variable, should the qpc default settings be sufficient for your project. In this case the build system uses the `qp_config.h` file, as it can be found in the directory `${QPC_SDK_PATH}/src/ports/config`.
121124

122-
An example can be found in the [cmake dpp example](https://github.com/QuantumLeaps/qpc-examples/tree/main/posix-win32-cmake/dpp). Have a look into
123-
the example's [CMakeLists.txt](https://github.com/QuantumLeaps/qpc-examples/blob/main/posix-win32-cmake/dpp/CMakeLists.txt).
124-
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 qpc library
128-
target_link_libraries(dpp
129-
PRIVATE
130-
qpc
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(qpc # add -DQP_CONFIG to the qpc build
139-
PUBLIC
140-
QP_CONFIG
141-
)
142-
target_include_directories(qpc # add the path to 'qp_config.h' to the list of include paths for qpc
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-
```
125+
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
126+
the example's [CMakeLists.txt](https://github.com/QuantumLeaps/qpcpp-examples/blob/main/posix-win32-cmake/dpp/CMakeLists.txt).
151127

152128
### Multi configuration generators
153129
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`.

examples

Submodule examples updated 734 files

include/README.md

+45
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+
qpc
8+
|
9+
+---include
10+
| qs.h
11+
| qs_pkg.h
12+
| qxk.h
13+
|
14+
\---src
15+
|
16+
+---qs
17+
| qs.c
18+
| qs_64bit.c
19+
| qs_fp.c
20+
| qs_rx.c
21+
| qutest.c
22+
|
23+
\---qxk
24+
qxk.c
25+
qxk_mutex.c
26+
qxk_sema.c
27+
qxk_xthr.c
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:[email protected]>

0 commit comments

Comments
 (0)