mirror of
https://github.com/QuantumLeaps/qpc.git
synced 2025-01-28 07:03:10 +08:00
8.0.2
This commit is contained in:
parent
12c924a156
commit
6d29ea6699
@ -7,7 +7,7 @@ licenses designed for licensees interested in retaining the proprietary
|
||||
status of their code.
|
||||
|
||||
The Quantum Leaps commercial licenses expressly supersede the GPL open source
|
||||
license. This means that when you license the QP/C or QP/C++ Real-Time
|
||||
license. This means that when you license the QP/C or QP/C++ Real-Time
|
||||
Embedded Frameworks under a Quantum Leaps commercial license, you specifically
|
||||
do not use the software under the open source license and therefore you are
|
||||
not subject to any of its terms.
|
||||
@ -15,8 +15,8 @@ not subject to any of its terms.
|
||||
Quantum Leaps commercial licensing options are described below:
|
||||
|
||||
|
||||
Single Product License
|
||||
----------------------
|
||||
SPDX-License-Identifier: LicenseRef-QL-Single-Product
|
||||
-----------------------------------------------------
|
||||
Single Product License allows a given company ("Licensee") to embed the
|
||||
specified type(s) of the QP Real-Time Embedded Framework(s) into one end-
|
||||
product of the Licensee (Single Product). Licensee can distribute/sell an
|
||||
@ -33,8 +33,8 @@ Volume discounts are offered if several Single Products are licensed at once
|
||||
with one license agreement.
|
||||
|
||||
|
||||
Product Line License
|
||||
--------------------
|
||||
SPDX-License-Identifier: LicenseRef-QL-Product-Line
|
||||
---------------------------------------------------
|
||||
Product Line License allows a given company ("Licensee") to embed the
|
||||
specified type(s) of the QP Real-Time Embedded Framework(s) into any number
|
||||
of end-products within a family of related products (Product Line). Licensee
|
||||
@ -44,8 +44,8 @@ Product Line. Product Line License applies to all end-products that do
|
||||
similar functions within the same Product Line.
|
||||
|
||||
|
||||
Any-Product License
|
||||
-------------------
|
||||
SPDX-License-Identifier: LicenseRef-QL-Any-Product
|
||||
--------------------------------------------------
|
||||
Any-Product License allows a given company ("Licensee") to embed the
|
||||
specified type(s) of the QP Real-Time Embedded Framework(s) into any end-
|
||||
product of that company. The Licensee can distribute/sell an unlimited number
|
||||
@ -53,8 +53,8 @@ of the products containing the licensed QP framework type(s) (royalty-free
|
||||
licensing).
|
||||
|
||||
|
||||
Site License
|
||||
------------
|
||||
SPDX-License-Identifier: LicenseRef-QL-Site
|
||||
-------------------------------------------
|
||||
Site-License allows a given company ("Licensee") to embed the specified
|
||||
type(s) of the QP Real-Time Embedded Framework(s) into any end-customer
|
||||
product, as long as the products are designed at a given physical location
|
||||
@ -64,8 +64,8 @@ designed for development contractors and consultants, who develop embedded
|
||||
software for other companies.
|
||||
|
||||
|
||||
OEM License
|
||||
-----------
|
||||
SPDX-License-Identifier: LicenseRef-QL-OEM
|
||||
------------------------------------------
|
||||
OEM License allows a given company ("Licensee") to embed the specified
|
||||
type(s) of the QP Real-Time Embedded Framework(s) in any product of that
|
||||
company (Original Equipment Manufacturer) and gives limited sublicensing
|
||||
@ -74,14 +74,12 @@ affiliates. OEM licenses are customizable to match exactly the specific
|
||||
licensing needs of a given Licensee.
|
||||
|
||||
|
||||
Education License
|
||||
-----------------
|
||||
Education License allows a given accredited educational institution
|
||||
("Licensee") to use and embed the specified type(s) of the QP Real-Time
|
||||
Embedded Framework(s) in any project completed at that educational
|
||||
institution. To be eligible for this license, the institution must be
|
||||
focused mainly on teaching students. The Education Licenses are free
|
||||
and will be granted liberally upon request.
|
||||
SPDX-License-Identifier: LicenseRef-QL-Eval
|
||||
-------------------------------------------
|
||||
Evaluation License allows a specific company ("Licensee") to temporarily
|
||||
use the specified type(s) of the QP Real-Time Embedded Framework(s) for
|
||||
in-house evaluation. This license expressly prohibits any distribution
|
||||
of the licensed QP software.
|
||||
|
||||
|
||||
****
|
||||
|
@ -1,6 +1,7 @@
|
||||
public
|
||||
qpc
|
||||
2025-12-31
|
||||
|
||||
Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
|
||||
Q u a n t u m L e a P s
|
||||
@ -9,9 +10,9 @@ Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
|
||||
The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
General Public License (GPL) or under the terms of one of the closed-
|
||||
source Quantum Leaps commercial licenses.
|
||||
This software is dual-licensed under the terms of the open-source GNU
|
||||
General Public License (GPL) or, alternatively under the terms of one of
|
||||
the closed-source Quantum Leaps commercial licenses.
|
||||
|
||||
Redistributions in source code must retain this top-level comment block.
|
||||
Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
@ -25,4 +26,4 @@ closed-source distribution.
|
||||
Quantum Leaps contact information:
|
||||
<www.state-machine.com/licensing>
|
||||
<info@state-machine.com>
|
||||
#2BACD81DCE8ED122C193E4F48A14170D660DFF1E
|
||||
#1671FF5623AF7CA93973FA6EC044A008F7F65702
|
122
README.md
122
README.md
@ -16,6 +16,39 @@ git clone https://github.com/QuantumLeaps/qpc --recurse-submodules --depth 1
|
||||
Alternatively, you can also download one of the stable
|
||||
[QP/C Releases][QP-Rel].
|
||||
|
||||
# About QP/C Real-Time Embedded Framework
|
||||
QP/C real-time embedded framework (RTEF) is a lightweight implementation of
|
||||
the [Active Object (a.k.a. Actor) model of computation][AOmod] specifically
|
||||
tailored for deeply embedded real-time systems, such as microcontrollers (MCUs).
|
||||
QP/C is both a software infrastructure for building applications consisting
|
||||
of Active Objects (Actors) and a runtime environment for executing the Active
|
||||
Objects in a deterministic, real-time fashion. Additionally, QP/C Framework
|
||||
supports Hierarchical State Machines with which to specify the behavior of
|
||||
Active Objects [UML 2.5], [Sutter:10], [ROOM:94]. The QP/C Framework can be
|
||||
viewed as a modern, asynchronous, and truly event driven real-time operating
|
||||
system (RTOS).
|
||||
|
||||
## QP Framework Family
|
||||
QP/C framework is part of the larger QP family consisting of the following
|
||||
QP editions:
|
||||
|
||||
|QP Edition | Language | API | Safety Functions |Certification Artifacts| Licensing
|
||||
|:----------|:-----------:|:-----------------|:-------------------|:----------------|:---------
|
||||
| QP/C | C (C11) |same as SafeQP/C |Selected Assertions |Req/Arch/Design | [dual][Lic]
|
||||
| SafeQP/C | C (C11) |same as QP/C |All Safety Functions|Certification Kit| [commercial][Com]
|
||||
| QP/C++ | C++ (C++17) |same as SafeQP/C++|Selected Assertions |Req/Arch/Design | [dual][Lic]
|
||||
| SafeQP/C++| C++ (C++17) |same as QP/C++ |All Safety Functions|Certification Kit| [commercial][Com]
|
||||
|
||||
[The documentation](#documentation) of all QP editions includes the
|
||||
[Requirements][SRS], [Architecture][SAS], and [Design Specifications][SDS],
|
||||
which are the best source of information about the underlying concepts,
|
||||
functionality, architecture, and design of the QP Frameworks and the QP
|
||||
Applications based on the frameworks.
|
||||
|
||||
> **NOTE:** The **SafeQP** frameworks additionally contain **Safety Functions**
|
||||
required to achieve the higher safety integrity levels and come with much more
|
||||
extensive [Certification Kits][Cert].
|
||||
|
||||
|
||||
# Getting Started with QP/C
|
||||
The most recommended way of obtaining QP/C is by downloading the
|
||||
@ -25,7 +58,7 @@ The main advantage of obtaining QP/C bundled together like that is
|
||||
that you get all components, tools and examples ready to go.
|
||||
|
||||
### Getting Started Resources
|
||||
- ["QP/C Tutorial"][Tutorial]
|
||||
- ["QP/C Tutorial"][Tut]
|
||||
describes a series of progressively advanced QP/C example applications.
|
||||
|
||||
- [Video: "Getting Started with QP Real-Time Embedded Frameworks"][Video]
|
||||
@ -67,69 +100,11 @@ have been **removed from the open-source GPL distribution**:
|
||||
the active Support Term. Please contact [Quantum Leaps technical support][Sup]
|
||||
to get the complete QP/C framework distribution.
|
||||
|
||||
> NOTE: To request **evaluation** of the complete QP/C framework, please contact
|
||||
> **NOTE:** To request **evaluation** of the complete QP/C framework, please contact
|
||||
Quantum Leaps at: https://www.state-machine.com/contact
|
||||
|
||||
# About QP/C
|
||||
QP/C (Quantum Platform in C) is a lightweight, open source
|
||||
[Real-Time Embedded Framework (RTEF)][RTEF] for building modern embedded
|
||||
software as systems of asynchronous, event-driven [Active Objects][Active]
|
||||
(actors). The [QP/C] framework is a member of a [QP] family consisting of
|
||||
[QP/C] and [QP/C++] frameworks, which are strictly quality controlled,
|
||||
thoroughly documented, and [commercially licensable][Lic].
|
||||
|
||||
## Safer Model of Concurrency
|
||||
The [QP] framework family implements the
|
||||
[Active Object model of computation][AO_model], which is **inherently safer**
|
||||
than the traditional "shared state concurrency" based on explicit mutual
|
||||
exclusion and managing RTOS threads by blocking. The Active Object model
|
||||
supports and automatically enforces the following best practices
|
||||
of concurrent programming:
|
||||
|
||||
- Keep data isolated and bound to Active Objects' threads. Threads should
|
||||
hide (**encapsulate**) their private data and other resources, and not
|
||||
share them with the rest of the system.
|
||||
|
||||
- Communicate among Active Object threads **asynchronously** via [Event
|
||||
objects][Event]. Using asynchronous events keeps the threads running truly
|
||||
independently, **without blocking** on each other.
|
||||
|
||||
- Active Object threads should spend their lifetime responding to incoming
|
||||
events, so their mainline should consist of an **event-loop** that handles
|
||||
events one at a time (to completion), thus avoiding any concurrency hazards
|
||||
within an Active Object thread itself.
|
||||
|
||||
This architecture also provides higher level of abstraction and the *correct*
|
||||
abstractions to effectively apply [Hierarchical State Machines][HSM],
|
||||
**modeling** and **code generation** to deeply embedded real-time systems.
|
||||
|
||||
## Hierarchical State Machines
|
||||
The behavior of Active Objects is specified in QP/C by means of
|
||||
[Hierarchical State Machines][HSM] (UML statecharts). The framework
|
||||
supports manual coding of UML state machines in C as well as automatic
|
||||
**code generation** by means of the free [QM modeling tool][QM].
|
||||
|
||||
## Built-in Real-Time Kernels
|
||||
The QP/C framework can run on standalone on single-chip microcontrollers,
|
||||
without any traditional RTOS. The framework contains a selection of
|
||||
**built-in real-time kernels**, such as the [non-preemptive QV kernel][QV],
|
||||
the [preemptive non-blocking QK kernel][QK], and the preemptive,
|
||||
[dual-mode QXK kernel][QXK] that provides all the features you might expect
|
||||
from a traditional RTOS. Native QP ports and ready-to-use examples are provided
|
||||
for major CPUs, such as ARM Cortex-M (M0/M0+/M3/M4/M7/M23/M33/...).
|
||||
|
||||
## Traditional RTOS/OS
|
||||
QP/C can also work with a traditional RTOS, such as ThreadX, embOS, FreeRTOS,
|
||||
uC/OS-II and Zephyr, as well as with (embedded) Linux (POSIX) and Windows.
|
||||
|
||||
## Popularity and Maturity
|
||||
With 20 years of continuous development, [400+ commercial licensees][Cust],
|
||||
and many times more open source users worldwide, the QP frameworks are the
|
||||
most popular such offering on the market. They power countless electronic
|
||||
products ranging from implantable medical devices to complex weapon systems.
|
||||
|
||||
|
||||
# QP/C Documentation
|
||||
# Documentation
|
||||
The online HTML documentation for the **latest** version of QP/C is located
|
||||
at: https://www.state-machine.com/qpc
|
||||
|
||||
@ -159,20 +134,25 @@ If you like this project, please give it a star (in the upper-right corner of yo
|
||||
[QP]: <https://www.state-machine.com/products/qp>
|
||||
[QP/C]: <https://github.com/QuantumLeaps/qpc>
|
||||
[QP/C++]: <https://github.com/QuantumLeaps/qpcpp>
|
||||
[QS/C]: <https://www.state-machine.com/qpc/srs-qp_qs.html>
|
||||
[QV]: <https://www.state-machine.com/qpc/srs-qp_qv.html>
|
||||
[QK]: <https://www.state-machine.com/qpc/srs-qp_qk.html>
|
||||
[QXK]: <https://www.state-machine.com/qpc/srs-qp_qxk.html>
|
||||
[Cert]: <https://www.state-machine.com/products/qp#CERT>
|
||||
[QM]: <https://github.com/QuantumLeaps/qm>
|
||||
[QTools]: <https://github.com/QuantumLeaps/qtools>
|
||||
[QP-Rel]: <https://github.com/QuantumLeaps/qpc/releases>
|
||||
[Active]: <https://www.state-machine.com/qpc/srs-qp_ao.html>
|
||||
[AO_model]: <https://www.state-machine.com/qpc/srs-qp_ao.html#srs-qp_ao-model>
|
||||
[Event]: <https://www.state-machine.com/qpc/srs-qp_evt.html>
|
||||
[HSM]: <https://www.state-machine.com/qpc/srs-qp_sm.html>
|
||||
[Lic]: <https://www.state-machine.com/licensing>
|
||||
[Com]: <https://www.state-machine.com/licensing#Commercial>
|
||||
[Cust]: <https://www.state-machine.com/customers>
|
||||
[Sup]: <mailto:support@state-machine.com>
|
||||
[AN]: <https://www.state-machine.com/doc/AN_Getting_Started_with_QP.pdf>
|
||||
[Tutorial]: <https://www.state-machine.com/qpc/gs_tut.html>
|
||||
[Video]: <https://youtu.be/O7ER6_VqIH0>
|
||||
[QS]: <https://www.state-machine.com/qpc/srs-qp_qs.html>
|
||||
[QV]: <https://www.state-machine.com/qpc/srs-qp_qv.html>
|
||||
[QK]: <https://www.state-machine.com/qpc/srs-qp_qk.html>
|
||||
[QXK]: <https://www.state-machine.com/qpc/srs-qp_qxk.html>
|
||||
[SRS]: <https://www.state-machine.com/qpc/srs-qp.html>
|
||||
[SAS]: <https://www.state-machine.com/qpc/sas-qp.html>
|
||||
[SDS]: <https://www.state-machine.com/qpc/sds-qp.html>
|
||||
[Active]: <https://www.state-machine.com/qpc/srs-qp_ao.html>
|
||||
[AOmod]: <https://www.state-machine.com/qpc/srs-qp_ao.html#srs-qp_ao-model>
|
||||
[Event]: <https://www.state-machine.com/qpc/srs-qp_evt.html>
|
||||
[HSM]: <https://www.state-machine.com/qpc/srs-qp_sm.html>
|
||||
[QP-Rel]: <https://github.com/QuantumLeaps/qpc/releases>
|
||||
[Tut]: <https://www.state-machine.com/qpc/gs_tut.html>
|
||||
|
2
examples
2
examples
@ -1 +1 @@
|
||||
Subproject commit 81a03923724160d56faa0096823c941a3601d68e
|
||||
Subproject commit db9e713786bebe246df77a664080ab7067021659
|
@ -1,10 +1,6 @@
|
||||
//$file${include::qequeue.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qequeue.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,8 +26,7 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qequeue.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QEQUEUE_H_
|
||||
#define QEQUEUE_H_
|
||||
|
||||
@ -44,69 +39,23 @@
|
||||
#elif (QF_EQUEUE_CTR_SIZE == 2U)
|
||||
typedef uint16_t QEQueueCtr;
|
||||
#else
|
||||
#error "QF_EQUEUE_CTR_SIZE defined incorrectly, expected 1U or 2U"
|
||||
#error QF_EQUEUE_CTR_SIZE defined incorrectly, expected 1U or 2U
|
||||
#endif
|
||||
|
||||
struct QEvt; // forward declartion
|
||||
struct QEvt; // forward declaration
|
||||
|
||||
//$declare${QF::QEQueue} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QF::QEQueue} .............................................................
|
||||
//============================================================================
|
||||
//! @class QEQueue
|
||||
typedef struct QEQueue {
|
||||
// private:
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
struct QEvt const * volatile frontEvt;
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
struct QEvt const * * ring;
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr end;
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr volatile head;
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr volatile tail;
|
||||
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr volatile nFree;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QEQueue
|
||||
uintptr_t frontEvt_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr head_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr tail_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr nFree_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QEQueue
|
||||
QEQueueCtr nMin;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// type:
|
||||
struct QEvt const * volatile frontEvt; //!< @private @memberof QEQueue
|
||||
struct QEvt const * * ring; //!< @private @memberof QEQueue
|
||||
QEQueueCtr end; //!< @private @memberof QEQueue
|
||||
QEQueueCtr volatile head; //!< @private @memberof QEQueue
|
||||
QEQueueCtr volatile tail; //!< @private @memberof QEQueue
|
||||
QEQueueCtr volatile nFree; //!< @private @memberof QEQueue
|
||||
QEQueueCtr nMin; //!< @private @memberof QEQueue
|
||||
} QEQueue;
|
||||
|
||||
// dummy static member to force generating 'struct QEQueue {...}'
|
||||
extern QEQueue * QEQueue_dummy;
|
||||
|
||||
// public:
|
||||
|
||||
//! @public @memberof QEQueue
|
||||
void QEQueue_init(QEQueue * const me,
|
||||
struct QEvt const * * const qSto,
|
||||
@ -134,17 +83,12 @@ static inline QEQueueCtr QEQueue_getNFree(QEQueue const * const me) {
|
||||
|
||||
//! @public @memberof QEQueue
|
||||
static inline QEQueueCtr QEQueue_getNMin(QEQueue const * const me) {
|
||||
#ifndef Q_UNSAFE
|
||||
return me->nMin;
|
||||
#else
|
||||
return 0U;
|
||||
#endif
|
||||
}
|
||||
|
||||
//! @public @memberof QEQueue
|
||||
static inline bool QEQueue_isEmpty(QEQueue const * const me) {
|
||||
return me->frontEvt == (struct QEvt *)0;
|
||||
}
|
||||
//$enddecl${QF::QEQueue} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#endif // QEQUEUE_H_
|
||||
|
148
include/qk.h
148
include/qk.h
@ -1,10 +1,6 @@
|
||||
//$file${include::qk.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qk.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,114 +26,60 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qk.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QK_H_
|
||||
#define QK_H_
|
||||
|
||||
//$declare${QK::QK} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QK::QK} ..................................................................
|
||||
//============================================================================
|
||||
//! @class QK
|
||||
typedef struct QK {
|
||||
//! @cond INTERNAL
|
||||
uint8_t dummy;
|
||||
//! @endcond
|
||||
} QK;
|
||||
//$enddecl${QK::QK} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QK::QSchedStatus} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QK::QSchedStatus} ........................................................
|
||||
typedef uint_fast8_t QSchedStatus;
|
||||
//$enddecl${QK::QSchedStatus} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QK::QK-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QK::QK-base::Attr} .......................................................
|
||||
//============================================================================
|
||||
//! @class QK_Attr
|
||||
typedef struct {
|
||||
// private:
|
||||
|
||||
//! @memberof QK_Attr
|
||||
QPSet readySet;
|
||||
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t actPrio;
|
||||
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t nextPrio;
|
||||
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t actThre;
|
||||
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t lockCeil;
|
||||
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t intNest;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QK_Attr
|
||||
QPSet readySet_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t actPrio_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t nextPrio_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t actThre_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QK_Attr
|
||||
uint_fast8_t lockCeil_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
QPSet readySet; //!< @memberof QK_Attr
|
||||
uint_fast8_t actPrio; //!< @memberof QK_Attr
|
||||
uint_fast8_t nextPrio; //!< @memberof QK_Attr
|
||||
uint_fast8_t actThre; //!< @memberof QK_Attr
|
||||
uint_fast8_t lockCeil; //!< @memberof QK_Attr
|
||||
uint_fast8_t intNest; //!< @memberof QK_Attr
|
||||
} QK_Attr;
|
||||
|
||||
//${QK::QK-base::priv_} ......................................................
|
||||
//! @static @private @memberof QK
|
||||
extern QK_Attr QK_priv_;
|
||||
|
||||
//${QK::QK-base::schedLock} ..................................................
|
||||
//! @static @public @memberof QK
|
||||
QSchedStatus QK_schedLock(uint_fast8_t const ceiling);
|
||||
|
||||
//${QK::QK-base::schedUnlock} ................................................
|
||||
//! @static @public @memberof QK
|
||||
void QK_schedUnlock(QSchedStatus const prevCeil);
|
||||
|
||||
//${QK::QK-base::onIdle} .....................................................
|
||||
//! @static @public @memberof QK
|
||||
void QK_onIdle(void);
|
||||
|
||||
//${QK::QK-base::sched_} .....................................................
|
||||
//! @static @private @memberof QK
|
||||
uint_fast8_t QK_sched_(void);
|
||||
|
||||
//${QK::QK-base::activate_} ..................................................
|
||||
//! @static @private @memberof QK
|
||||
uint_fast8_t QK_sched_act_(
|
||||
QActive const * const act,
|
||||
uint_fast8_t const pthre_in);
|
||||
|
||||
//! @static @private @memberof QK
|
||||
void QK_activate_(void);
|
||||
//$enddecl${QK::QK-base} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//! @static @public @memberof QK
|
||||
QSchedStatus QK_schedLock(uint_fast8_t const ceiling);
|
||||
|
||||
//! @static @public @memberof QK
|
||||
void QK_schedUnlock(QSchedStatus const prevCeil);
|
||||
|
||||
//! @static @public @memberof QK
|
||||
void QK_onIdle(void);
|
||||
|
||||
//============================================================================
|
||||
// interface used only for internal implementation, but not in applications
|
||||
#ifdef QP_IMPL
|
||||
|
||||
//$declare${QK-impl} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QK-impl::QF_SCHED_STAT_} .................................................
|
||||
// scheduler locking for QK...
|
||||
#define QF_SCHED_STAT_ QSchedStatus lockStat_;
|
||||
|
||||
//${QK-impl::QF_SCHED_LOCK_} .................................................
|
||||
#define QF_SCHED_LOCK_(ceil_) do { \
|
||||
if (QK_ISR_CONTEXT_()) { \
|
||||
lockStat_ = 0xFFU; \
|
||||
@ -146,31 +88,14 @@ void QK_activate_(void);
|
||||
} \
|
||||
} while (false)
|
||||
|
||||
//${QK-impl::QF_SCHED_UNLOCK_} ...............................................
|
||||
#define QF_SCHED_UNLOCK_() do { \
|
||||
if (lockStat_ != 0xFFU) { \
|
||||
QK_schedUnlock(lockStat_); \
|
||||
} \
|
||||
} while (false)
|
||||
|
||||
//${QK-impl::QACTIVE_EQUEUE_WAIT_} ...........................................
|
||||
// QActive event queue customization for QK...
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
|
||||
//${QK-impl::QACTIVE_EQUEUE_SIGNAL_} .........................................
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
|
||||
QPSet_insert(&QK_priv_.readySet, (uint_fast8_t)(me_)->prio); \
|
||||
QPSet_update_(&QK_priv_.readySet, &QK_priv_.readySet_dis); \
|
||||
if (!QK_ISR_CONTEXT_()) { \
|
||||
if (QK_sched_() != 0U) { \
|
||||
QK_activate_(); \
|
||||
} \
|
||||
} \
|
||||
} while (false)
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
//${QK-impl::QACTIVE_EQUEUE_SIGNAL_} .........................................
|
||||
#ifdef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
|
||||
QPSet_insert(&QK_priv_.readySet, (uint_fast8_t)(me_)->prio); \
|
||||
if (!QK_ISR_CONTEXT_()) { \
|
||||
@ -179,29 +104,16 @@ void QK_activate_(void);
|
||||
} \
|
||||
} \
|
||||
} while (false)
|
||||
#endif // def Q_UNSAFE
|
||||
//$enddecl${QK-impl} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QF_EPOOL-impl} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_TYPE_} ...........................................
|
||||
// QF event pool customization for QK...
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_INIT_} ...........................................
|
||||
#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
|
||||
(QMPool_init(&(p_), (poolSto_), (poolSize_), (evtSize_)))
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_EVENT_SIZE_} .....................................
|
||||
#define QF_EPOOL_EVENT_SIZE_(p_) ((uint_fast16_t)(p_).blockSize)
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_GET_} ............................................
|
||||
#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
|
||||
((e_) = (QEvt *)QMPool_get(&(p_), (m_), (qsId_)))
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_PUT_} ............................................
|
||||
#define QF_EPOOL_PUT_(p_, e_, qsId_) \
|
||||
(QMPool_put(&(p_), (e_), (qsId_)))
|
||||
//$enddecl${QF_EPOOL-impl} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#endif // QP_IMPL
|
||||
|
||||
|
@ -1,10 +1,6 @@
|
||||
//$file${include::qmpool.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qmpool.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,8 +26,7 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qmpool.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QMPOOL_H_
|
||||
#define QMPOOL_H_
|
||||
|
||||
@ -42,6 +37,11 @@
|
||||
#define QF_MPOOL_CTR_SIZE 2U
|
||||
#endif
|
||||
|
||||
#define QF_MPOOL_EL(evType_) struct { \
|
||||
void * sto_[((sizeof(evType_) - 1U) / sizeof(void *)) + \
|
||||
(sizeof(evType_) < (2U * sizeof(void *)) ? 2U : 1U)]; \
|
||||
}
|
||||
|
||||
#if (QF_MPOOL_SIZ_SIZE == 1U)
|
||||
typedef uint8_t QMPoolSize;
|
||||
#elif (QF_MPOOL_SIZ_SIZE == 2U)
|
||||
@ -49,7 +49,7 @@
|
||||
#elif (QF_MPOOL_SIZ_SIZE == 4U)
|
||||
typedef uint32_t QMPoolSize;
|
||||
#else
|
||||
#error "QF_MPOOL_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U"
|
||||
#error QF_MPOOL_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U
|
||||
#endif
|
||||
|
||||
#if (QF_MPOOL_CTR_SIZE == 1U)
|
||||
@ -59,73 +59,21 @@
|
||||
#elif (QF_MPOOL_CTR_SIZE == 4U)
|
||||
typedef uint32_t QMPoolCtr;
|
||||
#else
|
||||
#error "QF_MPOOL_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U"
|
||||
#error QF_MPOOL_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U
|
||||
#endif
|
||||
|
||||
#define QF_MPOOL_EL(evType_) struct { \
|
||||
QFreeBlock sto_[((sizeof(evType_) - 1U) / (2U * sizeof(void *))) + 1U]; \
|
||||
}
|
||||
|
||||
//$declare${QF::QFreeBlock} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QF::QFreeBlock} ..........................................................
|
||||
//! @struct QFreeBlock
|
||||
typedef struct QFreeBlock {
|
||||
// private:
|
||||
|
||||
//! @private @memberof QFreeBlock
|
||||
struct QFreeBlock * next;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QFreeBlock
|
||||
uintptr_t next_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
} QFreeBlock;
|
||||
//$enddecl${QF::QFreeBlock} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QF::QMPool} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QF::QMPool} ..............................................................
|
||||
//============================================================================
|
||||
//! @class QMPool
|
||||
typedef struct {
|
||||
// private:
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QFreeBlock * start;
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QFreeBlock * end;
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QFreeBlock * volatile free_head;
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QMPoolSize blockSize;
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QMPoolCtr nTot;
|
||||
|
||||
//! @private @memberof QMPool
|
||||
QMPoolCtr volatile nFree;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QMPool
|
||||
QMPoolCtr nMin;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QMPool
|
||||
uintptr_t free_head_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @private @memberof QMPool
|
||||
QMPoolCtr nFree_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
void * * start; //!< @private @memberof QMPool
|
||||
void * * end; //!< @private @memberof QMPool
|
||||
void * * volatile freeHead; //!< @private @memberof QMPool
|
||||
QMPoolSize blockSize; //!< @private @memberof QMPool
|
||||
QMPoolCtr nTot; //!< @private @memberof QMPool
|
||||
QMPoolCtr volatile nFree; //!< @private @memberof QMPool
|
||||
QMPoolCtr nMin; //!< @private @memberof QMPool
|
||||
} QMPool;
|
||||
|
||||
// public:
|
||||
|
||||
//! @public @memberof QMPool
|
||||
void QMPool_init(QMPool * const me,
|
||||
void * const poolSto,
|
||||
@ -141,6 +89,5 @@ void * QMPool_get(QMPool * const me,
|
||||
void QMPool_put(QMPool * const me,
|
||||
void * const block,
|
||||
uint_fast8_t const qsId);
|
||||
//$enddecl${QF::QMPool} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#endif // QMPOOL_H_
|
||||
|
987
include/qp.h
987
include/qp.h
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,6 @@
|
||||
//$file${include::qp_pkg.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qp_pkg.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,68 +26,49 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qp_pkg.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QP_PKG_H_
|
||||
#define QP_PKG_H_
|
||||
|
||||
//$declare${QF::QF-pkg} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//============================================================================
|
||||
#define QACTIVE_CAST_(ptr_) ((QActive *)(ptr_))
|
||||
#define Q_PTR2UINT_CAST_(ptr_) ((uintptr_t)(ptr_))
|
||||
|
||||
//${QF::QF-pkg::Attr} ........................................................
|
||||
//! @class QF_Attr
|
||||
//============================================================================
|
||||
typedef struct {
|
||||
// private:
|
||||
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
//! @private @memberof QF_Attr
|
||||
QF_EPOOL_TYPE_ ePool_[QF_MAX_EPOOL];
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
//! @private @memberof QF_Attr
|
||||
uint_fast8_t maxPool_;
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
|
||||
#if (QF_MAX_EPOOL == 0U)
|
||||
//! @private @memberof QF_Attr
|
||||
uint8_t dummy;
|
||||
QF_EPOOL_TYPE_ ePool_[QF_MAX_EPOOL]; //!< @private @memberof QF_Attr
|
||||
uint_fast8_t maxPool_; //!< @private @memberof QF_Attr
|
||||
#else
|
||||
uint8_t dummy; //!< @private @memberof QF_Attr
|
||||
#endif // (QF_MAX_EPOOL == 0U)
|
||||
} QF_Attr;
|
||||
|
||||
//${QF::QF-pkg::priv_} .......................................................
|
||||
//! @static @private @memberof QF
|
||||
extern QF_Attr QF_priv_;
|
||||
extern QF_Attr QF_priv_; //!< @static @private @memberof QF
|
||||
|
||||
//${QF::QF-pkg::bzero_} ......................................................
|
||||
//! @static @private @memberof QF
|
||||
void QF_bzero_(
|
||||
void * const start,
|
||||
uint_fast16_t const len);
|
||||
//$enddecl${QF::QF-pkg} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//============================================================================
|
||||
// Bitmasks are for the QTimeEvt::flags attribute
|
||||
#define QTE_FLAG_IS_LINKED (1U << 7U)
|
||||
#define QTE_FLAG_WAS_DISARMED (1U << 6U)
|
||||
|
||||
//============================================================================
|
||||
//! @private @memberof QEvt
|
||||
static inline void QEvt_refCtr_inc_(QEvt const *me) {
|
||||
uint8_t rc = me->refCtr_ + 1U;
|
||||
static inline void QEvt_refCtr_inc_(QEvt const * const me) {
|
||||
// NOTE: this function must be called inside a critical section
|
||||
uint8_t const rc = me->refCtr_ + 1U;
|
||||
((QEvt *)me)->refCtr_ = rc; // cast away 'const'
|
||||
#ifndef Q_UNSAFE
|
||||
((QEvt *)me)->evtTag_ = (me->evtTag_ & 0xF0U) | ((~rc) & 0x0FU);
|
||||
#endif // ndef Q_UNSAFE
|
||||
}
|
||||
|
||||
//! @private @memberof QEvt
|
||||
static inline void QEvt_refCtr_dec_(QEvt const *me) {
|
||||
uint8_t rc = me->refCtr_ - 1U;
|
||||
static inline void QEvt_refCtr_dec_(QEvt const * const me) {
|
||||
// NOTE: this function must be called inside a critical section
|
||||
uint8_t const rc = me->refCtr_ - 1U;
|
||||
((QEvt *)me)->refCtr_ = rc; // cast away 'const'
|
||||
#ifndef Q_UNSAFE
|
||||
((QEvt *)me)->evtTag_ = (me->evtTag_ & 0xF0U) | ((~rc) & 0x0FU);
|
||||
#endif // ndef Q_UNSAFE
|
||||
}
|
||||
|
||||
#define QACTIVE_CAST_(ptr_) ((QActive *)(ptr_))
|
||||
#define Q_PTR2UINT_CAST_(ptr_) ((uintptr_t)(ptr_))
|
||||
|
||||
#endif // QP_PKG_H_
|
||||
|
@ -1,10 +1,6 @@
|
||||
//$file${include::qpc.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qpc.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,8 +26,7 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qpc.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QPC_H_
|
||||
#define QPC_H_
|
||||
|
||||
@ -141,6 +136,10 @@ static inline void QF_psInit(
|
||||
//! @deprecated instead use: QASM_IS_IN()
|
||||
#define QHsm_isIn(me_, state_) QASM_IS_IN((QAsm *)(me_), (state_))
|
||||
|
||||
#define QF_PUBLISH(e_, sender_) QACTIVE_PUBLISH((e_), (sender_))
|
||||
#define QF_TICK_X(tickRate_, sender_) QTIMEEVT_TICK_X((tickRate_), (sender_))
|
||||
#define QF_TICK(sender_) QTIMEEVT_TICK(sender_)
|
||||
|
||||
#endif // QP_API_VERSION < 800
|
||||
|
||||
#endif // QPC_H_
|
||||
|
@ -1,5 +1,6 @@
|
||||
//============================================================================
|
||||
// QP/C-Spy software tracing target-resident component
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -7,10 +8,9 @@
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -31,11 +31,11 @@
|
||||
#define QS_DUMMY_H_
|
||||
|
||||
#ifdef Q_SPY
|
||||
#error "Q_SPY must NOT be defined to include qs_dummy.h"
|
||||
#error Q_SPY must NOT be defined to include qs_dummy.h
|
||||
#endif
|
||||
|
||||
#ifdef Q_UTEST
|
||||
#error "Q_UTEST must NOT be defined to include qs_dummy.h"
|
||||
#error Q_UTEST must NOT be defined to include qs_dummy.h
|
||||
#endif
|
||||
|
||||
#define QS_INIT(arg_) ((uint8_t)1U)
|
||||
@ -158,9 +158,6 @@ void QS_onTestLoop(void);
|
||||
#define QS_CRIT_ENTRY() ((void)0)
|
||||
#define QS_CRIT_EXIT() ((void)0)
|
||||
|
||||
#define QS_MEM_SYS() ((void)0)
|
||||
#define QS_MEM_APP() ((void)0)
|
||||
|
||||
#define QS_TR_CRIT_ENTRY() ((void)0)
|
||||
#define QS_TR_CRIT_EXIT() ((void)0)
|
||||
#define QS_TR_ISR_ENTRY(isrnest_, prio_) ((void)0)
|
||||
|
147
include/qsafe.h
147
include/qsafe.h
@ -1,10 +1,6 @@
|
||||
//$file${include::qsafe.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qsafe.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// SafeQP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -12,63 +8,51 @@
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qsafe.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QSAFE_H_
|
||||
#define QSAFE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// QF-FuSa enabled ===========================================================
|
||||
#ifndef Q_UNSAFE
|
||||
|
||||
#ifndef QF_CRIT_STAT
|
||||
#define QF_CRIT_STAT
|
||||
#define QF_CRIT_STAT
|
||||
#endif
|
||||
|
||||
#ifndef QF_CRIT_ENTRY
|
||||
#define QF_CRIT_ENTRY() ((void)0)
|
||||
#define QF_CRIT_ENTRY() ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef QF_CRIT_EXIT
|
||||
#define QF_CRIT_EXIT() ((void)0)
|
||||
#define QF_CRIT_EXIT() ((void)0)
|
||||
#endif
|
||||
|
||||
//$declare${QP-FuSa::enabled} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QP-FuSa::enabled::Q_DEFINE_THIS_MODULE} ..................................
|
||||
#define Q_DEFINE_THIS_MODULE(name_) \
|
||||
static char const Q_this_module_[] = name_;
|
||||
|
||||
//${QP-FuSa::enabled::Q_ASSERT_INCRIT} .......................................
|
||||
#define Q_ASSERT_INCRIT(id_, expr_) \
|
||||
#define Q_ASSERT_INCRIT(id_, expr_) \
|
||||
((expr_) ? ((void)0) : Q_onError(&Q_this_module_[0], (id_)))
|
||||
|
||||
//${QP-FuSa::enabled::Q_ERROR_INCRIT} ........................................
|
||||
#define Q_ERROR_INCRIT(id_) \
|
||||
#define Q_ERROR_INCRIT(id_) \
|
||||
(Q_onError(&Q_this_module_[0], (id_)))
|
||||
|
||||
//${QP-FuSa::enabled::Q_ASSERT_ID} ...........................................
|
||||
#define Q_ASSERT_ID(id_, expr_) do { \
|
||||
QF_CRIT_STAT \
|
||||
QF_CRIT_ENTRY(); \
|
||||
@ -76,99 +60,64 @@ extern "C" {
|
||||
QF_CRIT_EXIT(); \
|
||||
} while (false)
|
||||
|
||||
//${QP-FuSa::enabled::Q_ERROR_ID} ............................................
|
||||
#define Q_ERROR_ID(id_) do { \
|
||||
QF_CRIT_STAT \
|
||||
QF_CRIT_ENTRY(); \
|
||||
Q_onError(&Q_this_module_[0], (id_)); \
|
||||
QF_CRIT_EXIT(); \
|
||||
} while (false)
|
||||
//$enddecl${QP-FuSa::enabled} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
// QF-FuSa disabled ==========================================================
|
||||
#else
|
||||
//$declare${QP-FuSa::disabled} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QP-FuSa::disabled::Q_DEFINE_THIS_MODULE} .................................
|
||||
#define Q_DEFINE_THIS_MODULE(name_)
|
||||
|
||||
//${QP-FuSa::disabled::Q_ASSERT_INCRIT} ......................................
|
||||
#define Q_ASSERT_INCRIT(id_, expr_) ((void)0)
|
||||
|
||||
//${QP-FuSa::disabled::Q_ERROR_INCRIT} .......................................
|
||||
#define Q_ERROR_INCRIT(id_) ((void)0)
|
||||
|
||||
//${QP-FuSa::disabled::Q_ASSERT_ID} ..........................................
|
||||
#define Q_ASSERT_ID(id_, expr_) ((void)0)
|
||||
|
||||
//${QP-FuSa::disabled::Q_ERROR_ID} ...........................................
|
||||
#define Q_ERROR_ID(id_) ((void)0)
|
||||
//$enddecl${QP-FuSa::disabled} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#endif
|
||||
|
||||
#endif // QF-FuSa disabled
|
||||
|
||||
//============================================================================
|
||||
//$declare1${QP-FuSa} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QP-FuSa::Q_DEFINE_THIS_FILE} .............................................
|
||||
#define Q_DEFINE_THIS_FILE Q_DEFINE_THIS_MODULE(__FILE__)
|
||||
|
||||
//${QP-FuSa::Q_ASSERT} .......................................................
|
||||
#define Q_ASSERT(expr_) Q_ASSERT_ID(__LINE__, (expr_))
|
||||
|
||||
//${QP-FuSa::Q_ERROR} ........................................................
|
||||
#define Q_ERROR() Q_ERROR_ID(__LINE__)
|
||||
|
||||
//${QP-FuSa::Q_REQUIRE_ID} ...................................................
|
||||
#define Q_REQUIRE_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_REQUIRE} ......................................................
|
||||
#define Q_REQUIRE(expr_) Q_ASSERT(expr_)
|
||||
|
||||
//${QP-FuSa::Q_REQUIRE_INCRIT} ...............................................
|
||||
#define Q_REQUIRE_INCRIT(id_, expr_) Q_ASSERT_INCRIT((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_ENSURE_ID} ....................................................
|
||||
#define Q_ENSURE_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_ENSURE} .......................................................
|
||||
#define Q_ENSURE(expr_) Q_ASSERT(expr_)
|
||||
|
||||
//${QP-FuSa::Q_ENSURE_INCRIT} ................................................
|
||||
#define Q_ENSURE_INCRIT(id_, expr_) Q_ASSERT_INCRIT((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_INVARIANT_ID} .................................................
|
||||
#define Q_INVARIANT_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_INVARIANT} ....................................................
|
||||
#define Q_INVARIANT(expr_) Q_ASSERT(expr_)
|
||||
|
||||
//${QP-FuSa::Q_INVARIANT_INCRIT} .............................................
|
||||
#define Q_DEFINE_THIS_FILE Q_DEFINE_THIS_MODULE(__FILE__)
|
||||
#define Q_ASSERT(expr_) Q_ASSERT_ID(__LINE__, (expr_))
|
||||
#define Q_ERROR() Q_ERROR_ID(__LINE__)
|
||||
#define Q_REQUIRE_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
#define Q_REQUIRE(expr_) Q_ASSERT(expr_)
|
||||
#define Q_REQUIRE_INCRIT(id_, expr_) Q_ASSERT_INCRIT((id_), (expr_))
|
||||
#define Q_ENSURE_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
#define Q_ENSURE(expr_) Q_ASSERT(expr_)
|
||||
#define Q_ENSURE_INCRIT(id_, expr_) Q_ASSERT_INCRIT((id_), (expr_))
|
||||
#define Q_INVARIANT_ID(id_, expr_) Q_ASSERT_ID((id_), (expr_))
|
||||
#define Q_INVARIANT(expr_) Q_ASSERT(expr_)
|
||||
#define Q_INVARIANT_INCRIT(id_, expr_) Q_ASSERT_INCRIT((id_), (expr_))
|
||||
|
||||
//${QP-FuSa::Q_ASSERT_STATIC} ................................................
|
||||
#define Q_ASSERT_STATIC(expr_) extern char Q_static_assert_[(expr_) ? 1 : -1]
|
||||
#ifndef Q_ASSERT_STATIC
|
||||
#define Q_ASSERT_STATIC(expr_) extern char Q_static_assert_[(expr_) ? 1 : -1]
|
||||
#endif // ndef Q_ASSERT_STATIC
|
||||
|
||||
//${QP-FuSa::Q_NORETURN} .....................................................
|
||||
#ifndef Q_NORETURN
|
||||
#define Q_NORETURN _Noreturn void
|
||||
#define Q_NORETURN _Noreturn void
|
||||
#endif // ndef Q_NORETURN
|
||||
|
||||
//${QP-FuSa::int_t} ..........................................................
|
||||
// Is this header file used outside QP?
|
||||
#ifndef QP_VERSION
|
||||
typedef int int_t;
|
||||
#define Q_DIM(array_) (sizeof(array_) / sizeof((array_)[0U]))
|
||||
#endif // ndef QP_VERSION
|
||||
|
||||
//============================================================================
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef QP_VERSION
|
||||
typedef int int_t;
|
||||
#endif // ndef QP_VERSION
|
||||
|
||||
//${QP-FuSa::Q_onError} ......................................................
|
||||
Q_NORETURN Q_onError(
|
||||
char const * const module,
|
||||
int_t const id);
|
||||
|
||||
//${QP-FuSa::Q_DIM} ..........................................................
|
||||
#ifndef QP_VERSION
|
||||
#define Q_DIM(array_) (sizeof(array_) / sizeof((array_)[0U]))
|
||||
#endif // ndef QP_VERSION
|
||||
//$enddecl${QP-FuSa} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,10 +1,6 @@
|
||||
//$file${include::qstamp.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qstamp.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,8 +26,7 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qstamp.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QSTAMP_H_
|
||||
#define QSTAMP_H_
|
||||
|
||||
|
88
include/qv.h
88
include/qv.h
@ -1,10 +1,6 @@
|
||||
//$file${include::qv.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
//
|
||||
// Model: qpc.qm
|
||||
// File: ${include::qv.h}
|
||||
//
|
||||
// This code has been generated by QM 7.0.0 <www.state-machine.com/qm>.
|
||||
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
@ -14,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -30,115 +26,59 @@
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//
|
||||
//$endhead${include::qv.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//============================================================================
|
||||
#ifndef QV_H_
|
||||
#define QV_H_
|
||||
|
||||
//$declare${QV::QV} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QV::QV} ..................................................................
|
||||
//============================================================================
|
||||
//! @class QV
|
||||
typedef struct QV {
|
||||
//! @cond INTERNAL
|
||||
uint8_t dummy;
|
||||
//! @endcond
|
||||
} QV;
|
||||
//$enddecl${QV::QV} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QV::QV-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QV::QV-base::Attr} .......................................................
|
||||
//============================================================================
|
||||
//! @class QV_Attr
|
||||
typedef struct {
|
||||
// private:
|
||||
|
||||
//! @memberof QV_Attr
|
||||
QPSet readySet;
|
||||
|
||||
//! @memberof QV_Attr
|
||||
uint_fast8_t schedCeil;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QV_Attr
|
||||
QPSet readySet_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
//! @memberof QV_Attr
|
||||
uint_fast8_t schedCeil_dis;
|
||||
#endif // ndef Q_UNSAFE
|
||||
QPSet readySet; //!< @private @memberof QV_Attr
|
||||
uint_fast8_t schedCeil; //!< @private @memberof QV_Attr
|
||||
} QV_Attr;
|
||||
|
||||
//${QV::QV-base::priv_} ......................................................
|
||||
//! @static @private @memberof QV
|
||||
extern QV_Attr QV_priv_;
|
||||
|
||||
//${QV::QV-base::schedDisable} ...............................................
|
||||
//! @static @public @memberof QV
|
||||
void QV_schedDisable(uint_fast8_t const ceiling);
|
||||
|
||||
//${QV::QV-base::schedEnable} ................................................
|
||||
//! @static @public @memberof QV
|
||||
void QV_schedEnable(void);
|
||||
|
||||
//${QV::QV-base::onIdle} .....................................................
|
||||
//! @static @public @memberof QV
|
||||
void QV_onIdle(void);
|
||||
//$enddecl${QV::QV-base} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//============================================================================
|
||||
// interface used only for internal implementation, but not in applications
|
||||
#ifdef QP_IMPL
|
||||
|
||||
//$declare${QV-impl} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QV-impl::QF_SCHED_STAT_} .................................................
|
||||
// scheduler locking for QV (not needed)...
|
||||
#define QF_SCHED_STAT_
|
||||
|
||||
//${QV-impl::QF_SCHED_LOCK_} .................................................
|
||||
#define QF_SCHED_LOCK_(dummy) ((void)0)
|
||||
#define QF_SCHED_UNLOCK_() ((void)0)
|
||||
|
||||
//${QV-impl::QF_SCHED_UNLOCK_} ...............................................
|
||||
#define QF_SCHED_UNLOCK_() ((void)0)
|
||||
|
||||
//${QV-impl::QACTIVE_EQUEUE_WAIT_} ...........................................
|
||||
// QActive event queue customization for QV...
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
|
||||
//${QV-impl::QACTIVE_EQUEUE_SIGNAL_} .........................................
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QV_priv_.readySet, (uint_fast8_t)(me_)->prio); \
|
||||
QPSet_update_(&QV_priv_.readySet, &QV_priv_.readySet_dis)
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
//${QV-impl::QACTIVE_EQUEUE_SIGNAL_} .........................................
|
||||
#ifdef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QV_priv_.readySet, (uint_fast8_t)(me_)->prio)
|
||||
#endif // def Q_UNSAFE
|
||||
//$enddecl${QV-impl} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
//$declare${QF_EPOOL-impl} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_TYPE_} ...........................................
|
||||
// QF event pool customization for QV...
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_INIT_} ...........................................
|
||||
#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
|
||||
(QMPool_init(&(p_), (poolSto_), (poolSize_), (evtSize_)))
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_EVENT_SIZE_} .....................................
|
||||
#define QF_EPOOL_EVENT_SIZE_(p_) ((uint_fast16_t)(p_).blockSize)
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_GET_} ............................................
|
||||
#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
|
||||
((e_) = (QEvt *)QMPool_get(&(p_), (m_), (qsId_)))
|
||||
|
||||
//${QF_EPOOL-impl::QF_EPOOL_PUT_} ............................................
|
||||
#define QF_EPOOL_PUT_(p_, e_, qsId_) \
|
||||
(QMPool_put(&(p_), (e_), (qsId_)))
|
||||
//$enddecl${QF_EPOOL-impl} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#define QF_EPOOL_PUT_(p_, e_, qsId_) (QMPool_put(&(p_), (e_), (qsId_)))
|
||||
|
||||
#endif // QP_IMPL
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP configuration file (QV/QK/QXK on ARM Cortex-M)
|
||||
// QP/C configuration file (QV/QK/QXK on ARM Cortex-M)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
@ -35,9 +35,9 @@
|
||||
// <o>QP API compatibility version (QP_API_VERSION)
|
||||
// <0=> 0 (Maximum compatibility)
|
||||
// <691=>691 (QP 6.9.1 or newer)
|
||||
// <734=>7.3.4 (QP 7.3.4 or newer)
|
||||
// <750=>750 (QP 7.5.0 or newer)
|
||||
// <9999=>9999 (Latest only)
|
||||
// <i>QP API backwards compatibility with the QP/C API version.
|
||||
// <i>QP API backwards compatibility with the QP API version.
|
||||
// <i>Lower QP_API_VERSION values enable backwards compatibility
|
||||
// <i>with lower (older) QP API versions.
|
||||
// <i>For example, QP_API_VERSION==691 will enable the compatibility
|
||||
@ -185,7 +185,7 @@
|
||||
// </c>
|
||||
|
||||
// <c2>Enable memory isolation (QF_MEM_ISOLATE)
|
||||
// <i>Memory isolation (requires MPU)
|
||||
// <i>Memory isolation (supported in SafeQP only, requires MPU)
|
||||
// <i>NOTE: implies QF_ON_CONTEXT_SW.
|
||||
//#define QF_MEM_ISOLATE
|
||||
// </c>
|
||||
@ -195,11 +195,13 @@
|
||||
//..........................................................................
|
||||
// <h>QV/QK/QXK built-in kernels (ARM Cortex-M)
|
||||
|
||||
#if (__ARM_ARCH > 6)
|
||||
// <c2>Kernel uses critical section based on BASEPRI (QF_USE_BASEPRI)
|
||||
// <i>If not selected, critical section will be based on PRIMASK
|
||||
// <i>NOTE: The BASEPRI threshold can be adjusted in the "Text Editor" mode.
|
||||
//#define QF_USE_BASEPRI 0x3F
|
||||
// </c>
|
||||
#endif // (__ARM_ARCH > 6)
|
||||
|
||||
// <c2>QK Kernel uses IRQ for return-from-preemption
|
||||
// <i>NOTE: Use "editor mode" to edit QK_USE_IRQ_NUM
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -16,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP configuration file (QV/QK/QXK on ARM Cortex-R)
|
||||
// QP/C configuration file (QV/QK/QXK on ARM Cortex-R)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
@ -37,7 +37,7 @@
|
||||
// <691=>691 (QP 6.9.1 or newer)
|
||||
// <734=>7.3.4 (QP 7.3.4 or newer)
|
||||
// <9999=>9999 (Latest only)
|
||||
// <i>QP API backwards compatibility with the QP/C API version.
|
||||
// <i>QP API backwards compatibility with the QP API version.
|
||||
// <i>Lower QP_API_VERSION values enable backwards compatibility
|
||||
// <i>with lower (older) QP API versions.
|
||||
// <i>For example, QP_API_VERSION==691 will enable the compatibility
|
||||
@ -185,7 +185,7 @@
|
||||
// </c>
|
||||
|
||||
// <c2>Enable memory isolation (QF_MEM_ISOLATE)
|
||||
// <i>Memory isolation (requires MPU)
|
||||
// <i>Memory isolation (supported in SafeQP only, requires MPU)
|
||||
// <i>NOTE: implies QF_ON_CONTEXT_SW.
|
||||
//#define QF_MEM_ISOLATE
|
||||
// </c>
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-11-22
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to ARM Cortex-R, preemptive QK kernel, GNU-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to ARM Cortex-R, preemptive QK kernel, IAR-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to ARM Cortex-R, preemptive QK kernel, TI-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-11-22
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to ARM Cortex-R, cooperative QV kernel, GNU-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to Cortex-R, cooperative QV kernel, IAR-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to ARM Cortex-R, cooperative QV kernel, TI-ARM
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP configuration file (generic)
|
||||
// QP/C configuration file (generic)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,11 +18,10 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
@ -37,7 +37,7 @@
|
||||
// <691=>691 (QP 6.9.1 or newer)
|
||||
// <734=>7.3.4 (QP 7.3.4 or newer)
|
||||
// <9999=>9999 (Latest only)
|
||||
// <i>QP API backwards compatibility with the QP/C API version.
|
||||
// <i>QP API backwards compatibility with the QP API version.
|
||||
// <i>Lower QP_API_VERSION values enable backwards compatibility
|
||||
// <i>with lower (older) QP API versions.
|
||||
// <i>For example, QP_API_VERSION==691 will enable the compatibility
|
||||
@ -185,7 +185,7 @@
|
||||
// </c>
|
||||
|
||||
// <c2>Enable memory isolation (QF_MEM_ISOLATE)
|
||||
// <i>Memory isolation (requires MPU)
|
||||
// <i>Memory isolation (supported in SafeQP only, requires MPU)
|
||||
// <i>NOTE: implies QF_ON_CONTEXT_SW.
|
||||
//#define QF_MEM_ISOLATE
|
||||
// </c>
|
||||
|
@ -1,4 +1,7 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
@ -7,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -15,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-26
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to embOS RTOS kernel, generic C11 compiler
|
||||
//!
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
@ -197,9 +193,6 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(200, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(201, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// the number of free slots available in the queue
|
||||
uint_fast16_t const nFree =
|
||||
@ -229,12 +222,13 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)nFree); // # free entries
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(205, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -252,7 +246,7 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_); // pool-Id&ref-Count
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_); // pool-Id&ref-Count
|
||||
QS_EQC_PRE(nFree); // # free entries
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_END_PRE()
|
||||
@ -267,20 +261,18 @@ void QActive_postLIFO_(QActive * const me, QEvt const * const e) {
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(300, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(301, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_LIFO, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(me->eQueue.maxMsg - me->eQueue.nofMsg); // # free
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(305, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -304,7 +296,7 @@ QEvt const *QActive_get_(QActive * const me) {
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)(me->eQueue.maxMsg - me->eQueue.nofMsg));
|
||||
QS_END_PRE()
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to embOS RTOS (v5), generic C11 compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,4 +1,7 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
@ -7,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -15,25 +18,18 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-10-29
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to FreeRTOS 10.x, generic C11 compiler
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-level interface
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
#include "qsafe.h" // QP Functional Safety (FuSa) Subsystem
|
||||
#ifdef Q_SPY // QS software tracing enabled?
|
||||
#include "qs_port.h" // QS port
|
||||
@ -45,11 +41,11 @@
|
||||
Q_DEFINE_THIS_MODULE("qf_port")
|
||||
|
||||
#if ( configSUPPORT_STATIC_ALLOCATION == 0 )
|
||||
#error "This QP/C port to FreeRTOS requires configSUPPORT_STATIC_ALLOCATION "
|
||||
#error This QP/C port to FreeRTOS requires configSUPPORT_STATIC_ALLOCATION
|
||||
#endif
|
||||
|
||||
#if ( configMAX_PRIORITIES < QF_MAX_ACTIVE )
|
||||
#error "FreeRTOS configMAX_PRIORITIES must not be less than QF_MAX_ACTIVE"
|
||||
#error FreeRTOS configMAX_PRIORITIES must not be less than QF_MAX_ACTIVE
|
||||
#endif
|
||||
|
||||
// Local objects -------------------------------------------------------------
|
||||
@ -129,6 +125,7 @@ static void task_function(void *pvParameters) { // FreeRTOS task signature
|
||||
}
|
||||
|
||||
//............................................................................
|
||||
//! @public @memberof QActive
|
||||
void QActive_start(QActive * const me,
|
||||
QPrioSpec const prioSpec,
|
||||
QEvtPtr * const qSto,
|
||||
@ -174,7 +171,7 @@ void QActive_start(QActive * const me,
|
||||
|
||||
// The FreeRTOS priority of the AO thread can be specified in two ways:
|
||||
//
|
||||
// 1. Implictily based on the AO's priority (by the formula specified
|
||||
// 1. Implicitly based on the AO's priority (by the formula specified
|
||||
// in the macro FREERTOS_TASK_PRIO(), see qp_port.h). This option
|
||||
// is chosen, when the higher-byte of the prioSpec parameter is set
|
||||
// to zero.
|
||||
@ -188,7 +185,7 @@ void QActive_start(QActive * const me,
|
||||
// so it is the responsibility of the application to ensure that
|
||||
// it is consistent with the AO's priority. An example of
|
||||
// inconsistent setting would be assigning FreeRTOS priorities that
|
||||
// would result in a different relative priritization of AO's threads
|
||||
// would result in a different relative prioritization of AO's threads
|
||||
// than indicated by the AO priorities assigned.
|
||||
//
|
||||
UBaseType_t freertos_prio = (prioSpec >> 8U);
|
||||
@ -241,6 +238,7 @@ void QActive_setAttr(QActive *const me, uint32_t attr1, void const *attr2) {
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//! @private @memberof QActive
|
||||
bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
uint_fast16_t const margin, void const * const sender)
|
||||
{
|
||||
@ -252,46 +250,48 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(200, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(201, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// the number of free slots available in the queue
|
||||
// the number of free slots available in the FreeRTOS queue
|
||||
uint_fast16_t const nFree =
|
||||
(uint_fast16_t)FREERTOS_QUEUE_GET_FREE(me);
|
||||
|
||||
bool status;
|
||||
// required margin available?
|
||||
bool status = false; // assume that event cannot be posted
|
||||
if (margin == QF_NO_MARGIN) {
|
||||
if (nFree > 0U) {
|
||||
if (nFree > 0U) { // free entries available in the queue?
|
||||
status = true; // can post
|
||||
}
|
||||
else {
|
||||
status = false; // cannot post
|
||||
else { // no free entries available
|
||||
// The queue overflows, but QF_NO_MARGIN indicates that
|
||||
// the "event delivery guarantee" is required.
|
||||
Q_ERROR_INCRIT(210); // must be able to post the event
|
||||
}
|
||||
}
|
||||
else if (nFree > (QEQueueCtr)margin) {
|
||||
else if (nFree > (QEQueueCtr)margin) { // enough free entries?
|
||||
status = true; // can post
|
||||
}
|
||||
else {
|
||||
status = false; // cannot post
|
||||
// empty
|
||||
}
|
||||
|
||||
if (status) { // can post the event?
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
if (e->poolNum_ != 0U) { // is it a mutable event?
|
||||
Q_ASSERT_INCRIT(205, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
|
||||
if (status) { // can post the event?
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)nFree); // # free entries
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
BaseType_t err = xQueueSendToBack(
|
||||
@ -300,49 +300,57 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QF_CRIT_ENTRY();
|
||||
// posting to the FreeRTOS message queue must succeed, see NOTE3
|
||||
Q_ASSERT_INCRIT(220, err == pdPASS);
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
#ifdef Q_UNSAFE
|
||||
Q_UNUSED_PAR(err);
|
||||
#endif
|
||||
}
|
||||
else { // cannot post the event
|
||||
|
||||
else { // event cannot be posted
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_ATTEMPT, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_END_PRE()
|
||||
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
QF_gc(e); // recycle the event to avoid a leak
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
//............................................................................
|
||||
void QActive_postLIFO_(QActive * const me, QEvt const * const e) {
|
||||
QF_CRIT_STAT
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
// the posted event must be be valid (which includes not NULL)
|
||||
Q_REQUIRE_INCRIT(300, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(301, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_LIFO, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)FREERTOS_QUEUE_GET_FREE(me)); // # free
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
if (e->poolNum_ != 0U) { // is it a mutable event?
|
||||
Q_ASSERT_INCRIT(305, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_LIFO, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)FREERTOS_QUEUE_GET_FREE(me)); // # free
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
BaseType_t err = xQueueSendToFront(
|
||||
@ -368,7 +376,7 @@ QEvt const *QActive_get_(QActive * const me) {
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)FREERTOS_QUEUE_GET_FREE(me)); // # free
|
||||
QS_END_PRE()
|
||||
QS_CRIT_EXIT();
|
||||
@ -385,75 +393,80 @@ bool QActive_postFromISR_(QActive * const me, QEvt const * const e,
|
||||
{
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
Q_REQUIRE_INCRIT(500, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(501, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
Q_REQUIRE_INCRIT(400, e != (QEvt *)0);
|
||||
|
||||
// find the number of free slots available in the queue
|
||||
uint_fast16_t const nFree = (uint_fast16_t)FREERTOS_QUEUE_GET_FREE(me);
|
||||
// the number of free slots available in the FreeRTOS queue
|
||||
uint_fast16_t const nFree =
|
||||
(uint_fast16_t)FREERTOS_QUEUE_GET_FREE(me);
|
||||
|
||||
bool status;
|
||||
// required margin available?
|
||||
bool status = false; // assume that event cannot be posted
|
||||
if (margin == QF_NO_MARGIN) {
|
||||
if (nFree > 0U) {
|
||||
if (nFree > 0U) { // free entries available in the queue?
|
||||
status = true; // can post
|
||||
}
|
||||
else {
|
||||
status = false; // cannot post
|
||||
Q_ERROR_INCRIT(510); // must be able to post the event
|
||||
else { // no free entries available
|
||||
// The queue overflows, but QF_NO_MARGIN indicates that
|
||||
// the "event delivery guarantee" is required.
|
||||
Q_ERROR_INCRIT(410); // must be able to post the event
|
||||
}
|
||||
}
|
||||
else if (nFree > margin) {
|
||||
else if (nFree > (QEQueueCtr)margin) { // enough free entries?
|
||||
status = true; // can post
|
||||
}
|
||||
else {
|
||||
status = false; // cannot post
|
||||
// empty
|
||||
}
|
||||
|
||||
if (status) { // can post the event?
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
if (e->poolNum_ != 0U) { // is it a mutable event?
|
||||
Q_ASSERT_INCRIT(405, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
|
||||
if (status) { // can post the event?
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_); // poolNum & refCtr
|
||||
QS_EQC_PRE(nFree); // # free entries available
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE((QEQueueCtr)nFree); // # free entries
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
BaseType_t err = xQueueSendToBackFromISR(me->eQueue,
|
||||
(void const *)&e,
|
||||
pxHigherPriorityTaskWoken);
|
||||
|
||||
// posting to the FreeRTOS message queue must succeed
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
Q_ASSERT_INCRIT(520, err == pdPASS);
|
||||
// posting to the FreeRTOS message queue must succeed, see NOTE3
|
||||
Q_ASSERT_INCRIT(420, err == pdPASS);
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
#ifdef Q_UNSAFE
|
||||
Q_UNUSED_PAR(err);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
|
||||
else { // event cannot be posted
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_ATTEMPT, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_); // poolNum & refCtr
|
||||
QS_EQC_PRE(nFree); // # free entries available
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_END_PRE()
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
QF_gcFromISR(e); // recycle the event to avoid a leak
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
}
|
||||
|
||||
return status;
|
||||
@ -463,75 +476,90 @@ void QActive_publishFromISR_(QEvt const * const e,
|
||||
BaseType_t * const pxHigherPriorityTaskWoken,
|
||||
void const * const sender)
|
||||
{
|
||||
Q_REQUIRE_INCRIT(600, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(601, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
Q_REQUIRE_INCRIT(500, e != (QEvt *)0);
|
||||
|
||||
QSignal const sig = e->sig;
|
||||
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
// the published signal must be within the configured range
|
||||
Q_REQUIRE_INCRIT(610, sig < (QSignal)QActive_maxPubSignal_);
|
||||
Q_REQUIRE_INCRIT(611,
|
||||
QPSet_verify_(&QActive_subscrList_[sig].set,
|
||||
&QActive_subscrList_[sig].set_dis));
|
||||
Q_REQUIRE_INCRIT(510, sig < (QSignal)QActive_maxPubSignal_);
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_PUBLISH, 0U)
|
||||
QS_TIME_PRE(); // the timestamp
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(sig); // the signal of the event
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);// pool-Id & ref-Count
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_END_PRE()
|
||||
|
||||
// is it a dynamic event?
|
||||
if (QEvt_getPoolNum_(e) != 0U) {
|
||||
// NOTE: The reference counter of a dynamic event is incremented to
|
||||
// is it a mutable event?
|
||||
if (e->poolNum_ != 0U) {
|
||||
// NOTE: The reference counter of a mutable event is incremented to
|
||||
// prevent premature recycling of the event while the multicasting
|
||||
// is still in progress. At the end of the function, the garbage
|
||||
// collector step (QF_gcFromISR()) decrements the reference counter
|
||||
// and recycles the event if the counter drops to zero. This covers
|
||||
// the case when the event was published without any subscribers.
|
||||
// collector step (QF_gc()) decrements the reference counter and
|
||||
// recycles the event if the counter drops to zero. This covers the
|
||||
// case when the event was published without any subscribers.
|
||||
Q_ASSERT_INCRIT(515, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e);
|
||||
}
|
||||
|
||||
// make a local, modifiable copy of the subscriber list
|
||||
// make a local, modifiable copy of the subscriber set
|
||||
QPSet subscrSet = QActive_subscrList_[sig].set;
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
if (QPSet_notEmpty(&subscrSet)) { // any subscribers?
|
||||
// the highest-prio subscriber
|
||||
uint_fast8_t p = QPSet_findMax(&subscrSet);
|
||||
|
||||
// no need to lock the scheduler in the ISR context
|
||||
do { // loop over all subscribers
|
||||
// the prio of the AO must be registered with the framework
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
Q_ASSERT_INCRIT(620, QActive_registry_[p] != (QActive *)0);
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
// QACTIVE_POST_FROM_ISR() asserts if the queue overflows
|
||||
QACTIVE_POST_FROM_ISR(QActive_registry_[p], e,
|
||||
pxHigherPriorityTaskWoken, sender);
|
||||
QActive *a = QActive_registry_[p];
|
||||
// the AO must be registered with the framework
|
||||
Q_ASSERT_INCRIT(520, a != (QActive *)0);
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
//QF_SCHED_LOCK_(p); // no scheduler locking in FreeRTOS
|
||||
do { // loop over all subscribers
|
||||
// QACTIVE_POST() asserts internally if the queue overflows
|
||||
QACTIVE_POST_FROM_ISR(a, e, pxHigherPriorityTaskWoken, sender);
|
||||
|
||||
QPSet_remove(&subscrSet, p); // remove the handled subscriber
|
||||
if (QPSet_notEmpty(&subscrSet)) { // still more subscribers?
|
||||
p = QPSet_findMax(&subscrSet); // the highest-prio subscriber
|
||||
if (QPSet_notEmpty(&subscrSet)) { // still more subscribers?
|
||||
p = QPSet_findMax(&subscrSet); // highest-prio subscriber
|
||||
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
a = QActive_registry_[p];
|
||||
// the AO must be registered with the framework
|
||||
Q_ASSERT_INCRIT(530, a != (QActive *)0);
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
}
|
||||
else {
|
||||
p = 0U; // no more subscribers
|
||||
}
|
||||
} while (p != 0U);
|
||||
// no need to unlock the scheduler in the ISR context
|
||||
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
Q_ASSERT_INCRIT(590, p == 0U); // all subscribers processed
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
//QF_SCHED_UNLOCK_(); // no scheduler locking in FreeRTOS
|
||||
}
|
||||
|
||||
#if (QF_MAX_EPOOL > 0U)
|
||||
// The following garbage collection step decrements the reference counter
|
||||
// and recycles the event if the counter drops to zero. This covers both
|
||||
// cases when the event was published with or without any subscribers.
|
||||
QF_gcFromISR(e);
|
||||
#endif // (QF_MAX_EPOOL > 0U)
|
||||
}
|
||||
|
||||
//............................................................................
|
||||
//! @private @memberof QTimeEvt
|
||||
void QTimeEvt_tickFromISR_(uint_fast8_t const tickRate,
|
||||
BaseType_t * const pxHigherPriorityTaskWoken,
|
||||
void const * const sender)
|
||||
@ -542,69 +570,46 @@ void QTimeEvt_tickFromISR_(uint_fast8_t const tickRate,
|
||||
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
Q_REQUIRE_INCRIT(700, tickRate < Q_DIM(QTimeEvt_timeEvtHead_));
|
||||
Q_REQUIRE_INCRIT(600, tickRate < Q_DIM(QTimeEvt_timeEvtHead_));
|
||||
|
||||
QTimeEvt *prev = &QTimeEvt_timeEvtHead_[tickRate];
|
||||
|
||||
#ifdef Q_SPY
|
||||
QS_BEGIN_PRE(QS_QF_TICK, 0U)
|
||||
++prev->ctr;
|
||||
QS_TEC_PRE(prev->ctr); // tick ctr
|
||||
QS_U8_PRE(tickRate); // tick rate
|
||||
QS_END_PRE()
|
||||
#endif // def Q_SPY
|
||||
|
||||
// scan the linked-list of time events at this rate...
|
||||
uint_fast8_t lbound = 2U*QF_MAX_ACTIVE; // fixed upper loop bound
|
||||
for (; lbound > 0U; --lbound) {
|
||||
Q_ASSERT_INCRIT(710, prev != (QTimeEvt *)0); // sanity check
|
||||
while (true) {
|
||||
Q_ASSERT_INCRIT(610, prev != (QTimeEvt *)0); // sanity check
|
||||
|
||||
QTimeEvt *te = prev->next; // advance down the time evt. list
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(711,
|
||||
Q_PTR2UINT_CAST_(te) == (uintptr_t)~prev->next_dis);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
if (te == (QTimeEvt *)0) { // end of the list?
|
||||
|
||||
// any new time events armed since the last QTimeEvt_tick_()?
|
||||
if (QTimeEvt_timeEvtHead_[tickRate].act != (void *)0) {
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(712,
|
||||
Q_PTR2UINT_CAST_(QTimeEvt_timeEvtHead_[tickRate].act)
|
||||
== (uintptr_t)~QTimeEvt_timeEvtHead_dis_[tickRate]);
|
||||
#endif // ndef Q_UNSAFE
|
||||
prev->next = QTimeEvt_timeEvtHead_[tickRate].act;
|
||||
QTimeEvt_timeEvtHead_[tickRate].act = (void *)0;
|
||||
#ifndef Q_UNSAFE
|
||||
prev->next_dis = (uintptr_t)~Q_PTR2UINT_CAST_(prev->next);
|
||||
QTimeEvt_timeEvtHead_dis_[tickRate] =
|
||||
(uintptr_t)~Q_PTR2UINT_CAST_((void *)0);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
te = prev->next; // switch to the new list
|
||||
}
|
||||
else { // all currently armed time events are processed
|
||||
// NO any new time events armed since the last QTimeEvt_tick_()?
|
||||
if (QTimeEvt_timeEvtHead_[tickRate].act == (void *)0) {
|
||||
break; // terminate the for-loop
|
||||
}
|
||||
|
||||
prev->next = (QTimeEvt*)QTimeEvt_timeEvtHead_[tickRate].act;
|
||||
QTimeEvt_timeEvtHead_[tickRate].act = (void *)0;
|
||||
|
||||
te = prev->next; // switch to the new list
|
||||
}
|
||||
|
||||
// the time event 'te' must be valid
|
||||
Q_ASSERT_INCRIT(720, te != (QTimeEvt *)0);
|
||||
Q_ASSERT_INCRIT(640, te != (QTimeEvt *)0);
|
||||
|
||||
QTimeEvtCtr ctr = te->ctr;
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(721, QEvt_verify_(&te->super));
|
||||
Q_INVARIANT_INCRIT(722, ctr == (QTimeEvtCtr)~te->ctr_dis);
|
||||
#endif // ndef Q_UNSAFE
|
||||
QTimeEvtCtr ctr = te->ctr; // move volatile into temporary
|
||||
|
||||
if (ctr == 0U) { // time event scheduled for removal?
|
||||
prev->next = te->next;
|
||||
#ifndef Q_UNSAFE
|
||||
prev->next_dis = (uintptr_t)~Q_PTR2UINT_CAST_(te->next);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// mark time event 'te' as NOT linked
|
||||
te->flags &= (uint8_t)(~QTE_FLAG_IS_LINKED & 0xFFU);
|
||||
|
||||
// do NOT advance the prev pointer
|
||||
|
||||
// exit crit. section to reduce latency
|
||||
@ -612,39 +617,7 @@ void QTimeEvt_tickFromISR_(uint_fast8_t const tickRate,
|
||||
}
|
||||
else if (ctr == 1U) { // is time event about to expire?
|
||||
QActive * const act = (QActive *)te->act;
|
||||
if (te->interval != 0U) { // periodic time evt?
|
||||
te->ctr = te->interval; // rearm the time event
|
||||
#ifndef Q_UNSAFE
|
||||
te->ctr_dis = (QTimeEvtCtr)~te->interval;
|
||||
#endif // ndef Q_UNSAFE
|
||||
prev = te; // advance to this time event
|
||||
}
|
||||
else { // one-shot time event: automatically disarm
|
||||
te->ctr = 0U;
|
||||
prev->next = te->next;
|
||||
#ifndef Q_UNSAFE
|
||||
te->ctr_dis = (QTimeEvtCtr)~0U;
|
||||
prev->next_dis = (uintptr_t)~Q_PTR2UINT_CAST_(te->next);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// mark time event 'e' as NOT linked
|
||||
te->flags &= (uint8_t)(~QTE_FLAG_IS_LINKED & 0xFFU);
|
||||
// do NOT advance the prev pointer
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_TIMEEVT_AUTO_DISARM, act->prio)
|
||||
QS_OBJ_PRE(te); // this time event object
|
||||
QS_OBJ_PRE(act); // the target AO
|
||||
QS_U8_PRE(tickRate); // tick rate
|
||||
QS_END_PRE()
|
||||
}
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_TIMEEVT_POST, act->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(te); // the time event object
|
||||
QS_SIG_PRE(te->super.sig);// signal of this time event
|
||||
QS_OBJ_PRE(act); // the target AO
|
||||
QS_U8_PRE(tickRate); // tick rate
|
||||
QS_END_PRE()
|
||||
prev = QTimeEvt_expire_(te, prev, act, tickRate);
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
@ -656,10 +629,6 @@ void QTimeEvt_tickFromISR_(uint_fast8_t const tickRate,
|
||||
else { // time event keeps timing out
|
||||
--ctr; // decrement the tick counter
|
||||
te->ctr = ctr; // update the original
|
||||
#ifndef Q_UNSAFE
|
||||
te->ctr_dis = (QTimeEvtCtr)~ctr;
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
prev = te; // advance to this time event
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
@ -668,16 +637,15 @@ void QTimeEvt_tickFromISR_(uint_fast8_t const tickRate,
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
}
|
||||
|
||||
Q_ENSURE_INCRIT(890, lbound > 0U);
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
}
|
||||
|
||||
//............................................................................
|
||||
QEvt *QF_newXFromISR_(uint_fast16_t const evtSize,
|
||||
uint_fast16_t const margin, enum_t const sig)
|
||||
{
|
||||
// find the pool index that fits the requested event size...
|
||||
uint_fast8_t poolNum = 0U; // zero-based poolNum initially
|
||||
// find the pool number that fits the requested event size...
|
||||
uint8_t poolNum = 0U; // zero-based poolNum initially
|
||||
for (; poolNum < QF_priv_.maxPool_; ++poolNum) {
|
||||
if (evtSize <= QF_EPOOL_EVENT_SIZE_(QF_priv_.ePool_[poolNum])) {
|
||||
break;
|
||||
@ -688,31 +656,31 @@ QEvt *QF_newXFromISR_(uint_fast16_t const evtSize,
|
||||
|
||||
// precondition:
|
||||
// - cannot run out of registered pools
|
||||
Q_REQUIRE_INCRIT(800, poolNum < QF_priv_.maxPool_);
|
||||
Q_REQUIRE_INCRIT(700, poolNum < QF_priv_.maxPool_);
|
||||
|
||||
++poolNum; // convert to 1-based poolNum
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
// get event e (port-dependent)...
|
||||
QEvt *e;
|
||||
#ifdef Q_SPY
|
||||
QEvt *e = QMPool_getFromISR(&QF_priv_.ePool_[poolNum - 1U],
|
||||
e = QMPool_getFromISR(&QF_priv_.ePool_[poolNum - 1U],
|
||||
((margin != QF_NO_MARGIN) ? margin : 0U),
|
||||
(uint_fast8_t)QS_EP_ID + poolNum);
|
||||
#else
|
||||
QEvt *e = QMPool_getFromISR(&QF_priv_.ePool_[poolNum - 1U],
|
||||
e = QMPool_getFromISR(&QF_priv_.ePool_[poolNum - 1U],
|
||||
((margin != QF_NO_MARGIN) ? margin : 0U), 0U);
|
||||
#endif
|
||||
|
||||
if (e != (QEvt *)0) { // was e allocated correctly?
|
||||
e->sig = (QSignal)sig; // set the signal
|
||||
e->refCtr_ = 0U; // initialize the reference counter to 0
|
||||
e->evtTag_ = (uint8_t)((poolNum << 4U) | 0x0FU);
|
||||
e->sig = (QSignal)sig; // set the signal
|
||||
e->poolNum_ = poolNum;
|
||||
e->refCtr_ = 0U;
|
||||
|
||||
#ifdef Q_SPY
|
||||
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
QS_BEGIN_PRE(QS_QF_NEW,
|
||||
(uint_fast8_t)QS_EP_ID + poolNum)
|
||||
QS_BEGIN_PRE(QS_QF_NEW, (uint_fast8_t)QS_EP_ID + poolNum)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_EVS_PRE(evtSize); // the size of the event
|
||||
QS_SIG_PRE(sig); // the signal of the event
|
||||
@ -726,7 +694,7 @@ QEvt *QF_newXFromISR_(uint_fast16_t const evtSize,
|
||||
// This assertion means that the event allocation failed,
|
||||
// and this failure cannot be tolerated. The most frequent
|
||||
// reason is an event leak in the application.
|
||||
Q_ASSERT_INCRIT(820, margin != QF_NO_MARGIN);
|
||||
Q_ASSERT_INCRIT(720, margin != QF_NO_MARGIN);
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_NEW_ATTEMPT,
|
||||
(uint_fast8_t)QS_EP_ID + poolNum)
|
||||
@ -746,12 +714,9 @@ QEvt *QF_newXFromISR_(uint_fast16_t const evtSize,
|
||||
void QF_gcFromISR(QEvt const * const e) {
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
Q_REQUIRE_INCRIT(700, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(701, QEvt_verify_(e));
|
||||
#endif
|
||||
Q_REQUIRE_INCRIT(800, e != (QEvt *)0);
|
||||
|
||||
uint_fast8_t const poolNum = QEvt_getPoolNum_(e);
|
||||
uint8_t const poolNum = e->poolNum_;
|
||||
|
||||
if (poolNum != 0U) { // is it a pool event (mutable)?
|
||||
|
||||
@ -764,6 +729,7 @@ void QF_gcFromISR(QEvt const * const e) {
|
||||
QS_2U8_PRE(poolNum, e->refCtr_);
|
||||
QS_END_PRE()
|
||||
|
||||
Q_ASSERT_INCRIT(805, e->refCtr_ > 0U);
|
||||
QEvt_refCtr_dec_(e); // decrement the ref counter
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
@ -778,15 +744,15 @@ void QF_gcFromISR(QEvt const * const e) {
|
||||
QS_END_PRE()
|
||||
|
||||
// pool number must be in range
|
||||
Q_ASSERT_INCRIT(710, (poolNum <= QF_priv_.maxPool_)
|
||||
&& (poolNum <= QF_MAX_EPOOL));
|
||||
|
||||
Q_ASSERT_INCRIT(810, (poolNum <= QF_priv_.maxPool_)
|
||||
&& (poolNum <= QF_MAX_EPOOL));
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
// NOTE: casting 'const' away is legit because 'e' is a pool event
|
||||
#ifdef Q_SPY
|
||||
// cast 'const' away in (QEvt *)e is OK because it's a pool event
|
||||
QMPool_putFromISR(&QF_priv_.ePool_[poolNum - 1U], (QEvt *)e,
|
||||
(uint_fast8_t)QS_EP_ID + QEvt_getPoolNum_(e));
|
||||
(uint_fast8_t)QS_EP_ID + e->poolNum_);
|
||||
#else
|
||||
QMPool_putFromISR(&QF_priv_.ePool_[poolNum - 1U], (QEvt *)e, 0U);
|
||||
#endif
|
||||
@ -800,80 +766,57 @@ void QF_gcFromISR(QEvt const * const e) {
|
||||
void *QMPool_getFromISR(QMPool * const me, uint_fast16_t const margin,
|
||||
uint_fast8_t const qsId)
|
||||
{
|
||||
#ifndef Q_SPY
|
||||
#ifndef Q_SPY
|
||||
Q_UNUSED_PAR(qsId);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
// get volatile into temporaries
|
||||
QFreeBlock *fb = me->free_head;
|
||||
void * *pfb = me->freeHead; // pointer to free block
|
||||
QMPoolCtr nFree = me->nFree;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(801, Q_PTR2UINT_CAST_(fb)
|
||||
== (uintptr_t)~me->free_head_dis);
|
||||
Q_INVARIANT_INCRIT(802, nFree == (QMPoolCtr)~me->nFree_dis);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
// have more free blocks than the requested margin?
|
||||
if (nFree > (QMPoolCtr)margin) {
|
||||
Q_ASSERT_INCRIT(810, fb != (QFreeBlock *)0);
|
||||
Q_ASSERT_INCRIT(910, pfb != (void**)0);
|
||||
|
||||
QFreeBlock * const fb_next = fb->next; // fast temporary
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
// the free block must have integrity (duplicate inverse storage)
|
||||
Q_INVARIANT_INCRIT(811, Q_PTR2UINT_CAST_(fb_next)
|
||||
== (uintptr_t)~fb->next_dis);
|
||||
#endif // ndef Q_UNSAFE
|
||||
void ** const pfb_next = pfb[0]; // fast temporary
|
||||
|
||||
--nFree; // one less free block
|
||||
if (nFree == 0U) { // is the pool becoming empty?
|
||||
// pool is becoming empty, so the next free block must be NULL
|
||||
Q_ASSERT_INCRIT(820, fb_next == (QFreeBlock *)0);
|
||||
Q_ASSERT_INCRIT(920, pfb_next == (void**)0);
|
||||
|
||||
me->nFree = 0U;
|
||||
#ifndef Q_UNSAFE
|
||||
me->nFree_dis = (QMPoolCtr)~0U;
|
||||
me->nMin = 0U; // remember that the pool got empty
|
||||
#endif // ndef Q_UNSAFE
|
||||
me->nFree = 0U; // no more free blocks
|
||||
me->nMin = 0U; // remember that the pool got empty
|
||||
}
|
||||
else {
|
||||
me->nFree = nFree;
|
||||
#ifndef Q_UNSAFE
|
||||
me->nFree_dis = (QMPoolCtr)~nFree;
|
||||
else { // the pool is NOT empty
|
||||
|
||||
// The pool is not empty, so the next free-block pointer
|
||||
// must be in range.
|
||||
Q_INVARIANT_INCRIT(830,
|
||||
(me->start <= fb_next) && (fb_next <= me->end));
|
||||
// the next free-block pointer must be in range
|
||||
Q_ASSERT_INCRIT(930,
|
||||
(me->start <= pfb_next) && (pfb_next <= me->end));
|
||||
|
||||
// is the # free blocks the new minimum so far?
|
||||
if (me->nMin > nFree) {
|
||||
me->nFree = nFree; // update the original
|
||||
if (me->nMin > nFree) { // is this the new minimum?
|
||||
me->nMin = nFree; // remember the minimum so far
|
||||
}
|
||||
#endif // ndef Q_UNSAFE
|
||||
}
|
||||
|
||||
me->free_head = fb_next; // set the head to the next free block
|
||||
#ifndef Q_UNSAFE
|
||||
me->free_head_dis = (uintptr_t)(~Q_PTR2UINT_CAST_(fb_next));
|
||||
#endif // ndef Q_UNSAFE
|
||||
me->freeHead = pfb_next; // set the head to the next free block
|
||||
|
||||
// change the allocated block contents so that it is different
|
||||
// than a free block inside the pool.
|
||||
pfb[0] = &me->end[1]; // invalid location beyond the end
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_MPOOL_GET, qsId)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_OBJ_PRE(me); // this memory pool
|
||||
QS_MPC_PRE(nFree); // # of free blocks in the pool
|
||||
#ifndef Q_UNSAFE
|
||||
QS_MPC_PRE(nFree); // # free blocks in the pool
|
||||
QS_MPC_PRE(me->nMin); // min # free blocks ever in the pool
|
||||
#else
|
||||
QS_MPC_PRE(0U); // min # free blocks (not available)
|
||||
#endif // ndef Q_UNSAFE
|
||||
QS_END_PRE()
|
||||
}
|
||||
else { // don't have enough free blocks at this point
|
||||
fb = (QFreeBlock *)0;
|
||||
pfb = (void**)0;
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_MPOOL_GET_ATTEMPT, qsId)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
@ -885,43 +828,32 @@ void *QMPool_getFromISR(QMPool * const me, uint_fast16_t const margin,
|
||||
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptStatus);
|
||||
|
||||
return fb; // return the block or NULL pointer to the caller
|
||||
return (void *)pfb; // return the block or NULL pointer to the caller
|
||||
}
|
||||
//............................................................................
|
||||
void QMPool_putFromISR(QMPool * const me, void *block,
|
||||
uint_fast8_t const qsId)
|
||||
{
|
||||
#ifndef Q_SPY
|
||||
#ifndef Q_SPY
|
||||
Q_UNUSED_PAR(qsId);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
QFreeBlock * const fb = (QFreeBlock *)block;
|
||||
void * * const pfb = (void * *)block; // pointer to free block
|
||||
|
||||
UBaseType_t uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
|
||||
// get volatile into temporaries
|
||||
QFreeBlock *free_head = me->free_head;
|
||||
void * * const freeHead = me->freeHead;
|
||||
QMPoolCtr nFree = me->nFree;
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(901, Q_PTR2UINT_CAST_(free_head)
|
||||
== (uintptr_t)~me->free_head_dis);
|
||||
Q_INVARIANT_INCRIT(902, nFree == (QMPoolCtr)~me->nFree_dis);
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
Q_REQUIRE_INCRIT(910, nFree < me->nTot);
|
||||
Q_REQUIRE_INCRIT(911, (me->start <= fb) && (fb <= me->end));
|
||||
Q_REQUIRE_INCRIT(1000, nFree < me->nTot);
|
||||
Q_REQUIRE_INCRIT(1010, (me->start <= pfb) && (pfb <= me->end));
|
||||
|
||||
++nFree; // one more free block in this pool
|
||||
|
||||
me->free_head = fb; // set as new head of the free list
|
||||
me->nFree = nFree;
|
||||
fb->next = free_head; // link into list
|
||||
#ifndef Q_UNSAFE
|
||||
me->free_head_dis = (uintptr_t)(~Q_PTR2UINT_CAST_(fb));
|
||||
me->nFree_dis = (QMPoolCtr)~nFree;
|
||||
fb->next_dis = (uintptr_t)(~Q_PTR2UINT_CAST_(free_head));
|
||||
#endif
|
||||
me->freeHead = pfb; // set as new head of the free list
|
||||
me->nFree = nFree;
|
||||
pfb[0] = freeHead; // link into the list
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_MPOOL_PUT, qsId)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to FreeRTOS 10.x, generic C11 compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -48,7 +42,7 @@
|
||||
#define QACTIVE_OS_OBJ_TYPE StaticQueue_t
|
||||
#define QACTIVE_THREAD_TYPE StaticTask_t
|
||||
|
||||
// FreeRTOS requires the "FromISR" API in QP/C++
|
||||
// FreeRTOS requires the "FromISR" API in QP/C
|
||||
#define QF_ISR_API 1
|
||||
|
||||
// QF interrupt disabling/enabling (task level)
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to MSP430, QK kernel, TI, GNU, IAR compilers
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 16-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C "port" for QUTEST on MSP430, generic C11 compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -51,8 +44,8 @@
|
||||
|
||||
// QActive event queue type
|
||||
#define QACTIVE_EQUEUE_TYPE QEQueue
|
||||
// QACTIVE_OS_OBJ_TYPE not used in this port
|
||||
// QACTIVE_THREAD_TYPE not used in this port
|
||||
// QACTIVE_OS_OBJ_TYPE not used in this port
|
||||
// QACTIVE_THREAD_TYPE not used in this port
|
||||
|
||||
// QF interrupt disable/enable
|
||||
#define QF_INT_DISABLE() (++QS_tstPriv_.intLock)
|
||||
@ -75,10 +68,11 @@
|
||||
|
||||
#include "qequeue.h" // QUTest port uses QEQueue event-queue
|
||||
#include "qmpool.h" // QUTest port uses QMPool memory-pool
|
||||
#include "qp.h" // QP framework
|
||||
#include "qp.h" // QP platform-independent public interface
|
||||
|
||||
//============================================================================
|
||||
// interface used only inside QF implementation, but not in applications
|
||||
|
||||
#ifdef QP_IMPL
|
||||
|
||||
// QUTest scheduler locking (not used)
|
||||
@ -86,19 +80,13 @@
|
||||
#define QF_SCHED_LOCK_(dummy) ((void)0)
|
||||
#define QF_SCHED_UNLOCK_() ((void)0)
|
||||
|
||||
// native event queue operations
|
||||
// native QEQueue operations
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QS_tstPriv_.readySet, (uint_fast8_t)(me_)->prio); \
|
||||
QPSet_update_(&QS_tstPriv_.readySet, &QS_tstPriv_.readySet_dis)
|
||||
#else
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (uint_fast8_t)(me_)->prio)
|
||||
#endif
|
||||
QPSet_insert(&QS_tstPriv_.readySet, (uint_fast8_t)(me_)->prio)
|
||||
|
||||
// native QF event pool operations
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
// native QMPool operations
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
|
||||
(QMPool_init(&(p_), (poolSto_), (poolSize_), (evtSize_)))
|
||||
#define QF_EPOOL_EVENT_SIZE_(p_) ((uint_fast16_t)(p_).blockSize)
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 16-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to MSP430, QV kernel, TI, GNU, IAR compilers
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 16-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,32 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-18
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to POSIX-QV (single-threaded)
|
||||
|
||||
// expose features from the 2008 POSIX standard (IEEE Standard 1003.1-2008)
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
@ -177,9 +177,6 @@ void QF_init(void) {
|
||||
pthread_cond_init(&QF_condVar_, NULL);
|
||||
|
||||
QPSet_setEmpty(&QF_readySet_);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
|
||||
// lock memory so we're never swapped out to disk
|
||||
//mlockall(MCL_CURRENT | MCL_FUTURE); // un-comment when supported
|
||||
@ -253,8 +250,6 @@ int QF_run(void) {
|
||||
QS_END_PRE()
|
||||
|
||||
while (l_isRunning) {
|
||||
Q_ASSERT_INCRIT(300, QPSet_verify_(&QF_readySet_, &QF_readySet_dis_));
|
||||
|
||||
// find the maximum priority AO ready to run
|
||||
if (QPSet_notEmpty(&QF_readySet_)) {
|
||||
uint_fast8_t p = QPSet_findMax(&QF_readySet_);
|
||||
@ -272,9 +267,6 @@ int QF_run(void) {
|
||||
QF_CRIT_ENTRY();
|
||||
if (a->eQueue.frontEvt == (QEvt *)0) { // empty queue?
|
||||
QPSet_remove(&QF_readySet_, p);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -308,9 +300,6 @@ void QF_stop(void) {
|
||||
|
||||
// unblock the event-loop so it can terminate
|
||||
QPSet_insert(&QF_readySet_, 1U);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
pthread_cond_signal(&QF_condVar_);
|
||||
}
|
||||
//............................................................................
|
||||
@ -395,9 +384,6 @@ void QActive_stop(QActive * const me) {
|
||||
QF_CRIT_STAT
|
||||
QF_CRIT_ENTRY();
|
||||
QPSet_remove(&QF_readySet_, me->prio);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
QActive_unregister_(me);
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to POSIX-QV (single-threaded) with GNU compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -91,16 +85,9 @@ void QF_onClockTick(void);
|
||||
|
||||
// QF event queue customization for POSIX-QV...
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (me_)->prio); \
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_); \
|
||||
pthread_cond_signal(&QF_condVar_)
|
||||
#else
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (me_)->prio); \
|
||||
pthread_cond_signal(&QF_condVar_)
|
||||
#endif
|
||||
|
||||
// native QF event pool operations
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
|
@ -1,38 +1,37 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-07-18
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to POSIX
|
||||
|
||||
// expose features from the 2008 POSIX standard (IEEE Standard 1003.1-2008)
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
#ifndef Q_SPY
|
||||
#error "Q_SPY must be defined to compile qs_port.c"
|
||||
#error Q_SPY must be defined to compile qs_port.c
|
||||
#endif // Q_SPY
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to POSIX with GNU
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
@ -1,32 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-18
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to POSIX (multithreaded with P-threads)
|
||||
|
||||
// expose features from the 2008 POSIX standard (IEEE Standard 1003.1-2008)
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-12-12
|
||||
//! @version Last updated for: @ref qpc_8_0_1
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to to POSIX (multithreaded with P-threads)
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,37 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-07-18
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to POSIX
|
||||
|
||||
// expose features from the 2008 POSIX standard (IEEE Standard 1003.1-2008)
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
|
||||
#ifndef Q_SPY
|
||||
#error "Q_SPY must be defined to compile qs_port.c"
|
||||
#error Q_SPY must be defined to compile qs_port.c
|
||||
#endif // Q_SPY
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to POSIX with GNU
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C dummy port
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port for the "Qube" execution harness (Windows, Linux, macOS)
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -82,14 +76,8 @@ extern uint_fast8_t QF_intLock_;
|
||||
|
||||
// native event queue operations
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (uint_fast8_t)(me_)->prio); \
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_)
|
||||
#else
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (uint_fast8_t)(me_)->prio)
|
||||
#endif
|
||||
|
||||
// native QF event pool operations
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port for the "Qube" execution harness (Windows, Linux, macOS)
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,35 +1,34 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-18
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief Qube command-line QP execution environment
|
||||
|
||||
#ifndef Q_SPY
|
||||
#error "Q_SPY must be defined to compile qube.c"
|
||||
#error Q_SPY must be defined to compile qube.c
|
||||
#endif // Q_SPY
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
@ -215,9 +214,6 @@ static void handle_evts(void) {
|
||||
#endif
|
||||
if (a->eQueue.frontEvt == (QEvt*)0) { // empty queue?
|
||||
QPSet_remove(&QF_readySet_, p);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -270,10 +266,6 @@ void QF_init(void) {
|
||||
QF_bzero_(&QF_intLock_, sizeof(QF_intLock_));
|
||||
QF_bzero_(&QActive_registry_[0], sizeof(QActive_registry_));
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
|
||||
l_currAO_name[0] = '\0';
|
||||
|
||||
fputs(COLOR_APP, stdout);
|
||||
@ -296,7 +288,6 @@ void QF_onCleanup(void) {
|
||||
int_t QF_run(void) {
|
||||
QS_CRIT_STAT
|
||||
QS_CRIT_ENTRY();
|
||||
QS_MEM_SYS();
|
||||
|
||||
// function dictionaries for the standard API
|
||||
QS_FUN_DICTIONARY(&QActive_post_);
|
||||
@ -307,7 +298,6 @@ int_t QF_run(void) {
|
||||
QS_BEGIN_PRE(QS_QF_RUN, 0U)
|
||||
QS_END_PRE()
|
||||
|
||||
QS_MEM_APP();
|
||||
QS_CRIT_EXIT();
|
||||
|
||||
handle_evts(); // handle all events posted so far
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to RISC-V, QV kernel, GNU-RISCV compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,4 +1,7 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
@ -7,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -15,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-26
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C, port to ThreadX
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
@ -154,9 +150,6 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(200, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(201, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
uint_fast16_t nFree = (uint_fast16_t)me->eQueue.tx_queue_available_storage;
|
||||
|
||||
@ -184,12 +177,13 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries available
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(205, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -208,7 +202,7 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries available
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
@ -224,20 +218,18 @@ void QActive_postLIFO_(QActive * const me, QEvt const * const e) {
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(300, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(301, QEvt_verify_(e));
|
||||
#endif // ndef Q_UNSAFE
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_LIFO, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(me->eQueue.tx_queue_available_storage); // # free
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(305, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -262,7 +254,7 @@ QEvt const *QActive_get_(QActive * const me) {
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(me->eQueue.tx_queue_available_storage);// # free
|
||||
QS_END_PRE()
|
||||
QF_CRIT_EXIT();
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C, port to ThreadX, generic C11 compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -52,9 +46,9 @@
|
||||
#define QF_TX_PRIO_OFFSET 2U
|
||||
|
||||
#ifndef QF_MAX_ACTIVE
|
||||
#define QF_MAX_ACTIVE (TX_MAX_PRIORITIES - QF_TX_PRIO_OFFSET)
|
||||
#define QF_MAX_ACTIVE (TX_MAX_PRIORITIES - QF_TX_PRIO_OFFSET)
|
||||
#else
|
||||
#error "QF_MAX_ACTIVE shouild not be externally defined in QP-ThreadX port"
|
||||
#error QF_MAX_ACTIVE shouild not be externally defined in QP-ThreadX port
|
||||
#endif
|
||||
|
||||
// mapping between QF-priority and TX-priority, see NOTE1
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,4 +1,7 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
@ -7,7 +10,7 @@
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -15,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-26
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to uC-OS2, generic C11 compiler
|
||||
//!
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
@ -202,9 +198,6 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(200, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(201, QEvt_verify_(e));
|
||||
#endif
|
||||
|
||||
uint_fast16_t const nFree =
|
||||
(uint_fast16_t)(((OS_Q_DATA *)me->eQueue)->OSQSize
|
||||
@ -233,12 +226,13 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(205, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -261,7 +255,7 @@ bool QActive_post_(QActive * const me, QEvt const * const e,
|
||||
QS_OBJ_PRE(sender); // the sender object
|
||||
QS_SIG_PRE(e->sig); // the signal of the event
|
||||
QS_OBJ_PRE(me); // this active object (recipient)
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(nFree); // # free entries available
|
||||
QS_EQC_PRE(margin); // margin requested
|
||||
QS_END_PRE()
|
||||
@ -277,21 +271,19 @@ void QActive_postLIFO_(QActive * const me, QEvt const * const e) {
|
||||
QF_CRIT_ENTRY();
|
||||
|
||||
Q_REQUIRE_INCRIT(300, e != (QEvt *)0);
|
||||
#ifndef Q_UNSAFE
|
||||
Q_INVARIANT_INCRIT(301, QEvt_verify_(e));
|
||||
#endif
|
||||
|
||||
QS_BEGIN_PRE(QS_QF_ACTIVE_POST_LIFO, me->prio)
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(((OS_Q *)me->eQueue)->OSQSize
|
||||
- ((OS_Q *)me->eQueue)->OSQEntries); // # free entries
|
||||
QS_EQC_PRE(0U); // min # free entries (unknown)
|
||||
QS_END_PRE()
|
||||
|
||||
if (QEvt_getPoolNum_(e) != 0U) { // is it a pool event?
|
||||
if (e->poolNum_ != 0U) { // is it a pool event?
|
||||
Q_ASSERT_INCRIT(305, e->refCtr_ < (2U * QF_MAX_ACTIVE));
|
||||
QEvt_refCtr_inc_(e); // increment the reference counter
|
||||
}
|
||||
QF_CRIT_EXIT();
|
||||
@ -320,7 +312,7 @@ QEvt const *QActive_get_(QActive * const me) {
|
||||
QS_TIME_PRE(); // timestamp
|
||||
QS_SIG_PRE(e->sig); // the signal of this event
|
||||
QS_OBJ_PRE(me); // this active object
|
||||
QS_2U8_PRE(QEvt_getPoolNum_(e), e->refCtr_);
|
||||
QS_2U8_PRE(e->poolNum_, e->refCtr_);
|
||||
QS_EQC_PRE(((OS_Q *)me->eQueue)->OSQSize
|
||||
- ((OS_Q *)me->eQueue)->OSQEntries); // # free entries
|
||||
QS_END_PRE()
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to uC-OS2, generic C11 compiler
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to a 32-bit CPU and a generic C99 compiler.
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,33 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-19
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to Win32-QV (single-threaded)
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
@ -104,9 +103,6 @@ void QF_init(void) {
|
||||
QF_win32Event_ = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
|
||||
QPSet_setEmpty(&QF_readySet_);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
|
||||
QTimeEvt_init(); // initialize QTimeEvts
|
||||
}
|
||||
@ -140,8 +136,6 @@ int QF_run(void) {
|
||||
QS_END_PRE()
|
||||
|
||||
while (l_isRunning) {
|
||||
Q_ASSERT_INCRIT(300, QPSet_verify_(&QF_readySet_, &QF_readySet_dis_));
|
||||
|
||||
// find the maximum priority AO ready to run
|
||||
if (QPSet_notEmpty(&QF_readySet_)) {
|
||||
uint_fast8_t p = QPSet_findMax(&QF_readySet_);
|
||||
@ -159,9 +153,6 @@ int QF_run(void) {
|
||||
QF_CRIT_ENTRY();
|
||||
if (a->eQueue.frontEvt == (QEvt *)0) { // empty queue?
|
||||
QPSet_remove(&QF_readySet_, p);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -191,9 +182,6 @@ void QF_stop(void) {
|
||||
|
||||
// unblock the event-loop so it can terminate
|
||||
QPSet_insert(&QF_readySet_, 1U);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
SetEvent(QF_win32Event_);
|
||||
}
|
||||
//............................................................................
|
||||
@ -268,9 +256,6 @@ void QActive_stop(QActive * const me) {
|
||||
QF_CRIT_STAT
|
||||
QF_CRIT_ENTRY();
|
||||
QPSet_remove(&QF_readySet_, me->prio);
|
||||
#ifndef Q_UNSAFE
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_);
|
||||
#endif
|
||||
QF_CRIT_EXIT();
|
||||
|
||||
QActive_unregister_(me);
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to Win32-QV (single-threaded) with GNU or Visual C/C++
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -54,7 +48,7 @@
|
||||
#define Q_NORETURN _Noreturn void
|
||||
#endif
|
||||
|
||||
// This is the case where QP/C is compiled by the Microsoft Visual C++
|
||||
// This is the case where QP is compiled by the Microsoft Visual C++
|
||||
// compiler in the C++ mode, which can happen when qep_port.h is included
|
||||
// in a C++ module, or the compilation is forced to C++ by the option /TP.
|
||||
//
|
||||
@ -62,7 +56,7 @@
|
||||
// and C4610, which warn that default constructors and assignment operators
|
||||
// could not be generated for structures QMState and QMTranActTable.
|
||||
//
|
||||
// The QP/C source code cannot be changed to avoid these C++ warnings
|
||||
// The QP source code cannot be changed to avoid these C++ warnings
|
||||
// because the structures QMState and QMTranActTable must remain PODs
|
||||
// (Plain Old Datatypes) to be initializable statically with constant
|
||||
// initializers.
|
||||
@ -129,16 +123,9 @@ void QF_onClockTick(void);
|
||||
// QF event queue customization for Win32-QV...
|
||||
#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
|
||||
|
||||
#ifndef Q_UNSAFE
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (me_)->prio); \
|
||||
QPSet_update_(&QF_readySet_, &QF_readySet_dis_); \
|
||||
(void)SetEvent(QF_win32Event_)
|
||||
#else
|
||||
#define QACTIVE_EQUEUE_SIGNAL_(me_) \
|
||||
QPSet_insert(&QF_readySet_, (me_)->prio); \
|
||||
(void)SetEvent(QF_win32Event_)
|
||||
#endif
|
||||
|
||||
// native QF event pool operations
|
||||
#define QF_EPOOL_TYPE_ QMPool
|
||||
|
@ -1,35 +1,33 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-11
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port for Win32 API
|
||||
|
||||
#ifndef Q_SPY
|
||||
#error "Q_SPY must be defined to compile qs_port.c"
|
||||
#error Q_SPY must be defined to compile qs_port.c
|
||||
#endif // Q_SPY
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to Win32 with GNU or Visual C++ compilers
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,34 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// QWIN GUI facilities for building realistic embedded front panels
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//!
|
||||
//! @date Last updated on: 2022-06-12
|
||||
//! @version Last updated for: @ref qpc_7_0_1
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QWIN GUI facilities for building realistic embedded front panels
|
||||
//!
|
||||
#include "qwin_gui.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -1,34 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// QWIN GUI facilities for building realistic embedded front panels
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//!
|
||||
//! @date Last updated on: 2022-06-12
|
||||
//! @version Last updated for: @ref qpc_7_0_1
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QWIN GUI facilities for building realistic embedded front panels
|
||||
//!
|
||||
#ifndef QWIN_GUI_H
|
||||
#define QWIN_GUI_H
|
||||
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
@ -1,33 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-09-19
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QF/C port to Win32 (multithreaded)
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
#include "qp_port.h" // QP port
|
||||
#include "qp_pkg.h" // QP package-scope interface
|
||||
|
@ -1,15 +1,16 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// The QP/C software is dual-licensed under the terms of the open-source GNU
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
@ -17,22 +18,15 @@
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// NOTE:
|
||||
// The GPL (see <www.gnu.org/licenses/gpl-3.0>) does NOT permit the
|
||||
// incorporation of the QP/C software into proprietary programs. Please
|
||||
// contact Quantum Leaps for commercial licensing options, which expressly
|
||||
// supersede the GPL and are designed explicitly for licensees interested
|
||||
// in using QP/C in closed-source proprietary applications.
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2023-09-30
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QP/C port to Win32 (multithreaded) with GNU or Visual C/C++
|
||||
|
||||
#ifndef QP_PORT_H_
|
||||
#define QP_PORT_H_
|
||||
|
||||
@ -54,7 +48,7 @@
|
||||
#define Q_NORETURN _Noreturn void
|
||||
#endif
|
||||
|
||||
// This is the case where QP/C is compiled by the Microsoft Visual C++
|
||||
// This is the case where QP is compiled by the Microsoft Visual C++
|
||||
// compiler in the C++ mode, which can happen when qep_port.h is included
|
||||
// in a C++ module, or the compilation is forced to C++ by the option /TP.
|
||||
//
|
||||
@ -62,7 +56,7 @@
|
||||
// and C4610, which warn that default constructors and assignment operators
|
||||
// could not be generated for structures QMState and QMTranActTable.
|
||||
//
|
||||
// The QP/C source code cannot be changed to avoid these C++ warnings
|
||||
// The QP source code cannot be changed to avoid these C++ warnings
|
||||
// because the structures QMState and QMTranActTable must remain PODs
|
||||
// (Plain Old Datatypes) to be initializable statically with constant
|
||||
// initializers.
|
||||
|
@ -1,35 +1,33 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-11
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port for Win32 API
|
||||
|
||||
#ifndef Q_SPY
|
||||
#error "Q_SPY must be defined to compile qs_port.c"
|
||||
#error Q_SPY must be defined to compile qs_port.c
|
||||
#endif // Q_SPY
|
||||
|
||||
#define QP_IMPL // this is QP implementation
|
||||
|
@ -1,38 +1,31 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
// SPDX-License-Identifier: LicenseRef-QL-commercial
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
// This software is licensed under the terms of the Quantum Leaps commercial
|
||||
// licenses. Please contact Quantum Leaps for more information about the
|
||||
// available licensing options.
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// RESTRICTIONS
|
||||
// You may NOT :
|
||||
// (a) redistribute, encumber, sell, rent, lease, sublicense, or otherwise
|
||||
// transfer rights in this software,
|
||||
// (b) remove or alter any trademark, logo, copyright or other proprietary
|
||||
// notices, legends, symbols or labels present in this software,
|
||||
// (c) plagiarize this software to sidestep the licensing obligations.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2024-06-06
|
||||
//! @version Last updated for: @ref qpc_8_0_0
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QS/C port to Win32 with GNU or Visual C++ compilers
|
||||
|
||||
#ifndef QS_PORT_H_
|
||||
#define QS_PORT_H_
|
||||
|
||||
|
@ -1,34 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// QWIN GUI facilities for building realistic embedded front panels
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//!
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_0_1
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QWIN GUI facilities for building realistic embedded front panels
|
||||
//!
|
||||
#include "qwin_gui.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -1,34 +1,32 @@
|
||||
//============================================================================
|
||||
// QP/C Real-Time Embedded Framework (RTEF)
|
||||
// QWIN GUI facilities for building realistic embedded front panels
|
||||
// Version 8.0.2
|
||||
//
|
||||
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ------------------------
|
||||
// Modern Embedded Software
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
|
||||
//
|
||||
// This software is dual-licensed under the terms of the open source GNU
|
||||
// General Public License version 3 (or any later version), or alternatively,
|
||||
// under the terms of one of the closed source Quantum Leaps commercial
|
||||
// licenses.
|
||||
//
|
||||
// The terms of the open source GNU General Public License version 3
|
||||
// can be found at: <www.gnu.org/licenses/gpl-3.0>
|
||||
//
|
||||
// The terms of the closed source Quantum Leaps commercial licenses
|
||||
// can be found at: <www.state-machine.com/licensing>
|
||||
// This software is dual-licensed under the terms of the open-source GNU
|
||||
// General Public License (GPL) or under the terms of one of the closed-
|
||||
// source Quantum Leaps commercial licenses.
|
||||
//
|
||||
// Redistributions in source code must retain this top-level comment block.
|
||||
// Plagiarizing this software to sidestep the license obligations is illegal.
|
||||
//
|
||||
// Contact information:
|
||||
// <www.state-machine.com>
|
||||
// NOTE:
|
||||
// The GPL does NOT permit the incorporation of this code into proprietary
|
||||
// programs. Please contact Quantum Leaps for commercial licensing options,
|
||||
// which expressly supersede the GPL and are designed explicitly for
|
||||
// closed-source distribution.
|
||||
//
|
||||
// Quantum Leaps contact information:
|
||||
// <www.state-machine.com/licensing>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//!
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_0_1
|
||||
//!
|
||||
//! @file
|
||||
//! @brief QWIN GUI facilities for building realistic embedded front panels
|
||||
//!
|
||||
#ifndef QWIN_GUI_H
|
||||
#define QWIN_GUI_H
|
||||
|
||||
|
@ -22,11 +22,6 @@
|
||||
// <www.state-machine.com>
|
||||
// <info@state-machine.com>
|
||||
//============================================================================
|
||||
//! @date Last updated on: 2022-07-30
|
||||
//! @version Last updated for: @ref qpc_7_1_3
|
||||
//!
|
||||
//! @file
|
||||
//! @brief "safe" <stdio.h> and <string.h> facilities
|
||||
#ifndef SAFE_STD_H
|
||||
#define SAFE_STD_H
|
||||
|
||||
|
161
qpc_8.0.1.sha1
161
qpc_8.0.1.sha1
@ -1,161 +0,0 @@
|
||||
e0aae515ebf157d8993bb03747fdc86cd87604f3 *qpc.qm
|
||||
e3c60b712a27e8f8c11e38711e785ffc4006cda5 *include/qequeue.h
|
||||
a0d30600da64ec7aaadc6b9bd268c217930c3e60 *include/qk.h
|
||||
84c8c1036c38f0f1646cc60e4813a7c8fb89f2d2 *include/qmpool.h
|
||||
7ecec322b0b31b4175596df3a7968424b21f983e *include/qp.h
|
||||
7a909dd01c0aa3fd7d74b4a4c88b930eeb0b815e *include/qp_pkg.h
|
||||
0a3323af546e1b2320e6745e8e0effa837abdc53 *include/qpc.h
|
||||
6796ebe4b41225fa374d751704e7edd2f95e0484 *include/qs.h
|
||||
5a0c927370d332fc170e84650d980173da2102ae *include/qs_dummy.h
|
||||
d57d1974f64db7e3bf8a9f4468ee84a42ccd4952 *include/qs_pkg.h
|
||||
7458d62031562c2517577b258d47249b7b900dd7 *include/qsafe.h
|
||||
2e0a56edcf460fcd82f6d7277e5fc0876325efeb *include/qstamp.h
|
||||
d0199c9094039e672d85e9198ccff0d4ed9128cc *include/qv.h
|
||||
fdfc7f528989ff3934af977ef9a1ee9fc30cd889 *include/qxk.h
|
||||
5886c3a0831996cfbf7141255efb4e9f5b4d8254 *include/README.md
|
||||
7f54a0933a9dc2fcaca475919fa0067667ed99ed *src/qf/CMakeLists.txt
|
||||
6ff32793932a96e1240b2c9dbbc9516faf206fa6 *src/qf/qep_hsm.c
|
||||
e5d93d4867336209c0d8e74cc4a9add1190b821a *src/qf/qep_msm.c
|
||||
733bc8bf8e08014c20d8354efb98729857edb4cd *src/qf/qf_act.c
|
||||
90e27f32bc8862946bfe4c6c376bf03327de25f7 *src/qf/qf_actq.c
|
||||
8b58d43c5b8fe3b1b846392d1f7d99d5720428d9 *src/qf/qf_defer.c
|
||||
eba579d6183310d9d0d07a14f28691b41ebaa921 *src/qf/qf_dyn.c
|
||||
d263e3b91f9e5c61d6a458b5c6023ac68eb07a13 *src/qf/qf_mem.c
|
||||
47ae6dfca8c983839aa6a58a8afdc819f2d3b1e2 *src/qf/qf_ps.c
|
||||
2ed707166ca625a684c93147aec772dd568e5d9f *src/qf/qf_qact.c
|
||||
e6e7dd46ed4ab7fb3ecd781ca29ea141d13f49d9 *src/qf/qf_qeq.c
|
||||
f975ffcfadfed6856a41587b8275e0ea3bbe63a3 *src/qf/qf_qmact.c
|
||||
e43dbda05f6fd6cbb8673d8ae5d1f8b183570f29 *src/qf/qf_time.c
|
||||
878a737efe234f40dc8c9374acc351e510b4da1e *src/qk/CMakeLists.txt
|
||||
5f092f2dc82962633e8ff32f736baaf04ef4c5da *src/qk/qk.c
|
||||
68c99a2991d25df7486e57edadaa955b2bda396d *src/qs/CMakeLists.txt
|
||||
8cb434d345ef98a0915eadd97f7959987d66ff89 *src/qs/qs.c
|
||||
e8ee51e5776c38f9dfdc06f87ab2b1f00bb45fd4 *src/qs/qs_64bit.c
|
||||
14e1f08b94f65cc1d043051f829280e7f3ae057a *src/qs/qs_fp.c
|
||||
4e3d64f109f5f8de67799a190f505d1fa29d622a *src/qs/qs_rx.c
|
||||
f055d938dd53c9baf7f5e04ad1bc4f4ec40044e9 *src/qs/qstamp.c
|
||||
afe015fd804a563aedd4080d389ef143a1a9ce40 *src/qs/qutest.c
|
||||
b1d2def9b8f6cde464170af7682ab0f01f4f40f6 *src/qv/CMakeLists.txt
|
||||
f77a3c93938c5ff9a37214bdfe1c7c255f9eed6e *src/qv/qv.c
|
||||
de32deac900990db561238c22e6961e2c3ca4eac *src/qxk/qxk.c
|
||||
fff73b289cb59e10ae491907e4bb48bbffb90946 *src/qxk/qxk_mutex.c
|
||||
822dafde2328e17531a8c4df752e8e0b29a6f2c8 *src/qxk/qxk_sema.c
|
||||
49b36eef14ecffad5583efb1c7b2208cc0fc055d *src/qxk/qxk_xthr.c
|
||||
09c4447840e6b67c4f6adef68e13013abb87a69e *ports/arm-cm/qk/armclang/qk_port.c
|
||||
4e8a047094569163fc6826ee33435476b55b8b06 *ports/arm-cm/qk/armclang/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qk/armclang/qs_port.h
|
||||
061bb4b5f82fcee28c34441ed22287bcf7b294ab *ports/arm-cm/qk/gnu/qk_port.c
|
||||
df8f0dfeb5b459c0a0da34584ac6f67c3ddcee99 *ports/arm-cm/qk/gnu/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qk/gnu/qs_port.h
|
||||
b3bd86c8a739243aad85abb94e992ed83d3fe2cb *ports/arm-cm/qk/iar/qk_port.c
|
||||
9b0833336729666744ac35ca42b85d57756ba8fa *ports/arm-cm/qk/iar/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qk/iar/qs_port.h
|
||||
0a1f794005df1b7c256f52781928f86cb5dd96f9 *ports/arm-cm/qv/armclang/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qv/armclang/qs_port.h
|
||||
050f16532d529cac3c20e990f1df40246b04c9ac *ports/arm-cm/qv/armclang/qv_port.c
|
||||
0a1f794005df1b7c256f52781928f86cb5dd96f9 *ports/arm-cm/qv/gnu/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qv/gnu/qs_port.h
|
||||
c8289ae7c23524d13f4680a839f9088aa9264200 *ports/arm-cm/qv/gnu/qv_port.c
|
||||
3448a1cff7b1f10239a80e3191953ac018416bfd *ports/arm-cm/qv/iar/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qv/iar/qs_port.h
|
||||
a5ffa52d6c2249bd4a3aaca9f8e4d55553aad374 *ports/arm-cm/qv/iar/qv_port.c
|
||||
030f0e57e8565902d9feaec653b28980dfbb25e2 *ports/arm-cm/qxk/armclang/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qxk/armclang/qs_port.h
|
||||
0134e96053a73cf2deab3f8aee2a253464da473d *ports/arm-cm/qxk/armclang/qxk_port.c
|
||||
7f8806496c7aaa7ee212f00be7a80170d1cfe1c5 *ports/arm-cm/qxk/gnu/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qxk/gnu/qs_port.h
|
||||
ddec778d8a73f663a5d959dec0afb2ced792e0ef *ports/arm-cm/qxk/gnu/qxk_port.c
|
||||
02eee6cc5894c554358c573d7d9e159bb3b3b3a2 *ports/arm-cm/qxk/iar/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qxk/iar/qs_port.h
|
||||
624c3bb9e77359cc1fd8e78b6505bd1246a09f7a *ports/arm-cm/qxk/iar/qxk_port.c
|
||||
663b8e89a0ef61bbdd305984e14f971f889b3592 *ports/arm-cm/qutest/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cm/qutest/qs_port.h
|
||||
a53c0064a8650a9b7217259817a60cd67688606a *ports/arm-cr/qk/gnu/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qk/gnu/qs_port.h
|
||||
88d3ed754f05c43609ecf52767c270fa438ecd03 *ports/arm-cr/qk/iar/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qk/iar/qs_port.h
|
||||
e03d1c780c764e2a323b8423ae5045e226ee98c6 *ports/arm-cr/qk/ti/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qk/ti/qs_port.h
|
||||
a5c1f6cbb41d1884a6bfdaf4ccc1c7facb79c8eb *ports/arm-cr/qv/gnu/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qv/gnu/qs_port.h
|
||||
da079ffa59b518ead25ed8aed82adc1535fc0280 *ports/arm-cr/qv/iar/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qv/iar/qs_port.h
|
||||
b6a6e866be5f4ac5bfc961aee3c466a755b9cd03 *ports/arm-cr/qv/ti/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/arm-cr/qv/ti/qs_port.h
|
||||
68b3a558e7e3e22477abf917ef5f87f1b424f9e5 *ports/msp430/qk/qp_port.h
|
||||
a99dfb36c107e6c1b2fcc345792130bbc1ebcc4f *ports/msp430/qk/qs_port.h
|
||||
39dceae58da3feab8f34e4597d63e72e4f8084e2 *ports/msp430/qv/qp_port.h
|
||||
a99dfb36c107e6c1b2fcc345792130bbc1ebcc4f *ports/msp430/qv/qs_port.h
|
||||
1459908255dbdd581cd38bd5ea33a121fce496b7 *ports/msp430/qutest/qp_port.h
|
||||
a99dfb36c107e6c1b2fcc345792130bbc1ebcc4f *ports/msp430/qutest/qs_port.h
|
||||
ecc7c04f015684c71bbaca3e351b8f7cbcdcc550 *ports/config/qp_config.h
|
||||
2ee7f5594f6121705bbc57145175b5c5867e0070 *ports/embos/CMakeLists.txt
|
||||
7cfd0e233fc7ee4c73cccaa58f769f3643325785 *ports/embos/qf_port.c
|
||||
a378ac45d230fc61b4462b3cc17a05d018271ea7 *ports/embos/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/embos/qs_port.h
|
||||
e65838e1764bd6b4eb73025be1e8116ac28247b2 *ports/freertos/CMakeLists.txt
|
||||
743a22c5deedeca8216fb2109174cc4c81573804 *ports/freertos/qf_port.c
|
||||
1563d37772cf1cd0bddca356d49ee9805401f2cd *ports/freertos/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/freertos/qs_port.h
|
||||
a01e1f6d49ce056ac4e130d54ae4724fda2ebf32 *ports/threadx/CMakeLists.txt
|
||||
be313a1d4350f28274fcb6b0dcdebf5279f40c71 *ports/threadx/qf_port.c
|
||||
0aeea704b1cfac4e956e14e529dddf7759acde04 *ports/threadx/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/threadx/qs_port.h
|
||||
847cd324346d1d6c9c81422e99045442edcc7f64 *ports/threadx/README.md
|
||||
d9b6e1ca7a0215a3e141ae43970781d0f4d0d08f *ports/uc-os2/CMakeLists.txt
|
||||
30411991988667532a2432a80fa25aff2c451384 *ports/uc-os2/qf_port.c
|
||||
6223846204fb35ba9c9da56bb7d686fbf19d375c *ports/uc-os2/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *ports/uc-os2/qs_port.h
|
||||
4a5da9508e2012b2ca3943b87134163e558964cc *ports/qep-only/CMakeLists.txt
|
||||
cdb7c42a17fb3c5f282a55e08f99678e1cd56c0e *ports/qep-only/qp_port.h
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/qep-only/safe_std.h
|
||||
5d7914dfaf44a9c2552afdd5d8de4cfc3ebbc22a *ports/posix/CMakeLists.txt
|
||||
6b9d862537f4823ca83c81d2e8892da9711a69cd *ports/posix/qf_port.c
|
||||
78563f44b3d4b7835a75ef9dd3eea00e38f61946 *ports/posix/qp_port.h
|
||||
51d89a3fa8c7a6c5858f6354ea8cc350e42a9d30 *ports/posix/qs_port.c
|
||||
d05889780d358bb1fe02ffad1a9414332f5eb300 *ports/posix/qs_port.h
|
||||
6e33b2e5092d117f58c47b632c59420f382ac39f *ports/posix/README.md
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/posix/safe_std.h
|
||||
039b1e4066eb7eeac3233070ad6aa2cd9f6d1c69 *ports/posix-qv/CMakeLists.txt
|
||||
2b432fddb2bb9a9912db1c0f6e1ceada35323365 *ports/posix-qv/qf_port.c
|
||||
b73738f7297d6c023012d98c59c901a1e8951f02 *ports/posix-qv/qp_port.h
|
||||
51d89a3fa8c7a6c5858f6354ea8cc350e42a9d30 *ports/posix-qv/qs_port.c
|
||||
d05889780d358bb1fe02ffad1a9414332f5eb300 *ports/posix-qv/qs_port.h
|
||||
ab829eb3deed2bc84b3581610f1664777afd3841 *ports/posix-qv/README.md
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/posix-qv/safe_std.h
|
||||
1ecb2095e8de486c8111a420b5511a4ea0cb097c *ports/posix-qutest/CMakeLists.txt
|
||||
d55172d4bb6959349285a06ca6485f1f1a1b756e *ports/posix-qutest/qp_port.h
|
||||
d05889780d358bb1fe02ffad1a9414332f5eb300 *ports/posix-qutest/qs_port.h
|
||||
243941959b1dbf5dfbbe57941104ae202eec57fc *ports/posix-qutest/qutest_port.c
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/posix-qutest/safe_std.h
|
||||
cfea17ea9ab718e9e4f506e90c4b2fc8c1fea858 *ports/win32/CMakeLists.txt
|
||||
a99784fa31b0466af740186bbe96f8d78fc7c17a *ports/win32/qf_port.c
|
||||
d0b7e944e6df828e040ec146f639e42be2c354d5 *ports/win32/qp_port.h
|
||||
d86809f52df1ab5be11ed12dfb3b8ef4cb4fd6db *ports/win32/qs_port.c
|
||||
b1a67eb489d35d71cf6fb40fc8f087906839f1a7 *ports/win32/qs_port.h
|
||||
8d3500b2b8700f5aa925f7020631d7d1415bd028 *ports/win32/qwin_gui.c
|
||||
04f62b5f1812de29bfb0619af1fc04ec44256802 *ports/win32/qwin_gui.h
|
||||
3781ccdce31dea9d08493a801926eb278950786f *ports/win32/README.md
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/win32/safe_std.h
|
||||
8d589868e287ceb185b4837064c80d4eed8e1a44 *ports/win32-qv/CMakeLists.txt
|
||||
d6706afb9a3b11f6aad510f16ec1ed9665b98633 *ports/win32-qv/qf_port.c
|
||||
20249cc3927858f7d457433e64be963df0baddf7 *ports/win32-qv/qp_port.h
|
||||
d86809f52df1ab5be11ed12dfb3b8ef4cb4fd6db *ports/win32-qv/qs_port.c
|
||||
b1a67eb489d35d71cf6fb40fc8f087906839f1a7 *ports/win32-qv/qs_port.h
|
||||
77d78e462a3ac8fac9c75fd97720500ceb449664 *ports/win32-qv/qwin_gui.c
|
||||
be15234e51b8fe3c295ff644e84fbc1cfca89257 *ports/win32-qv/qwin_gui.h
|
||||
b57cec85e2fe5c261270f68acc3ae440802a62bd *ports/win32-qv/README.md
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/win32-qv/safe_std.h
|
||||
a04f13d2d9f24ef71d95f997d87f8a3ba9862e45 *ports/win32-qutest/CMakeLists.txt
|
||||
50be2b5d49345d908290a4660b1bbc5eaeb6b4d6 *ports/win32-qutest/qp_port.h
|
||||
b1a67eb489d35d71cf6fb40fc8f087906839f1a7 *ports/win32-qutest/qs_port.h
|
||||
1d850be2190dd03f528405266ba85f81e9ecff53 *ports/win32-qutest/qutest_port.c
|
||||
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/win32-qutest/safe_std.h
|
||||
848a30efa3274ff30fb72059f926fe7963ab2321 *zephyr/CMakeLists.txt
|
||||
10764710e545dd4d2ce0ddf032711df7f9191937 *zephyr/Kconfig
|
||||
2eb2a922e18b4760a68151ebee1b6282d20b4692 *zephyr/module.yml
|
||||
c691294aa02303c2d74c0b4fa62c2296491d1d15 *zephyr/qf_port.c
|
||||
109c291df50110f185adc17bcdf8becc0a79346c *zephyr/qp-zephyr.jpg
|
||||
abe4afc842977359a1bb63a76b765aed65b64def *zephyr/qp_port.h
|
||||
e48b7af7dff7cfe6742abbb4adb0d1b01b2020cb *zephyr/qs_port.h
|
||||
ab487299b61fea18e2926913048a4498b3bfa4b4 *zephyr/README.md
|
162
qpc_8.0.2.sha1
Normal file
162
qpc_8.0.2.sha1
Normal file
@ -0,0 +1,162 @@
|
||||
66333dd47b999c878440d0419638bfc481dcfa2d *include/qequeue.h
|
||||
e97955fabb532865a6a15409eef15645d627ed96 *include/qk.h
|
||||
63aa17cfee22188219be96d8736e4f3d443f4ca9 *include/qmpool.h
|
||||
c0882e529d8aba6f860d4d9dc353cb4893d6970a *include/qp.h
|
||||
29d33dd6ee2b03dac725bf50938dd5e6d0655f46 *include/qp_pkg.h
|
||||
12cb1f8910ec1c4a3a0af5b01deb68bba74b119e *include/qpc.h
|
||||
1609ca880f322b074eb63767d7c704be26a69769 *include/qs.h
|
||||
ef92a02258673672dde6ffeaec820ae9ec6a0f95 *include/qs_dummy.h
|
||||
18b1497a755d0dab5e3fb0e88dd3de4cfdb1aced *include/qs_pkg.h
|
||||
cf142966637ce4c4ae831017e8a77fb1fe3a678a *include/qsafe.h
|
||||
5bd2b79056d2c55811b375de3e643425485e1a76 *include/qstamp.h
|
||||
1fd9c43acda827d86090a8f2e6ab95158351eead *include/qv.h
|
||||
9dd5c494ccacfe8739857ae50d1a95e57d028650 *include/qxk.h
|
||||
5886c3a0831996cfbf7141255efb4e9f5b4d8254 *include/README.md
|
||||
7f54a0933a9dc2fcaca475919fa0067667ed99ed *src/qf/CMakeLists.txt
|
||||
03ee8c47f280c10c29260c3af745ea145943f6c4 *src/qf/qep_hsm.c
|
||||
8a1bbf59511c7e4bc048672c869280ebc6e39619 *src/qf/qep_msm.c
|
||||
e8f7d8dcd8b668b10dfd2b6d8c5e94fc42d6bc02 *src/qf/qf_act.c
|
||||
402996322cf90d1a256b1a65edc5df189664abfb *src/qf/qf_actq.c
|
||||
33b348c45cd218a4c7d74acaed1c26e87b3f0d52 *src/qf/qf_defer.c
|
||||
f1735b336c11049a2e00bb0bc2a518047b2ac1ce *src/qf/qf_dyn.c
|
||||
7af95508fbcad60e6dc031e33bcbdc803b764ed0 *src/qf/qf_mem.c
|
||||
27ac315463a0108f4e3c58cbea090ceb8da8bc00 *src/qf/qf_ps.c
|
||||
96ada1ea4ee23342f79d2b0608d930a829a2790a *src/qf/qf_qact.c
|
||||
f7e4046dcd5440f375884d743afcbc62289e2e9f *src/qf/qf_qeq.c
|
||||
d466792e96d60b3ff5e01c7ec858b031888b6cd1 *src/qf/qf_qmact.c
|
||||
f8aa87ddaa1e6b74196070e7208571a621a9d70e *src/qf/qf_time.c
|
||||
878a737efe234f40dc8c9374acc351e510b4da1e *src/qk/CMakeLists.txt
|
||||
cfd0869773fbddeae359b123ba98f335f89d71ce *src/qk/qk.c
|
||||
68c99a2991d25df7486e57edadaa955b2bda396d *src/qs/CMakeLists.txt
|
||||
c1257fbf29a2bfbf476fde5dba3e9d53859a932f *src/qs/qs.c
|
||||
c0ffe200944d4cc3ace073a1028bfccdbb957875 *src/qs/qs_64bit.c
|
||||
5f18c87dd1774d62a77d2ea586109c4159401d70 *src/qs/qs_fp.c
|
||||
b052ff2d8dbc40f3c347e2548e74ed582d95e6ef *src/qs/qs_rx.c
|
||||
b087ea69dfd8c370b9d43d114e3de4caf5d10775 *src/qs/qstamp.c
|
||||
717bffc3ab94bff47f54c94b2e1f82ff00949b7e *src/qs/qutest.c
|
||||
b1d2def9b8f6cde464170af7682ab0f01f4f40f6 *src/qv/CMakeLists.txt
|
||||
7295ed9e23dbde7787caf3e486f839080f6f47b2 *src/qv/qv.c
|
||||
405f00d17b9e0a04d239c7ed216ed4dabb9b09f6 *src/qxk/qxk.c
|
||||
353d1aa3b530af4e90c9c07f08cff4ddca9b1929 *src/qxk/qxk_mutex.c
|
||||
e992d1204cfceac7fce4c3f699f4f77787b8811e *src/qxk/qxk_sema.c
|
||||
fd29eed9e089ae2a2d65cd9a615fb7b5111debb7 *src/qxk/qxk_xthr.c
|
||||
0e330d6ac8fb04f3b7dac15dc2edc45ab69005fd *ports/arm-cm/config/qp_config.h
|
||||
bbd400817341d34b7aba9f31eaf5804d931b5de1 *ports/arm-cm/qk/armclang/qk_port.c
|
||||
caaf801e9f7bbcc6b8fb3664d58da2df53f53f51 *ports/arm-cm/qk/armclang/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qk/armclang/qs_port.h
|
||||
9c0cd53ce9ab526113a585c89e0cd25bc6d12236 *ports/arm-cm/qk/gnu/qk_port.c
|
||||
caaf801e9f7bbcc6b8fb3664d58da2df53f53f51 *ports/arm-cm/qk/gnu/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qk/gnu/qs_port.h
|
||||
f79b4f199a4c92dd9423921449c52af9b64d633b *ports/arm-cm/qk/iar/qk_port.c
|
||||
12dca6dbdc7511af283b5d80fb79d6771e54f5bc *ports/arm-cm/qk/iar/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qk/iar/qs_port.h
|
||||
8cf14894789bb7c99f0f0940340d28becb1a308d *ports/arm-cm/qv/armclang/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qv/armclang/qs_port.h
|
||||
6c41eeb2fe40fa017f2e3c2a550bd5758b576ab7 *ports/arm-cm/qv/armclang/qv_port.c
|
||||
8cf14894789bb7c99f0f0940340d28becb1a308d *ports/arm-cm/qv/gnu/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qv/gnu/qs_port.h
|
||||
905b5063994ea2ff6ce12a1c8d51006789cb3f45 *ports/arm-cm/qv/gnu/qv_port.c
|
||||
deb66c87f75b5af52d14ab3a2449a9b68b6f1024 *ports/arm-cm/qv/iar/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qv/iar/qs_port.h
|
||||
efca09f53ba5dee0b7e93947939ef654ed7d4ff6 *ports/arm-cm/qv/iar/qv_port.c
|
||||
5172ce6e18f7e2083b042b5dc0fcc4b6ce40a403 *ports/arm-cm/qxk/armclang/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qxk/armclang/qs_port.h
|
||||
60773cce000c3a00c34194aa415c981d60ab4d05 *ports/arm-cm/qxk/armclang/qxk_port.c
|
||||
5172ce6e18f7e2083b042b5dc0fcc4b6ce40a403 *ports/arm-cm/qxk/gnu/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qxk/gnu/qs_port.h
|
||||
e24e90e959d8b28e685c08c34f8b487125da4458 *ports/arm-cm/qxk/gnu/qxk_port.c
|
||||
3cdf8223edd056f5aaa4254eb6de80d73a9de767 *ports/arm-cm/qxk/iar/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qxk/iar/qs_port.h
|
||||
e3a4f1f86a0fbe2718381dec81f6e57e58ddab07 *ports/arm-cm/qxk/iar/qxk_port.c
|
||||
9ab1ac34865644e85d5b7a7c19f58e9d64eaef93 *ports/arm-cm/qutest/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cm/qutest/qs_port.h
|
||||
71a243c9345c2986d896bff1ae756bcde326cdda *ports/arm-cr/config/qp_config.h
|
||||
219b6c1c437959ebbc2f5e5430d8b86957d67eac *ports/arm-cr/qk/gnu/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qk/gnu/qs_port.h
|
||||
1663a960814e4a7a8d2db95aa25aab0ff273823d *ports/arm-cr/qk/iar/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qk/iar/qs_port.h
|
||||
6989b54951445d8797fc98a5e0bb708e1e0a900a *ports/arm-cr/qk/ti/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qk/ti/qs_port.h
|
||||
3eadaeda538ccb4bf2458bb39d8412ec1191cd99 *ports/arm-cr/qv/gnu/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qv/gnu/qs_port.h
|
||||
b177a95edac0d8db21ae9fb45a7147ab13943e0d *ports/arm-cr/qv/iar/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qv/iar/qs_port.h
|
||||
8cbe00552dce187aaa0add875a9b3920ff200e70 *ports/arm-cr/qv/ti/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/arm-cr/qv/ti/qs_port.h
|
||||
bf1e8bde3e5a5ec984d840fdb87c7e7d511fd19d *ports/msp430/qk/qp_port.h
|
||||
15a126600fca9ca9cdacb1384b6c9b56d46d6cd1 *ports/msp430/qk/qs_port.h
|
||||
6e1183c72de053848d3c6c4e3e5cd758898b0759 *ports/msp430/qv/qp_port.h
|
||||
15a126600fca9ca9cdacb1384b6c9b56d46d6cd1 *ports/msp430/qv/qs_port.h
|
||||
319887535b798cbd799a7201cbd6f86acc597dce *ports/msp430/qutest/qp_port.h
|
||||
15a126600fca9ca9cdacb1384b6c9b56d46d6cd1 *ports/msp430/qutest/qs_port.h
|
||||
496eac74a77a1280f07e58aeb20603a89fd8bb60 *ports/config/qp_config.h
|
||||
2ee7f5594f6121705bbc57145175b5c5867e0070 *ports/embos/CMakeLists.txt
|
||||
c89b93be587f7adcec43930304c9ae5fde0b4481 *ports/embos/qf_port.c
|
||||
35807bc606a0334ff45d75ae094468242e1bad05 *ports/embos/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/embos/qs_port.h
|
||||
e65838e1764bd6b4eb73025be1e8116ac28247b2 *ports/freertos/CMakeLists.txt
|
||||
55387dfccb6f0f2e724c0674635784b85a86595a *ports/freertos/qf_port.c
|
||||
9ae6e269d706c81aa955a81857e2044a341f3d4f *ports/freertos/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/freertos/qs_port.h
|
||||
a01e1f6d49ce056ac4e130d54ae4724fda2ebf32 *ports/threadx/CMakeLists.txt
|
||||
e046b9206a2e8d06465b7240d41622a1a79a260e *ports/threadx/qf_port.c
|
||||
174dcf1ecf745e195647e1c630593528247a501b *ports/threadx/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/threadx/qs_port.h
|
||||
847cd324346d1d6c9c81422e99045442edcc7f64 *ports/threadx/README.md
|
||||
d9b6e1ca7a0215a3e141ae43970781d0f4d0d08f *ports/uc-os2/CMakeLists.txt
|
||||
f295018c8808aa09f1033654244140c3297b8f2b *ports/uc-os2/qf_port.c
|
||||
afd0a40b566c9c0672c18fe95f39e5941b1e2bae *ports/uc-os2/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *ports/uc-os2/qs_port.h
|
||||
4a5da9508e2012b2ca3943b87134163e558964cc *ports/qep-only/CMakeLists.txt
|
||||
acc6603e5ff3d1bef767c9770a9a80f6dc381898 *ports/qep-only/qp_port.h
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/qep-only/safe_std.h
|
||||
5d7914dfaf44a9c2552afdd5d8de4cfc3ebbc22a *ports/posix/CMakeLists.txt
|
||||
d2582a682a4ee053994a3b9d623965c7cd98e498 *ports/posix/qf_port.c
|
||||
ee091d4bef409dd28113d941833ccfba42976422 *ports/posix/qp_port.h
|
||||
faaa0c0b286f7acc6265ae50f0671afb838563de *ports/posix/qs_port.c
|
||||
3a91e923b22fa0cfe3ca12d23d0679e132b21b2c *ports/posix/qs_port.h
|
||||
6e33b2e5092d117f58c47b632c59420f382ac39f *ports/posix/README.md
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/posix/safe_std.h
|
||||
039b1e4066eb7eeac3233070ad6aa2cd9f6d1c69 *ports/posix-qv/CMakeLists.txt
|
||||
5ca7b69ed61ba195867ca3be818ee1eb8ceab51e *ports/posix-qv/qf_port.c
|
||||
048b213bc1af84b0e3c29fce3c58e21939c3938d *ports/posix-qv/qp_port.h
|
||||
faaa0c0b286f7acc6265ae50f0671afb838563de *ports/posix-qv/qs_port.c
|
||||
3a91e923b22fa0cfe3ca12d23d0679e132b21b2c *ports/posix-qv/qs_port.h
|
||||
ab829eb3deed2bc84b3581610f1664777afd3841 *ports/posix-qv/README.md
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/posix-qv/safe_std.h
|
||||
1ecb2095e8de486c8111a420b5511a4ea0cb097c *ports/posix-qutest/CMakeLists.txt
|
||||
5fb0c6b9a07b67d3b74c8b3ca41f03b1dc2dde7d *ports/posix-qutest/qp_port.h
|
||||
3a91e923b22fa0cfe3ca12d23d0679e132b21b2c *ports/posix-qutest/qs_port.h
|
||||
18a858d16ae0e769a7993e6dc94bf420f32d49fc *ports/posix-qutest/qutest_port.c
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/posix-qutest/safe_std.h
|
||||
cfea17ea9ab718e9e4f506e90c4b2fc8c1fea858 *ports/win32/CMakeLists.txt
|
||||
d628226105618402813ee97a58e54bdbb0058c9a *ports/win32/qf_port.c
|
||||
5dabd3c775276804fc65ed4395385765e0d9ca0f *ports/win32/qp_port.h
|
||||
c55c3bff64ad2a47691104a6d927914006286f47 *ports/win32/qs_port.c
|
||||
7109827ba2c76667d61a445d8a22219a9627b28f *ports/win32/qs_port.h
|
||||
1cde650008ea5d867daa3bc0f4f4ada7365dacba *ports/win32/qwin_gui.c
|
||||
4c44c6fe98ae54634a7216a885b091c08f9f1735 *ports/win32/qwin_gui.h
|
||||
3781ccdce31dea9d08493a801926eb278950786f *ports/win32/README.md
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/win32/safe_std.h
|
||||
8d589868e287ceb185b4837064c80d4eed8e1a44 *ports/win32-qv/CMakeLists.txt
|
||||
6658b9e823fe2a031cd26def2c080f8264cf3e0b *ports/win32-qv/qf_port.c
|
||||
c02fab4c658ecbb53e86256b84a8f61b7f3e20c9 *ports/win32-qv/qp_port.h
|
||||
c55c3bff64ad2a47691104a6d927914006286f47 *ports/win32-qv/qs_port.c
|
||||
7109827ba2c76667d61a445d8a22219a9627b28f *ports/win32-qv/qs_port.h
|
||||
1cde650008ea5d867daa3bc0f4f4ada7365dacba *ports/win32-qv/qwin_gui.c
|
||||
4c44c6fe98ae54634a7216a885b091c08f9f1735 *ports/win32-qv/qwin_gui.h
|
||||
b57cec85e2fe5c261270f68acc3ae440802a62bd *ports/win32-qv/README.md
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/win32-qv/safe_std.h
|
||||
a04f13d2d9f24ef71d95f997d87f8a3ba9862e45 *ports/win32-qutest/CMakeLists.txt
|
||||
3b580c033d3a0cadc6b2f10fd215d5c30779b3fe *ports/win32-qutest/qp_port.h
|
||||
7109827ba2c76667d61a445d8a22219a9627b28f *ports/win32-qutest/qs_port.h
|
||||
30af4a5587b6efdfc7bd914962ba9b8f93c27d6b *ports/win32-qutest/qutest_port.c
|
||||
54391d2a37ed3bce69e90ccfd8615ca736628c3e *ports/win32-qutest/safe_std.h
|
||||
848a30efa3274ff30fb72059f926fe7963ab2321 *zephyr/CMakeLists.txt
|
||||
10764710e545dd4d2ce0ddf032711df7f9191937 *zephyr/Kconfig
|
||||
2eb2a922e18b4760a68151ebee1b6282d20b4692 *zephyr/module.yml
|
||||
2dcf544afc6feb5dbb743a39576a96121b49ac2e *zephyr/qf_port.c
|
||||
109c291df50110f185adc17bcdf8becc0a79346c *zephyr/qp-zephyr.jpg
|
||||
1bdb624c82e926095052e4629cd1a8f44bce93d3 *zephyr/qp_port.h
|
||||
86c87e41ed3ef19e785585e145e95efa50dbec21 *zephyr/qs_port.h
|
||||
ab487299b61fea18e2926913048a4498b3bfa4b4 *zephyr/README.md
|
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