7.4.0-rc.3

This commit is contained in:
MMS 2024-07-19 19:25:12 -04:00
parent d18627d1fb
commit c284a04584
52 changed files with 525 additions and 445 deletions

2
.gitignore vendored
View File

@ -1,3 +1,4 @@
*.qms
*.obj
*.o
*.d
@ -33,7 +34,6 @@
*.Debug
*.Release
*.bak
.qpc
version-*
JLink*.*

View File

@ -1,6 +1,6 @@
Any user of the QP/C real-time embedded framework
qpc
2024-12-31
2025-12-31
Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -27,4 +27,4 @@ Plagiarizing this software to sidestep the license obligations is illegal.
Contact information:
<www.state-machine.com/licensing>
<info@state-machine.com>
#5B2B82CE252E0FB7975E7196F9141A16DD356860
#BC89496843DE5343CECA990E1370BDD6F9ACDC56

View File

@ -13,10 +13,10 @@ License, version 3 ("GPLv3"). It applies to the QP/C++ and QP-nano
source code (the "QP Frameworks") that is distributed as part of the
QP-Arduino Support Package.
When you use QP Frameworks inside your program, the QP Frameworks' code
is combined with your code of the program. The purpose of this Exception
is to allow non-GPL (including proprietary) programs to use, in this way,
the QP Frameworks' code covered by this Exception.
When you use QP/C++ or QP-nano Frameworks inside your program, the frameworks'
code is combined with your code of the program. The purpose of this Exception
is to allow non-GPL (including proprietary) programs to use, in this way, the
QP Frameworks' code covered by this Exception.
0. Definitions.
"QP Frameworks" are lightweight real-time embedded frameworks (RTEFs)

View File

@ -7,11 +7,10 @@ Copyright (c) 2005-2021 Quantum Leaps, LLC. <https://www.state-machine.com/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This QP/C++ and QP-nano Framework Exception for Arduino ("Exception")
This QP/C and QP/C++ Framework Exception for Raspberry Pi ("Exception")
is an additional permission under section 7 of the GNU General Public
License, version 3 ("GPLv3"). It applies to the QP/C++ and QP-nano
source code (the "QP Frameworks") that is distributed as part of the
QP-Arduino Support Package.
License, version 3 ("GPLv3"). It applies to the QP/C and QP/C++ source
code (the "QP Frameworks").
When you use QP Frameworks inside your program, the QP Frameworks' code
is combined with your code of the program. The purpose of this Exception
@ -24,23 +23,23 @@ as well as all supporting ports and examples, as distributed from:
<https://www.state-machine.com> and
<https://github.com/QuantumLeaps>
"Raspberry Pi" is a low cost, credit-card sized computer that is
designed by the Raspberry Pi Foundation based in the UK and registered
as UK educational charity under the number 1129409. For the purpose of
this license, Raspberry Pi means only genuine Raspberry Pi computer
bearing the Raspberry Pi logo, as described at
"Raspberry Pi" is a low cost, credit-card sized computer that is designed
by the Raspberry Pi Foundation based in the UK and registered as UK
educational charity under the number 1129409. For the purpose of this
license, Raspberry Pi means only genuine Raspberry Pi computer bearing
the Raspberry Pi logo, as described at:
<https://www.raspberrypi.com/trademark-rules>.
"Target Code" refers to output from any compiler and linker in
executable form suitable for execution by Raspberry Pi.
"Target Code" refers to output from any compiler and linker in executable
form suitable for execution by Raspberry Pi.
1. Grant of Additional Permission
As a special Exception, the copyright holder of QP Frameworks gives you
permission to propagate a work of Target Code formed by combining the QP
Frameworks with your own source code without the requirement to expose
your proprietary source code, provided that all Target Code will execute
on a genuine Raspberry Pi computer(s).
permission to propagate a work of Target Code formed by combining the
QP/C or QP/C++ Frameworks with your own source code without the requirement
to expose your propriatory source code, provided that all Target Code will
execute on a genuine Raspberry Pi computer(s).
2. No Weakening of GPL
The availability of this Exception does not imply any general

View File

@ -7,11 +7,10 @@ Copyright (c) 2005-2014 Quantum Leaps, LLC. <https://www.state-machine.com/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
This QP/C++ and QP-nano Framework Exception for Arduino ("Exception")
This QP/C and QP/C++ Framework Exception for ARM mbed ("Exception")
is an additional permission under section 7 of the GNU General Public
License, version 3 ("GPLv3"). It applies to the QP/C++ and QP-nano
source code (the "QP Frameworks") that is distributed as part of the
QP-Arduino Support Package.
License, version 3 ("GPLv3"). It applies to the QP/C and QP/C++ source
code (the "QP Frameworks").
When you use QP Frameworks inside your program, the QP Frameworks' code
is combined with your code of the program. The purpose of this Exception
@ -24,16 +23,15 @@ as well as all supporting ports and examples, as distributed from:
<https://www.state-machine.com> and
<https://github.com/QuantumLeaps>
"mbed-Enabled Board" means any board with an ARM Cortex-M CPU that is
listed on the official "mbed platforms" website
<https://os.mbed.com/platforms>.
"mbed-Enabled Board" means any board with an ARM Cortex-M CPU that is listed
on the official "mbed platforms" website <https://os.mbed.com/platforms>.
1. Grant of Additional Permission
As a special Exception, the copyright holder of QP Frameworks gives you
permission to propagate a work of Target Code formed by combining
the QP Frameworks with your own source code without the requirement
to expose your proprietary source code, provided that all Target Code will
permission to propagate a work of Target Code formed by combining the
QP/C or QP/C++ Frameworks with your own source code without the requirement
to expose your propriatory source code, provided that all Target Code will
execute on an "mbed-Enabled Board".
2. No Weakening of GPL

@ -1 +1 @@
Subproject commit 8912782f022cdf8ebf2528619d7d46af7fd4f097
Subproject commit c2de401845b27784d4d9f5a9d6185f7b8d99add0

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qequeue.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qk.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qmpool.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qp.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -44,7 +44,7 @@
#define QP_H_
//============================================================================
#define QP_VERSION_STR "7.4.0-rc.1"
#define QP_VERSION_STR "7.4.0-rc.3"
#define QP_VERSION 740U
#define QP_RELEASE 0x7092C3BBU

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qp_pkg.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qpc.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qs.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -159,9 +159,9 @@ enum QSpyPre {
QS_ENUM_DICT, //!< enumeration dictionary entry
// [55] Additional QEP records
QS_QEP_TRAN_HIST, //!< a tran to history was taken
QS_QEP_TRAN_EP, //!< a tran to entry point into a submachine
QS_QEP_TRAN_XP, //!< a tran to exit point out of a submachine
QS_QEP_TRAN_HIST, //!< a tran. to history was taken
QS_QEP_TRAN_EP, //!< a tran. to entry point into a submachine
QS_QEP_TRAN_XP, //!< a tran. to exit point out of a submachine
// [58] Miscellaneous QS records (not maskable)
QS_TEST_PAUSED, //!< test has been paused
@ -774,7 +774,7 @@ uint32_t QS_getTestProbe_(QSpyFunPtr const api);
//${QS::QUTest-stub::QHsmDummy} ..............................................
//! @class QHsmDummy
//! @extends QHsm
//! @extends QAsm
typedef struct {
// protected:
QAsm super;

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qs_dummy.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qs_pkg.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qsafe.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qstamp.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qv.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${include::qxk.h}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -22,7 +22,7 @@
// <www.state-machine.com/licensing>
// <info@state-machine.com>
//============================================================================
//! @date Last updated on: 2024-06-11
//! @date Last updated on: 2024-07-19
//! @version Last updated for: @ref qpc_7_4_0
//!
//! @file
@ -61,9 +61,47 @@ static struct timespec l_tick; // structure for the clock tick
static int_t l_tickPrio; // priority of the ticker thread
#define NSEC_PER_SEC 1000000000L
#define DEFAULT_TICKS_PER_SEC 100
#define DEFAULT_TICKS_PER_SEC 100L
//============================================================================
//----------------------------------------------------------------------------
#ifdef __APPLE__
#define TIMER_ABSTIME 0
// emulate clock_nanosleep() for CLOCK_MONOTONIC and TIMER_ABSTIME
static inline int clock_nanosleep(clockid_t clockid, int flags,
const struct timespec* t,
struct timespec* remain)
{
Q_UNUSED_PAR(clockid);
Q_UNUSED_PAR(flags);
Q_UNUSED_PAR(remain);
struct timespec ts_delta;
clock_gettime(CLOCK_MONOTONIC, &ts_delta);
ts_delta.tv_sec = t->tv_sec - ts_delta.tv_sec;
ts_delta.tv_nsec = t->tv_nsec - ts_delta.tv_nsec;
if (ts_delta.tv_sec < 0) {
ts_delta.tv_sec = 0;
ts_delta.tv_nsec = 0;
}
else if (ts_delta.tv_nsec < 0) {
if (ts_delta.tv_sec == 0) {
ts_delta.tv_sec = 0;
ts_delta.tv_nsec = 0;
}
else {
ts_delta.tv_sec = ts_delta.tv_sec - 1;
ts_delta.tv_nsec = ts_delta.tv_nsec + NSEC_PER_SEC;
}
}
return nanosleep(&ts_delta, NULL);
}
#endif
//----------------------------------------------------------------------------
static void *ticker_thread(void *arg); // prototype
static void *ticker_thread(void *arg) { // for pthread_create()
Q_UNUSED_PAR(arg);
@ -91,7 +129,8 @@ static void *ticker_thread(void *arg) { // for pthread_create()
if (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME,
&next_tick, NULL) == 0) // success?
{
QF_onClockTick(); // must call QTIMEEVT_TICK_X()
// clock tick callback (must call QTIMEEVT_TICK_X())
QF_onClockTick();
}
}
return (void *)0; // return success
@ -121,12 +160,12 @@ static int_t l_critSectNest; // critical section nesting up-down counter
//............................................................................
void QF_enterCriticalSection_(void) {
pthread_mutex_lock(&l_critSectMutex_);
Q_ASSERT_INCRIT(100, l_critSectNest == 0); // NO nesting of crit.sect!
Q_ASSERT_INCRIT(101, l_critSectNest == 0); // NO nesting of crit.sect!
++l_critSectNest;
}
//............................................................................
void QF_leaveCriticalSection_(void) {
Q_ASSERT_INCRIT(200, l_critSectNest == 1); // crit.sect. must ballace!
Q_ASSERT_INCRIT(102, l_critSectNest == 1); // crit.sect. must balance!
if ((--l_critSectNest) == 0) {
pthread_mutex_unlock(&l_critSectMutex_);
}
@ -166,6 +205,7 @@ void QF_init(void) {
//............................................................................
int QF_run(void) {
l_isRunning = true; // QF is running
QF_onStartup(); // application-specific startup callback
@ -218,7 +258,6 @@ int QF_run(void) {
QS_BEGIN_PRE_(QS_QF_RUN, 0U)
QS_END_PRE_()
l_isRunning = true; // QF is running
while (l_isRunning) {
Q_ASSERT_INCRIT(300, QPSet_verify_(&QF_readySet_, &QF_readySet_dis_));
@ -233,8 +272,7 @@ int QF_run(void) {
QF_CRIT_EXIT();
QEvt const *e = QActive_get_(a);
// dispatch event (virtual call)
(*a->super.vptr->dispatch)(&a->super, e, a->prio);
QASM_DISPATCH(&a->super, e, a->prio); // dispatch to the HSM
QF_gc(e);
QF_CRIT_ENTRY();
@ -329,7 +367,6 @@ int QF_consoleWaitForKey(void) {
#endif
// QActive functions =========================================================
void QActive_start_(QActive * const me, QPrioSpec const prioSpec,
QEvt const * * const qSto, uint_fast16_t const qLen,
void * const stkSto, uint_fast16_t const stkSize,
@ -354,7 +391,6 @@ void QActive_start_(QActive * const me, QPrioSpec const prioSpec,
(*me->super.vptr->init)(&me->super, par, me->prio);
QS_FLUSH(); // flush the QS trace buffer to the host
}
//............................................................................
#ifdef QACTIVE_CAN_STOP
void QActive_stop(QActive * const me) {

View File

@ -22,7 +22,7 @@
// <www.state-machine.com>
// <info@state-machine.com>
//============================================================================
//! @date Last updated on: 2024-06-11
//! @date Last updated on: 2024-07-18
//! @version Last updated for: @ref qpc_7_4_0
//!
//! @file
@ -151,7 +151,7 @@ uint8_t QS_onStartup(void const *arg) {
if (fcntl(l_sock, F_SETFL, status | O_NONBLOCK) != 0) {
FPRINTF_S(stderr, "<TARGET> ERROR Failed to set non-blocking socket "
"errno=%d\n", errno);
QS_EXIT();
QF_stop(); // <== stop and exit the application
goto error;
}
@ -177,7 +177,7 @@ void QS_onCleanup(void) {
close(l_sock);
l_sock = INVALID_SOCKET;
}
//PRINTF_S("<TARGET> Disconnected from QSPY\n");
//PRINTF_S("%s\n", "<TARGET> Disconnected from QSPY");
}
//............................................................................
void QS_onReset(void) {
@ -232,7 +232,7 @@ void QS_onFlush(void) {
//............................................................................
QSTimeCtr QS_onGetTime(void) {
struct timespec tspec;
clock_gettime(CLOCK_MONOTONIC_RAW, &tspec);
clock_gettime(CLOCK_MONOTONIC, &tspec);
// convert to units of 0.1 microsecond
QSTimeCtr time = (QSTimeCtr)(tspec.tv_sec * 10000000 + tspec.tv_nsec / 100);

View File

@ -22,7 +22,7 @@
// <www.state-machine.com/licensing>
// <info@state-machine.com>
//============================================================================
//! @date Last updated on: 2024-06-11
//! @date Last updated on: 2024-07-18
//! @version Last updated for: @ref qpc_7_4_0
//!
//! @file
@ -72,7 +72,46 @@ static void sigIntHandler(int dummy) {
exit(-1);
}
//----------------------------------------------------------------------------
#ifdef __APPLE__
#define TIMER_ABSTIME 0
// emulate clock_nanosleep() for CLOCK_MONOTONIC and TIMER_ABSTIME
static inline int clock_nanosleep(clockid_t clockid, int flags,
const struct timespec* t,
struct timespec* remain)
{
Q_UNUSED_PAR(clockid);
Q_UNUSED_PAR(flags);
Q_UNUSED_PAR(remain);
struct timespec ts_delta;
clock_gettime(CLOCK_MONOTONIC, &ts_delta);
ts_delta.tv_sec = t->tv_sec - ts_delta.tv_sec;
ts_delta.tv_nsec = t->tv_nsec - ts_delta.tv_nsec;
if (ts_delta.tv_sec < 0) {
ts_delta.tv_sec = 0;
ts_delta.tv_nsec = 0;
}
else if (ts_delta.tv_nsec < 0) {
if (ts_delta.tv_sec == 0) {
ts_delta.tv_sec = 0;
ts_delta.tv_nsec = 0;
}
else {
ts_delta.tv_sec = ts_delta.tv_sec - 1;
ts_delta.tv_nsec = ts_delta.tv_nsec + NSEC_PER_SEC;
}
}
return nanosleep(&ts_delta, NULL);
}
#endif
//============================================================================
// QF functions
// NOTE: initialize the critical section mutex as non-recursive,
// but check that nesting of critical sections never occurs
@ -83,12 +122,12 @@ int_t QF_critSectNest_;
//............................................................................
void QF_enterCriticalSection_(void) {
pthread_mutex_lock(&QF_critSectMutex_);
Q_ASSERT_INCRIT(100, QF_critSectNest_ == 0); // NO nesting of crit.sect!
Q_ASSERT_INCRIT(101, QF_critSectNest_ == 0); // NO nesting of crit.sect!
++QF_critSectNest_;
}
//............................................................................
void QF_leaveCriticalSection_(void) {
Q_ASSERT_INCRIT(200, QF_critSectNest_ == 1); // crit.sect. must ballace!
Q_ASSERT_INCRIT(102, QF_critSectNest_ == 1); // crit.sect. must balance!
if ((--QF_critSectNest_) == 0) {
pthread_mutex_unlock(&QF_critSectMutex_);
}
@ -112,7 +151,7 @@ void QF_init(void) {
}
l_tick.tv_sec = 0;
l_tick.tv_nsec = NSEC_PER_SEC / DEFAULT_TICKS_PER_SEC; // default tick
l_tick.tv_nsec = NSEC_PER_SEC / DEFAULT_TICKS_PER_SEC; // default rate
l_tickPrio = sched_get_priority_min(SCHED_FIFO); // default ticker prio
// install the SIGINT (Ctrl-C) signal handler
@ -167,10 +206,12 @@ int QF_run(void) {
}
// sleep without drifting till next_time (absolute), see NOTE03
(void)clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME,
&next_tick, NULL);
// clock tick callback (must call QTIMEEVT_TICK_X() once)
QF_onClockTick();
if (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME,
&next_tick, NULL) == 0) // success?
{
// clock tick callback (must call QTIMEEVT_TICK_X() once)
QF_onClockTick();
}
}
}
else { // The provided system clock tick NOT configured

View File

@ -22,7 +22,7 @@
// <www.state-machine.com>
// <info@state-machine.com>
//============================================================================
//! @date Last updated on: 2024-06-11
//! @date Last updated on: 2024-07-18
//! @version Last updated for: @ref qpc_7_4_0
//!
//! @file
@ -151,7 +151,7 @@ uint8_t QS_onStartup(void const *arg) {
if (fcntl(l_sock, F_SETFL, status | O_NONBLOCK) != 0) {
FPRINTF_S(stderr, "<TARGET> ERROR Failed to set non-blocking socket "
"errno=%d\n", errno);
QS_EXIT();
QF_stop(); // <== stop and exit the application
goto error;
}
@ -232,7 +232,7 @@ void QS_onFlush(void) {
//............................................................................
QSTimeCtr QS_onGetTime(void) {
struct timespec tspec;
clock_gettime(CLOCK_MONOTONIC_RAW, &tspec);
clock_gettime(CLOCK_MONOTONIC, &tspec);
// convert to units of 0.1 microsecond
QSTimeCtr time = (QSTimeCtr)(tspec.tv_sec * 10000000 + tspec.tv_nsec / 100);

View File

@ -155,8 +155,7 @@ int QF_run(void) {
QF_CRIT_EXIT();
QEvt const *e = QActive_get_(a);
// dispatch event (virtual call)
(*a->super.vptr->dispatch)(&a->super, e, a->prio);
QASM_DISPATCH(&a->super, e, a->prio); // dispatch to the HSM
QF_gc(e);
QF_CRIT_ENTRY();

181
qpc.md5
View File

@ -1,181 +0,0 @@
428e1fb89d8905aaa5fc80ebef1bb0fd *qpc.qm
f71fdc0261b7d7e1693f7cf92b269fc0 *include/qequeue.h
57b1efebccde23a26f9d11e822ec379f *include/qk.h
807f80a7a39be52083010803f76b4f05 *include/qmpool.h
b492f9909964e645db23a20da495c8e2 *include/qp.h
e7b6c999b10d91f5c1adf1fde500e452 *include/qp_pkg.h
01e5748669bf110cd91d0bbe8eb5b206 *include/qpc.h
2f2ed281e63d5803738ab0c92a77171f *include/qs.h
66f8bd1303a72346f52fbcccfd363586 *include/qs_dummy.h
fad2d5ccd173e6374f4bce243709eef7 *include/qs_pkg.h
f59bf88705afe5b0acc999f8b47a6745 *include/qsafe.h
990a963045e6485091658b0eea0a9dbd *include/qstamp.h
431c6e320c14f0b02dbc78e2d49f6431 *include/qv.h
7845e9391f7a94311fd849da56abd8a1 *include/qxk.h
a25152f319178420b5b5140ca51ea4ae *src/qf/CMakeLists.txt
d6db193ebc951f705c383d01b5ef2ee3 *src/qf/qep_hsm.c
95358d16fc2df768e95057c4400d141c *src/qf/qep_msm.c
14e37e53c5e0aec72ab8f35f94c1b96d *src/qf/qf_act.c
cbd76f4312137262c2fd3ec8a7836fea *src/qf/qf_actq.c
858f4abf264ab69734b4df56b0bfa739 *src/qf/qf_defer.c
d7bf54c7c065db78e2b9aea9dc972f13 *src/qf/qf_dyn.c
276a142fc226625a51fe678ded9ca642 *src/qf/qf_mem.c
e090893c0f33678c6bf267c637c6cb48 *src/qf/qf_ps.c
5a1d0999864f48a688d34e9273868e8b *src/qf/qf_qact.c
0025254525a7065b35dbb781187cd1e1 *src/qf/qf_qeq.c
f9867335faa23f0b57c921c8882e7a52 *src/qf/qf_qmact.c
d457172637ab14cf42f99071bc7b8e7a *src/qf/qf_time.c
ccd28413fc3a093ca99b03854cf7439b *src/qk/CMakeLists.txt
af0330a6f55fe4cffc70f27fa95baebc *src/qk/qk.c
27c155798720d7fb3b2f9cc38e311393 *src/qs/CMakeLists.txt
274720fa9a3b5015951b39a6159f6773 *src/qs/qs.c
9091ffd15f7ec791076091bb17eec5fc *src/qs/qs_64bit.c
730d9bea159722e5d2c225e01b5c7875 *src/qs/qs_fp.c
60453f6d2b1f915e6e477cca68cb7fee *src/qs/qs_rx.c
80a31dfc0e24839342fe193779401e7b *src/qs/qstamp.c
9b60fe2d783f6cc18a9117e339b6ca5d *src/qs/qutest.c
cf8fa24441cb9577288f73bdb4effbff *src/qv/CMakeLists.txt
a428b106b6a95c80077a156ebe764622 *src/qv/qv.c
3a9240f29676dea5ce3df8fed587ae52 *src/qxk/CMakeLists.txt
a2ea8a8890449cf7686988c5e6631148 *src/qxk/qxk.c
c098be23217a3aa757bc2e2d96ace49a *src/qxk/qxk_mutex.c
214032bca5ddd45690cf3ca67f9f86c3 *src/qxk/qxk_sema.c
c72e1cc89263ebda9462ca6fb8b04326 *src/qxk/qxk_xthr.c
74f494c8854313253a4353f649e707ae *ports/lint-plus/au-barr.lnt
2a8fea61bccbe5e8c7536a29f2ec8e98 *ports/lint-plus/au-ds.lnt
115b283af0eeeae9fdbd91836710e228 *ports/lint-plus/au-misra4.lnt
63418574679007d8ec13815cbff46f84 *ports/lint-plus/au-ql-c99.lnt
be52f283a42b5b277097b5984181f204 *ports/lint-plus/options.lnt
02803e47d485980bdabc4a5d271288bd *ports/lint-plus/ql-style.lnt
77e3b47c56111ca18d91813c586fe126 *ports/lint-plus/qpc.lnt
ecca2c20a6e0dc29a1f62aeb500ed165 *ports/lint-plus/std.lnt
8f1b876266fb274386670d94d0ba0fa2 *ports/arm-cm/qk/armclang/qk_port.c
5fcbb1d62dcc33ad8e0f38dfcf6f88a3 *ports/arm-cm/qk/armclang/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qk/armclang/qs_port.h
ff973dd6492f060525805ba13d6ca02a *ports/arm-cm/qk/config/qp_config.h
116b6f9ac224fe5d60f0bfe0f8a4f9f0 *ports/arm-cm/qk/gnu/qk_port.c
12847297533c3226ccf66f189df8b4ca *ports/arm-cm/qk/gnu/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qk/gnu/qs_port.h
ca7328d9e59618ce34a118d936e1b269 *ports/arm-cm/qk/iar/qk_port.c
a5152099566e2b5f43787d67d5d86aef *ports/arm-cm/qk/iar/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qk/iar/qs_port.h
a13c0887eb882d089ec5cb57c8f755ac *ports/arm-cm/qv/armclang/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qv/armclang/qs_port.h
277f97c6a850930b54c02e83a99e9663 *ports/arm-cm/qv/armclang/qv_port.c
247a4d37cdedb45f4819bf628d0d83cf *ports/arm-cm/qv/config/qp_config.h
6213045e2390e7a59644f40e1aaa189c *ports/arm-cm/qv/gnu/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qv/gnu/qs_port.h
1c87a822c4d802784342b58803261cdc *ports/arm-cm/qv/gnu/qv_port.c
517ee111b0df9926e6ba3d30be5210ea *ports/arm-cm/qv/iar/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qv/iar/qs_port.h
867217f77f0c6cdb0a82a964a7027510 *ports/arm-cm/qv/iar/qv_port.c
40058ac0609321670e6e7816670e97af *ports/arm-cm/qxk/armclang/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qxk/armclang/qs_port.h
bb7067859e7fec9e77684879a1cfae34 *ports/arm-cm/qxk/armclang/qxk_port.c
16ef2e0af8dd350486f709b548d87c75 *ports/arm-cm/qxk/config/qp_config.h
35ec850c15f42e2eab924d06bf2d4165 *ports/arm-cm/qxk/gnu/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qxk/gnu/qs_port.h
068945110c5583a8b149930d9a446cc3 *ports/arm-cm/qxk/gnu/qxk_port.c
9145c3ae665b20e224bd91406668754c *ports/arm-cm/qxk/iar/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qxk/iar/qs_port.h
7745f5f6adfdd3813bc3d6a24e87aada *ports/arm-cm/qxk/iar/qxk_port.c
b08b183d0275dbf6b55c46b94523a1a2 *ports/arm-cm/qutest/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cm/qutest/qs_port.h
1cc03f9c79b011da50d753018054dac1 *ports/arm-cr/qk/config/qp_config.h
957f53c5d716ee9f88d4d8b7418f8757 *ports/arm-cr/qk/gnu/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qk/gnu/qs_port.h
6a6a54ca44b045c2977cfaf621d32836 *ports/arm-cr/qk/iar/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qk/iar/qs_port.h
7aab625aad16d5b55ab530a7f468e70b *ports/arm-cr/qk/ti/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qk/ti/qs_port.h
b91fd7d938880060e3914db32a1a7885 *ports/arm-cr/qv/gnu/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qv/gnu/qs_port.h
e7b34d68bbf61b9e5c1706c8c2e2b4d3 *ports/arm-cr/qv/iar/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qv/iar/qs_port.h
734d65377844b288a3e5dcc5200302b6 *ports/arm-cr/qv/ti/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/arm-cr/qv/ti/qs_port.h
975c3375c8ca11093bc92dbfb7000eaa *ports/msp430/qk/qp_port.h
abcdbdcac677ff605ee003ef1e08fb80 *ports/msp430/qk/qs_port.h
3c7664e8ee8739bdd42bda3020ce5364 *ports/msp430/qv/qp_port.h
abcdbdcac677ff605ee003ef1e08fb80 *ports/msp430/qv/qs_port.h
07306e4b15b72b175365e26568ea6e3d *ports/msp430/qutest/qp_port.h
abcdbdcac677ff605ee003ef1e08fb80 *ports/msp430/qutest/qs_port.h
c2ed34e686a5ac9afe06026731247bf4 *ports/pic32/qk/xc32/qk_port.c
e9dbc68a7233a4303a068b562be12049 *ports/pic32/qk/xc32/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/pic32/qk/xc32/qs_port.h
ab9eacbab706ff105144eddecde681e0 *ports/pic32/qv/xc32/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/pic32/qv/xc32/qs_port.h
33c16b6ecad7187219fc6195fbd566da *ports/pic32/qutest/xc32/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/pic32/qutest/xc32/qs_port.h
7bd98101a1922e7dcf39107f2c07a7a4 *ports/config/qp_config.h
d9a8f8c2b8ebdae309622841af4f80e7 *ports/embos/CMakeLists.txt
287838f1571386f28c96de9f1bfd6cad *ports/embos/qf_port.c
d5f7e75934bd283d4fa239afee096e78 *ports/embos/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/embos/qs_port.h
9d19cdfdd9eb682d6de7847bd0900f5a *ports/freertos/CMakeLists.txt
fe78898e3dbd64b18339adfc56c92826 *ports/freertos/qf_port.c
672615c0e1e9daab9aec12c300682f58 *ports/freertos/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/freertos/qs_port.h
04694f7224092a477cd4580aee7022fd *ports/threadx/CMakeLists.txt
b3d52f613f1c1da008ae5412029af0da *ports/threadx/qf_port.c
74570b4afbf0281af9638778781bda0b *ports/threadx/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/threadx/qs_port.h
97dbc9c6b8b0c2b46499b9070688dd3c *ports/threadx/README.md
eec27f333c2787b6f3fdca5dbdd573b2 *ports/uc-os2/CMakeLists.txt
efff763f2b3a151b97cf6685599b0902 *ports/uc-os2/qf_port.c
b9be2bca2c48d39a43e4b3d059376b6a *ports/uc-os2/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *ports/uc-os2/qs_port.h
281f9d70e7fb90b4457bee33b544c460 *ports/qep-only/CMakeLists.txt
6ce09e456ded120d13d73a92e022fa3d *ports/qep-only/qp_port.h
f26311a1912e214477781255c7c71834 *ports/qep-only/safe_std.h
4577c2c64f7dbb0c81d1e99f20984888 *ports/posix/CMakeLists.txt
ca2e05b42962f7f6e052ffd8775871e3 *ports/posix/qf_port.c
c1764d38614122b0a02a0172a21906d9 *ports/posix/qp_port.h
ec516e1c355eb1812937f5efafa6d7bc *ports/posix/qs_port.c
a6c1ccba363f62079a579cd71ceccfe8 *ports/posix/qs_port.h
6690cf3899e6461ed7604dba13cf7520 *ports/posix/README.md
f26311a1912e214477781255c7c71834 *ports/posix/safe_std.h
c36532b0e4b1956d9113f6ced25fb47b *ports/posix-qv/CMakeLists.txt
a846079b4b1c41d37399cbd1e2f55b5b *ports/posix-qv/qf_port.c
46cd7f9bce31d6d519886f31f824fae0 *ports/posix-qv/qp_port.h
3f783ea4de87adaa1e051c7b7bb0a091 *ports/posix-qv/qs_port.c
a6c1ccba363f62079a579cd71ceccfe8 *ports/posix-qv/qs_port.h
a39965a1d1c41b224c8f328c9e28999b *ports/posix-qv/README.md
f26311a1912e214477781255c7c71834 *ports/posix-qv/safe_std.h
51ca57651ed492278fd728d3b94aba4d *ports/posix-qutest/CMakeLists.txt
b5e1013ec0e5220b4162387de10c9195 *ports/posix-qutest/qp_port.h
a6c1ccba363f62079a579cd71ceccfe8 *ports/posix-qutest/qs_port.h
209bf23f8e9b4f5e213f947e8379b476 *ports/posix-qutest/qutest_port.c
f26311a1912e214477781255c7c71834 *ports/posix-qutest/safe_std.h
5fa44dffb653cecb1d9ea41d154ce852 *ports/win32/CMakeLists.txt
e1be9341bd19c34eb9be9df56a2491cc *ports/win32/qf_port.c
dddd41fe592d8832b95179820de552d2 *ports/win32/qp_port.h
f1eb6964f5ea37db0fa4ba6ca0ff3f02 *ports/win32/qs_port.c
68809b0a38489524f2ed461e970a136c *ports/win32/qs_port.h
635a4a93c62e4b3501c5e3371a08cd65 *ports/win32/qwin_gui.c
a8f227294c6673a22b050e1165a911e3 *ports/win32/qwin_gui.h
9af4450a3685e578e1774e5b707f6692 *ports/win32/README.md
f26311a1912e214477781255c7c71834 *ports/win32/safe_std.h
c28c6dd7ad5899389e556c8cc61692ce *ports/win32-qv/CMakeLists.txt
58b63f82b35e14ff2ff1c2e913e743ea *ports/win32-qv/qf_port.c
6e8a4ca279ced37f24ac45e4ff6d4157 *ports/win32-qv/qp_port.h
f1eb6964f5ea37db0fa4ba6ca0ff3f02 *ports/win32-qv/qs_port.c
68809b0a38489524f2ed461e970a136c *ports/win32-qv/qs_port.h
c935dbe9f32dd4d0584d4b47bc734d19 *ports/win32-qv/qwin_gui.c
37499e3a99c8c38d52d9b61be19319b7 *ports/win32-qv/qwin_gui.h
4cb22092a4b28d1c1b2efc1e58900b99 *ports/win32-qv/README.md
f26311a1912e214477781255c7c71834 *ports/win32-qv/safe_std.h
f62276b6a322c8fffce657cdb4998ed7 *ports/win32-qutest/CMakeLists.txt
7b72d04255c0da489b834dbf4bfaa599 *ports/win32-qutest/qp_port.h
68809b0a38489524f2ed461e970a136c *ports/win32-qutest/qs_port.h
d0dc53c6e37871ccfc69fe32467c97a7 *ports/win32-qutest/qutest_port.c
faed3388f63c9ec3dca2a5c6cf808a95 *ports/win32-qutest/README.md
f26311a1912e214477781255c7c71834 *ports/win32-qutest/safe_std.h
2d72fa12f8a0c05bd23c0fc4fa41838c *zephyr/CMakeLists.txt
1c41081d80b88d187161f56605d1ea64 *zephyr/Kconfig
2140500a5b230057a2a6ed4b613f6353 *zephyr/module.yml
ae448b93666db2dc14bb169a7d47b321 *zephyr/qf_port.c
0076e0da63938ff838dd5736b6a309da *zephyr/qp-zephyr.jpg
4332e3b86722b1ccfed1dd134889fcac *zephyr/qp_port.h
d69a97a65c94b684ef56cef35faf73f0 *zephyr/qs_port.h
ba08c605b0c369326884f9006464666f *zephyr/README.md

108
qpc.qm
View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<model version="6.1.1" links="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.state-machine.com/qm/qm.xsd">
<model version="6.2.0" links="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.state-machine.com/qm/qm.xsd">
<documentation>QP/C Real-Time Embedded Framework (RTEF)
This model is used to generate the whole QP/C source code.
@ -25,7 +25,38 @@ Contact information:
&lt;www.state-machine.com/licensing&gt;
&lt;info@state-machine.com&gt;</documentation>
<!--${qpc}-->
<framework name="qpc" license="LICENSES/LicenseRef-QL-dual.qlc"/>
<framework name="qpc">
<license name="LicenseRef-QL-dual">Any user of the QP/C real-time embedded framework
qpc
2025-12-31
Copyright (C) 2005 Quantum Leaps, LLC &lt;state-machine.com&gt;.
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: &lt;www.gnu.org/licenses/gpl-3.0&gt;
The terms of the closed source Quantum Leaps commercial licenses
can be found at: &lt;www.state-machine.com/licensing&gt;
Redistributions in source code must retain this top-level comment block.
Plagiarizing this software to sidestep the license obligations is illegal.
Contact information:
&lt;www.state-machine.com/licensing&gt;
&lt;info@state-machine.com&gt;
#BC89496843DE5343CECA990E1370BDD6F9ACDC56</license>
</framework>
<!--${QP-FuSa}-->
<package name="QP-FuSa" stereotype="0x05">
<!--${QP-FuSa::enabled}-->
@ -529,8 +560,8 @@ QF_CRIT_EXIT();
// drill down into the state hierarchy with initial transitions...
do {
QStateHandler path[QHSM_MAX_NEST_DEPTH_]; // tran entry path array
int_fast8_t ip = 0; // tran entry path index
QStateHandler path[QHSM_MAX_NEST_DEPTH_]; // tran. entry path array
int_fast8_t ip = 0; // tran. entry path index
path[0] = me-&gt;temp.fun;
(void)QHSM_RESERVED_EVT_(me-&gt;temp.fun, Q_EMPTY_SIG);
@ -1225,7 +1256,7 @@ do {
}
// event unhandled and passed to a submachine superstate?
else if (r == Q_RET_SUPER_SUB) {
t = me-&gt;temp.obj; // current host state of the submachie
t = me-&gt;temp.obj; // current host state of the submachine
}
else { // event unhandled due to a guard?
QF_CRIT_ENTRY();
@ -1247,7 +1278,7 @@ do {
--lbound;
} while ((t != (QMState *)0) &amp;&amp; (lbound &gt; 0));
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(310, lbound &gt; 0);
Q_ENSURE_INCRIT(320, lbound &gt; 0);
QF_CRIT_EXIT();
if (r &gt;= Q_RET_TRAN) { // any kind of tran. taken?
@ -1256,7 +1287,7 @@ if (r &gt;= Q_RET_TRAN) { // any kind of tran. taken?
QF_CRIT_ENTRY();
// the tran. source state must not be NULL
Q_ASSERT_INCRIT(320, ts != (QMState *)0);
Q_ASSERT_INCRIT(330, ts != (QMState *)0);
QF_CRIT_EXIT();
#endif // Q_SPY
@ -1318,8 +1349,8 @@ if (r &gt;= Q_RET_TRAN) { // any kind of tran. taken?
}
else {
QF_CRIT_ENTRY();
// TRAN_XP must NOT be followed by any other tran type
Q_ASSERT_INCRIT(330, r &lt; Q_RET_TRAN);
// TRAN_XP must NOT be followed by any other tran. type
Q_ASSERT_INCRIT(350, r &lt; Q_RET_TRAN);
QF_CRIT_EXIT();
}
}
@ -1329,7 +1360,7 @@ if (r &gt;= Q_RET_TRAN) { // any kind of tran. taken?
} while ((r &gt;= Q_RET_TRAN) &amp;&amp; (lbound &gt; 0));
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(320, lbound &gt; 0);
Q_ENSURE_INCRIT(360, lbound &gt; 0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_TRAN, qsId)
@ -1349,7 +1380,7 @@ if (r &gt;= Q_RET_TRAN) { // any kind of tran. taken?
else if (r == Q_RET_HANDLED) {
QF_CRIT_ENTRY();
// internal tran. source can't be NULL
Q_ASSERT_INCRIT(340, t != (QMState *)0);
Q_ASSERT_INCRIT(380, t != (QMState *)0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_INTERN_TRAN, qsId)
@ -1365,6 +1396,9 @@ else if (r == Q_RET_HANDLED) {
// event bubbled to the 'top' state?
else if (t == (QMState *)0) {
QS_CRIT_ENTRY();
// current state can't be NULL
Q_ASSERT_INCRIT(390, s != (QMState *)0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_IGNORED, qsId)
QS_TIME_PRE_(); // time stamp
@ -1488,7 +1522,7 @@ for (s = me-&gt;super.state.obj;
}
QF_CRIT_STAT
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(610, lbound &gt; 0);
Q_ENSURE_INCRIT(680, lbound &gt; 0);
QF_CRIT_EXIT();
if (!isFound) { // still not found?
@ -1641,7 +1675,7 @@ for (; (s != ts) &amp;&amp; (lbound &gt; 0); --lbound) {
if (s == (QMState *)0) { // reached the top of a submachine?
s = me-&gt;temp.obj; // the superstate from QM_SM_EXIT()
QF_CRIT_ENTRY();
Q_ASSERT_INCRIT(810, s != (QMState *)0); // must be valid
Q_ASSERT_INCRIT(880, s != (QMState *)0); // must be valid
QF_CRIT_EXIT();
}
}
@ -2432,7 +2466,7 @@ if (margin == QF_NO_MARGIN) {
}
else {
status = false; // cannot post
Q_ERROR_INCRIT(190); // must be able to post the event
Q_ERROR_INCRIT(110); // must be able to post the event
}
}
else if (nFree &gt; (QEQueueCtr)margin) {
@ -7570,9 +7604,9 @@ QF_CRIT_EXIT();</code>
QS_ENUM_DICT, //!&lt; enumeration dictionary entry
// [55] Additional QEP records
QS_QEP_TRAN_HIST, //!&lt; a tran to history was taken
QS_QEP_TRAN_EP, //!&lt; a tran to entry point into a submachine
QS_QEP_TRAN_XP, //!&lt; a tran to exit point out of a submachine
QS_QEP_TRAN_HIST, //!&lt; a tran. to history was taken
QS_QEP_TRAN_EP, //!&lt; a tran. to entry point into a submachine
QS_QEP_TRAN_XP, //!&lt; a tran. to exit point out of a submachine
// [58] Miscellaneous QS records (not maskable)
QS_TEST_PAUSED, //!&lt; test has been paused
@ -8314,7 +8348,7 @@ QS_CRIT_EXIT();</code>
<!--${QS::QUTest-stub::QHsmDummy}-->
<class name="QHsmDummy" superclass="QEP::QAsm">
<documentation>//! @class QHsmDummy
//! @extends QHsm</documentation>
//! @extends QAsm</documentation>
<!--${QS::QUTest-stub::QHsmDummy::ctor}-->
<operation name="ctor" type="void" visibility="0x00" properties="0x00">
<documentation>//! @public @memberof QHsmDummy
@ -9018,7 +9052,7 @@ $declare1 ${QP-FuSa}
#define QP_H_
//============================================================================
#define QP_VERSION_STR &quot;7.4.0-rc.1&quot;
#define QP_VERSION_STR &quot;7.4.0-rc.3&quot;
#define QP_VERSION 740U
#define QP_RELEASE 0x7092C3BBU
@ -9951,12 +9985,6 @@ $define ${QEP::QP_versionStr[16]}
$define ${QEP::QEvt::reserved_[4]}
enum {
// maximum depth of state nesting in a QHsm (including the top level),
// must be &gt;= 3
QHSM_MAX_NEST_DEPTH_ = 6
};
// helper macro to handle reserved event in an QHsm
#define QHSM_RESERVED_EVT_(state_, sig_) \
((*(state_))(me, &amp;QEvt_reserved_[(sig_)]))
@ -9985,6 +10013,12 @@ enum {
//! @endcond
enum {
// maximum depth of state nesting in a QHsm (including the top level),
// must be &gt;= 3
QHSM_MAX_NEST_DEPTH_ = 6
};
$define ${QEP::QHsm}</text>
</file>
<!--${src::qf::qep_msm.c}-->
@ -10005,17 +10039,6 @@ $define ${QEP::QHsm}</text>
Q_DEFINE_THIS_MODULE(&quot;qep_msm&quot;)
enum {
// maximum depth of state nesting in a QMsm (including the top level)
QMSM_MAX_NEST_DEPTH_ = 6,
// maximum length of transition-action array
QMSM_MAX_TRAN_LENGTH_ = 3*QMSM_MAX_NEST_DEPTH_,
// maximum depth of entry levels in a MSM for tran. to history.
QMSM_MAX_ENTRY_DEPTH_ = 4
};
// top-state object for QMsm-style state machines
static struct QMState const l_msm_top_s = {
(struct QMState *)0,
@ -10024,8 +10047,19 @@ static struct QMState const l_msm_top_s = {
Q_ACTION_CAST(0),
Q_ACTION_CAST(0)
};
//! @endcond
enum {
// maximum depth of state nesting in a QMsm (including the top level)
QMSM_MAX_NEST_DEPTH_ = 8,
// maximum length of transition-action array
QMSM_MAX_TRAN_LENGTH_ = 2*QMSM_MAX_NEST_DEPTH_,
// maximum depth of entry levels in a MSM for tran. to history
QMSM_MAX_ENTRY_DEPTH_ = 4
};
//============================================================================
$define ${QEP::QMsm}</text>

174
qpc.sha1 Normal file
View File

@ -0,0 +1,174 @@
bdb9fd45fa87fbd718a23f61188801136f8cfc38 *qpc.qm
4905c5e1a7afeafb9b644ca8ff0c7bd8b6d956ec *include/qequeue.h
80349c00631173d87bf4b98fddc7ccc417561d10 *include/qk.h
f131ada80744965bc27f5d31c43ee8a5edac63fd *include/qmpool.h
11476265c9b27c47b762163715d76cd481540de7 *include/qp.h
a9e58ddcc2185a56d79cad7dc5f31f7e5f5c89a3 *include/qp_pkg.h
cf4fef7f60ee125ac654ee64816a59caec8ffad1 *include/qpc.h
d72b80d37040e1c428e38fba5a6880f76962a4f3 *include/qs.h
815d4314cf8ff757d2dfe160b5f4689ee22729a3 *include/qs_dummy.h
abb43eb6d5ae56106b137a284f024bc5a03b20e0 *include/qs_pkg.h
68f55b6ffb4192d3a37508ddef694bef7e8adb2d *include/qsafe.h
c7e98c8ea5989ddb53af1ed87283ebed2bf50c6d *include/qstamp.h
4c6a9b6c757448bc3d838f1c293d07bbb76617d6 *include/qv.h
0e9cdd8d3d572d176d3e0b16e26f7a569630a999 *include/qxk.h
7f54a0933a9dc2fcaca475919fa0067667ed99ed *src/qf/CMakeLists.txt
125ad159841f3290be4c1a1708641099101afc46 *src/qf/qep_hsm.c
661562d0d073d0993bdb83c1e40b005386bcca2d *src/qf/qep_msm.c
8e366a46d0e9fd5580ec1a052b9bf54d322409fb *src/qf/qf_act.c
b2ef0d4ea8d62bab84ff674c9037db35609c35fd *src/qf/qf_actq.c
8f1af64278e070f94a791bee8747eb2c8f8eaf42 *src/qf/qf_defer.c
e8c4578918a78aa80639dc74e474ebf88983497b *src/qf/qf_dyn.c
7bfaf319d2d84144c69942da765f728f47241597 *src/qf/qf_mem.c
eab3084e49a9ac674f898a038c1c61e17b86db34 *src/qf/qf_ps.c
5e2687fbbc2e5a4d9ea1c15eb146aa78144042b0 *src/qf/qf_qact.c
5abf85ddb3b120fd148bdfbd662aa3578c01f993 *src/qf/qf_qeq.c
c0265928351e6d891277d05aab1aeac20534c5a8 *src/qf/qf_qmact.c
390f03c5899d3657066bb7335905f9e44793236d *src/qf/qf_time.c
878a737efe234f40dc8c9374acc351e510b4da1e *src/qk/CMakeLists.txt
cfb544f3cd73a76ef3656641b9a825f5b6957d39 *src/qk/qk.c
4e7914a38bc70dc9032ed7e74e3b49b13a80112c *src/qs/CMakeLists.txt
fd621e42816352285008e72ca0b714e8d3bb5bd3 *src/qs/qs.c
96f2c2dee49009beeea2149c1ed71c8c53b6df01 *src/qs/qs_64bit.c
9f4e31b2ab70d6003737832bdaecedfab10ba04b *src/qs/qs_fp.c
fd1c77d97cfd166a377139553a85b635135ad566 *src/qs/qs_rx.c
aed0252b6ee3637bdfef31767a85e626a72a8226 *src/qs/qstamp.c
56769d24333885de20f31ea949add6370f8165fe *src/qs/qutest.c
b1d2def9b8f6cde464170af7682ab0f01f4f40f6 *src/qv/CMakeLists.txt
871301303bb8027f950800f9ed6d00544f3b98df *src/qv/qv.c
4cb0461eeec92f5a2e0c5b8ec41da409c5958193 *src/qxk/CMakeLists.txt
b1dd543516393d3c4cc3bb89446c56b7d5c331da *src/qxk/qxk.c
a67a1aec687cb3f692dc5d49bec6e7460a38bbd0 *src/qxk/qxk_mutex.c
81b8a5c73f7c918fecd6e67969c9f625d9db408f *src/qxk/qxk_sema.c
abd65424ec87f9ad930f141bffd83d6ddeb619e5 *src/qxk/qxk_xthr.c
96494a3063233afd366fa3b0662e5206e3fe1b03 *ports/lint-plus/au-barr.lnt
4558a0e1e95b69c7de9820bca7df5344fde67008 *ports/lint-plus/au-ds.lnt
b2a4134f9a46ba33adea43faafa0ea0d6c2dac22 *ports/lint-plus/au-misra4.lnt
0e2fbbc6a6a53414919daf0ec89c2812e151165f *ports/lint-plus/au-ql-c99.lnt
e09e52aca80043e1a3365756c8ccccf708289bde *ports/lint-plus/options.lnt
9929081c14ef7784fed31a61d2d5676f6ba46cef *ports/lint-plus/ql-style.lnt
697518fede974485d34ddcdc1819be1304a5ce0a *ports/lint-plus/qpc.lnt
742acb5e8187254dc321b7c1a4b973d4af34775f *ports/lint-plus/std.lnt
ed03ed27328a0a87a9f490dea797dfd9d8c00097 *ports/arm-cm/qk/armclang/qk_port.c
466037f0da0fdd5124bd45bc4bb7dd0cee73a8f3 *ports/arm-cm/qk/armclang/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qk/armclang/qs_port.h
6efc7ba56de01629de2a7c64e04aa7fb18680eb1 *ports/arm-cm/qk/config/qp_config.h
11168cb0b412aeed04a1b02f2cab8cd86184df6d *ports/arm-cm/qk/gnu/qk_port.c
01992d44f4e14a593979f13db974f42edc84287d *ports/arm-cm/qk/gnu/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qk/gnu/qs_port.h
9d0345156894db34f0dca00bbe730bad30699d89 *ports/arm-cm/qk/iar/qk_port.c
d54bbf1d649139c4096d93e32849fecd1a29ee04 *ports/arm-cm/qk/iar/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qk/iar/qs_port.h
da4b65d3ee3b1d02b7bdf5125492d93ec2f3546c *ports/arm-cm/qv/armclang/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qv/armclang/qs_port.h
95f317c5328aafb1396740a83514ed965c0d13c4 *ports/arm-cm/qv/armclang/qv_port.c
80d697feff43f8bebaa1143e2ea316d4d064b802 *ports/arm-cm/qv/config/qp_config.h
215d226380da844642f5e96ed0ebc6b9f6fd2bfc *ports/arm-cm/qv/gnu/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qv/gnu/qs_port.h
10084951ab49c6a632641b82d102dc0df44c9edd *ports/arm-cm/qv/gnu/qv_port.c
08bb668de09851a81ad6b8d101e8116be638c638 *ports/arm-cm/qv/iar/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qv/iar/qs_port.h
d2d6726cfc560f9ed301bbb6b214991997daa107 *ports/arm-cm/qv/iar/qv_port.c
6f54f449bad8f3263a25d2885ae2310c48eaf085 *ports/arm-cm/qxk/armclang/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qxk/armclang/qs_port.h
4aee8cf7691c7e628e67f0208d33c5b9e6bebf25 *ports/arm-cm/qxk/armclang/qxk_port.c
0ac4f86f279638431bb7a12d8b3e8fb5bfd9ad33 *ports/arm-cm/qxk/config/qp_config.h
36bb14cd9579ee7c4b074cdd921ec99cf408ea0c *ports/arm-cm/qxk/gnu/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qxk/gnu/qs_port.h
335abfde3ed62a37e67e30d2cbe1bce29f83b88e *ports/arm-cm/qxk/gnu/qxk_port.c
02505aae407cdbdeb079eebfb5f73b96d2f492a2 *ports/arm-cm/qxk/iar/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qxk/iar/qs_port.h
3d83983a358cf7cb813490c556fec3c63ba8e1d9 *ports/arm-cm/qxk/iar/qxk_port.c
f9da74ed234d38423c412dd831b4dcbd9a10c978 *ports/arm-cm/qutest/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cm/qutest/qs_port.h
791a13c3bdf0646860b2e366acace9413f29a341 *ports/arm-cr/qk/config/qp_config.h
4d79ce35280c25da8f61c90a371b24c9770c1e39 *ports/arm-cr/qk/gnu/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qk/gnu/qs_port.h
3fe18d672bb906d5be90efe6886a6d2de5f1ebcb *ports/arm-cr/qk/iar/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qk/iar/qs_port.h
45f2b8f6565d0d98a97058489cda04e16fce3102 *ports/arm-cr/qk/ti/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qk/ti/qs_port.h
9b9723802d3d2229af7cf810d2d94145679b2428 *ports/arm-cr/qv/gnu/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qv/gnu/qs_port.h
a1b7f30c8c2fa66951e8f5518a8c4c930466db49 *ports/arm-cr/qv/iar/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qv/iar/qs_port.h
d6389431a053fd6fc8f83b1585ecd628618eb5e6 *ports/arm-cr/qv/ti/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qv/ti/qs_port.h
0a37d137f3fea038fedd602b2ea1870114295a9b *ports/msp430/qk/qp_port.h
7c5e810cf497ef306c2160a21e12bcd2fcd26583 *ports/msp430/qk/qs_port.h
97b7170961a9ec6bef2eff12fb3c640d392bf22c *ports/msp430/qv/qp_port.h
7c5e810cf497ef306c2160a21e12bcd2fcd26583 *ports/msp430/qv/qs_port.h
4af1c8f956dda650dc16ea9041c834fa72b9d42d *ports/msp430/qutest/qp_port.h
7c5e810cf497ef306c2160a21e12bcd2fcd26583 *ports/msp430/qutest/qs_port.h
9d2c612b3954999eda20d12e13657e9205b8c972 *ports/config/qp_config.h
2ee7f5594f6121705bbc57145175b5c5867e0070 *ports/embos/CMakeLists.txt
9b20ade83535acbf74a35108c8cf2df77d096d58 *ports/embos/qf_port.c
301919d0bdfe1b9bc12639f3394f59c4e43d0b66 *ports/embos/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/embos/qs_port.h
e65838e1764bd6b4eb73025be1e8116ac28247b2 *ports/freertos/CMakeLists.txt
0e08ab7821106a0071f961ff7f8e7ccc37b3120f *ports/freertos/qf_port.c
c4cdfad6a99e8c121b034f74d4d23f2d2a333331 *ports/freertos/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/freertos/qs_port.h
a01e1f6d49ce056ac4e130d54ae4724fda2ebf32 *ports/threadx/CMakeLists.txt
6bef3e567eed70d429faacfa606f0c3be5e83cff *ports/threadx/qf_port.c
6792ed70d78732ad942fb99cb55194eacb23df37 *ports/threadx/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/threadx/qs_port.h
847cd324346d1d6c9c81422e99045442edcc7f64 *ports/threadx/README.md
d9b6e1ca7a0215a3e141ae43970781d0f4d0d08f *ports/uc-os2/CMakeLists.txt
237186c610bd911d960c5191efbfa84c33c0bbb1 *ports/uc-os2/qf_port.c
284ad7ebeb68aedf94e2fabba81b3787e9978ad9 *ports/uc-os2/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/uc-os2/qs_port.h
4a5da9508e2012b2ca3943b87134163e558964cc *ports/qep-only/CMakeLists.txt
1199ebd523ea4f24e1f7c43238018f64b923ff1d *ports/qep-only/qp_port.h
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/qep-only/safe_std.h
5d7914dfaf44a9c2552afdd5d8de4cfc3ebbc22a *ports/posix/CMakeLists.txt
5cb05d8b04f897257261beb6ef9dffefd096556b *ports/posix/qf_port.c
9e6f98ae930242a4889e1a257c5c20bdbf2e6aab *ports/posix/qp_port.h
243f5fdf73141276dc8b90ec55c09e672d54c540 *ports/posix/qs_port.c
a06f0f49fb35c21bb2c7df9b0cb66f7cff16c530 *ports/posix/qs_port.h
6e33b2e5092d117f58c47b632c59420f382ac39f *ports/posix/README.md
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/posix/safe_std.h
039b1e4066eb7eeac3233070ad6aa2cd9f6d1c69 *ports/posix-qv/CMakeLists.txt
e927b146bc21461c96a7db4e43e063f13730713c *ports/posix-qv/qf_port.c
dbce975f56b71518ca29f8694a3f67f146f0762c *ports/posix-qv/qp_port.h
243f5fdf73141276dc8b90ec55c09e672d54c540 *ports/posix-qv/qs_port.c
a06f0f49fb35c21bb2c7df9b0cb66f7cff16c530 *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
5b6b5b3f6ee635c49920b177fd3ee66813d6ba35 *ports/posix-qutest/qp_port.h
a06f0f49fb35c21bb2c7df9b0cb66f7cff16c530 *ports/posix-qutest/qs_port.h
5fc17dbde9691cbebd18c04a6a4cde4789ad1d71 *ports/posix-qutest/qutest_port.c
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/posix-qutest/safe_std.h
cfea17ea9ab718e9e4f506e90c4b2fc8c1fea858 *ports/win32/CMakeLists.txt
85106972ea7ee49588057f661fb5c8105d20edb5 *ports/win32/qf_port.c
92e081241e4ce102193246ebe8f95879bd853c09 *ports/win32/qp_port.h
eea30365b6b95a429cb1f1f17136df44d32e62ba *ports/win32/qs_port.c
ff6375dabf341a7869781f82fd7eda32497c4069 *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
5c7448e33f794ecd8459b30b96d53ee4cd51520c *ports/win32-qv/qf_port.c
e58272e88511fb06aa77589dd9e39c04e5f3180f *ports/win32-qv/qp_port.h
eea30365b6b95a429cb1f1f17136df44d32e62ba *ports/win32-qv/qs_port.c
ff6375dabf341a7869781f82fd7eda32497c4069 *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
eefe47fcb37f794b8d0c68fc6b3331ff78f20a33 *ports/win32-qutest/qp_port.h
ff6375dabf341a7869781f82fd7eda32497c4069 *ports/win32-qutest/qs_port.h
9b9499b5fc28a4e418f048867af33367b9b6f2e0 *ports/win32-qutest/qutest_port.c
7319222937ebd55cb32e1e30abcbc38547419a5c *ports/win32-qutest/README.md
5189dfad3fea0ccb2218958dd3657f4403674b5e *ports/win32-qutest/safe_std.h
848a30efa3274ff30fb72059f926fe7963ab2321 *zephyr/CMakeLists.txt
10764710e545dd4d2ce0ddf032711df7f9191937 *zephyr/Kconfig
2eb2a922e18b4760a68151ebee1b6282d20b4692 *zephyr/module.yml
0644ecb3cfe1d05837b375c5e236a36d294459d9 *zephyr/qf_port.c
109c291df50110f185adc17bcdf8becc0a79346c *zephyr/qp-zephyr.jpg
ee0f1921d5994717b112b2c933f3c2cc3d690d74 *zephyr/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *zephyr/qs_port.h
ab487299b61fea18e2926913048a4498b3bfa4b4 *zephyr/README.md

View File

@ -1,16 +1,19 @@
@setlocal
:: usage
@echo Usage: qpc_md5 [gen]
@echo Usage: qpc_sha1 [gen]
@echo examples:
@echo qpc_md5 : check the md5 sums in the file qpcp.md5
@echo qpc_md5 gen : generate the md5 file qpcp.md5
@echo qpc_sha1 : check the sha1 sums in the file qpcp.sha1
@echo qpc_sha1 gen : generate the sha1 file qpcp.sha1
@echo.
@if NOT "%1"=="gen" goto check
@if NOT "%1"=="gen" (
sha1sum --check --warn qpc.sha1
goto end
)
@echo generating qpcp.md5...
@md5sum qpc.qm ^
@echo generating qpc.sha1...
@sha1sum qpc.qm ^
include/* ^
src/qf/* src/qk/* src/qs/* src/qv/* src/qxk/* ^
ports/lint-plus/*.lnt ^
@ -22,22 +25,17 @@
ports/arm-cr/qk/gnu/* ports/arm-cr/qk/iar/* ports/arm-cr/qk/ti/* ^
ports/arm-cr/qv/gnu/* ports/arm-cr/qv/iar/* ports/arm-cr/qv/ti/* ^
ports/msp430/qk/* ports/msp430/qv/* ports/msp430/qutest/* ^
ports/pic32/qk/xc32/* ports/pic32/qv/xc32/* ports/pic32/qutest/xc32/* ^
ports/config/* ^
ports/embos/* ^
ports/freertos/* ^
ports/threadx/* ^
ports/uc-os2/* ^
ports/qep-only/* ^
ports/posix/* ports/posix-qv/* ports/posix-qutest/* ^
ports/win32/* ports/win32-qv/* ports/win32-qutest/* ^
ports/qep-only/* ^
ports/posix/* ports/posix-qv/* ports/posix-qutest/* ^
ports/win32/* ports/win32-qv/* ports/win32-qutest/* ^
zephyr/* ^
> qpc.md5
> qpc.sha1
@echo done
@goto end
:check
md5sum --check --warn qpc.md5
:end
@endlocal

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qep_hsm.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qep_hsm")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QEP::QP_versionStr[16]} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QEP::QP_versionStr[16]} ..................................................
@ -79,12 +78,6 @@ QEvt const QEvt_reserved_[4] = {
//$enddef${QEP::QEvt::reserved_[4]} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
enum {
// maximum depth of state nesting in a QHsm (including the top level),
// must be >= 3
QHSM_MAX_NEST_DEPTH_ = 6
};
// helper macro to handle reserved event in an QHsm
#define QHSM_RESERVED_EVT_(state_, sig_) \
((*(state_))(me, &QEvt_reserved_[(sig_)]))
@ -113,6 +106,12 @@ enum {
//! @endcond
enum {
// maximum depth of state nesting in a QHsm (including the top level),
// must be >= 3
QHSM_MAX_NEST_DEPTH_ = 6
};
//$define${QEP::QHsm} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QEP::QHsm} ...............................................................
@ -189,8 +188,8 @@ void QHsm_init_(
// drill down into the state hierarchy with initial transitions...
do {
QStateHandler path[QHSM_MAX_NEST_DEPTH_]; // tran entry path array
int_fast8_t ip = 0; // tran entry path index
QStateHandler path[QHSM_MAX_NEST_DEPTH_]; // tran. entry path array
int_fast8_t ip = 0; // tran. entry path index
path[0] = me->temp.fun;
(void)QHSM_RESERVED_EVT_(me->temp.fun, Q_EMPTY_SIG);

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qep_msm.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -56,17 +56,6 @@
Q_DEFINE_THIS_MODULE("qep_msm")
enum {
// maximum depth of state nesting in a QMsm (including the top level)
QMSM_MAX_NEST_DEPTH_ = 6,
// maximum length of transition-action array
QMSM_MAX_TRAN_LENGTH_ = 3*QMSM_MAX_NEST_DEPTH_,
// maximum depth of entry levels in a MSM for tran. to history.
QMSM_MAX_ENTRY_DEPTH_ = 4
};
// top-state object for QMsm-style state machines
static struct QMState const l_msm_top_s = {
(struct QMState *)0,
@ -75,17 +64,27 @@ static struct QMState const l_msm_top_s = {
Q_ACTION_CAST(0),
Q_ACTION_CAST(0)
};
//! @endcond
enum {
// maximum depth of state nesting in a QMsm (including the top level)
QMSM_MAX_NEST_DEPTH_ = 8,
// maximum length of transition-action array
QMSM_MAX_TRAN_LENGTH_ = 2*QMSM_MAX_NEST_DEPTH_,
// maximum depth of entry levels in a MSM for tran. to history
QMSM_MAX_ENTRY_DEPTH_ = 4
};
//============================================================================
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QEP::QMsm} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QEP::QMsm} ...............................................................
@ -220,7 +219,7 @@ void QMsm_dispatch_(
}
// event unhandled and passed to a submachine superstate?
else if (r == Q_RET_SUPER_SUB) {
t = me->temp.obj; // current host state of the submachie
t = me->temp.obj; // current host state of the submachine
}
else { // event unhandled due to a guard?
QF_CRIT_ENTRY();
@ -242,7 +241,7 @@ void QMsm_dispatch_(
--lbound;
} while ((t != (QMState *)0) && (lbound > 0));
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(310, lbound > 0);
Q_ENSURE_INCRIT(320, lbound > 0);
QF_CRIT_EXIT();
if (r >= Q_RET_TRAN) { // any kind of tran. taken?
@ -251,7 +250,7 @@ void QMsm_dispatch_(
QF_CRIT_ENTRY();
// the tran. source state must not be NULL
Q_ASSERT_INCRIT(320, ts != (QMState *)0);
Q_ASSERT_INCRIT(330, ts != (QMState *)0);
QF_CRIT_EXIT();
#endif // Q_SPY
@ -313,8 +312,8 @@ void QMsm_dispatch_(
}
else {
QF_CRIT_ENTRY();
// TRAN_XP must NOT be followed by any other tran type
Q_ASSERT_INCRIT(330, r < Q_RET_TRAN);
// TRAN_XP must NOT be followed by any other tran. type
Q_ASSERT_INCRIT(350, r < Q_RET_TRAN);
QF_CRIT_EXIT();
}
}
@ -324,7 +323,7 @@ void QMsm_dispatch_(
} while ((r >= Q_RET_TRAN) && (lbound > 0));
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(320, lbound > 0);
Q_ENSURE_INCRIT(360, lbound > 0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_TRAN, qsId)
@ -344,7 +343,7 @@ void QMsm_dispatch_(
else if (r == Q_RET_HANDLED) {
QF_CRIT_ENTRY();
// internal tran. source can't be NULL
Q_ASSERT_INCRIT(340, t != (QMState *)0);
Q_ASSERT_INCRIT(380, t != (QMState *)0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_INTERN_TRAN, qsId)
@ -360,6 +359,9 @@ void QMsm_dispatch_(
// event bubbled to the 'top' state?
else if (t == (QMState *)0) {
QS_CRIT_ENTRY();
// current state can't be NULL
Q_ASSERT_INCRIT(390, s != (QMState *)0);
QS_MEM_SYS();
QS_BEGIN_PRE_(QS_QEP_IGNORED, qsId)
QS_TIME_PRE_(); // time stamp
@ -460,7 +462,7 @@ QMState const * QMsm_childStateObj(QMsm const * const me,
}
QF_CRIT_STAT
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(610, lbound > 0);
Q_ENSURE_INCRIT(680, lbound > 0);
QF_CRIT_EXIT();
if (!isFound) { // still not found?
@ -606,7 +608,7 @@ void QMsm_exitToTranSource_(
if (s == (QMState *)0) { // reached the top of a submachine?
s = me->temp.obj; // the superstate from QM_SM_EXIT()
QF_CRIT_ENTRY();
Q_ASSERT_INCRIT(810, s != (QMState *)0); // must be valid
Q_ASSERT_INCRIT(880, s != (QMState *)0); // must be valid
QF_CRIT_EXIT();
}
}

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_act.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QActive::registry_[QF_MAX_ACTIVE + 1U]} vvvvvvvvvvvvvvvvvvvvvvv
//! @static @private @memberof QActive
QActive * QActive_registry_[QF_MAX_ACTIVE + 1U];

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_actq.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -56,11 +56,10 @@ Q_DEFINE_THIS_MODULE("qf_actq")
//============================================================================
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QActive::post_} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QActive::post_} ......................................................
@ -108,7 +107,7 @@ bool QActive_post_(QActive * const me,
}
else {
status = false; // cannot post
Q_ERROR_INCRIT(190); // must be able to post the event
Q_ERROR_INCRIT(110); // must be able to post the event
}
}
else if (nFree > (QEQueueCtr)margin) {

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_defer.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_defer")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QActive::defer} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QActive::defer} ......................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_dyn.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -57,11 +57,10 @@ Q_DEFINE_THIS_MODULE("qf_dyn")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QF-dyn::poolInit} ....................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_mem.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_mem")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QMPool} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QMPool} ..............................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_ps.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_ps")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QActive::subscrList_} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
QSubscrList * QActive_subscrList_;
//$enddef${QF::QActive::subscrList_} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_qact.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_qact")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QActive::ctor} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QActive::ctor} .......................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_qeq.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_qeq")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QEQueue} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QEQueue} .............................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_qmact.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QMActive} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QMActive} ............................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qf::qf_time.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -55,11 +55,10 @@ Q_DEFINE_THIS_MODULE("qf_time")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QF::QTimeEvt} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QF::QTimeEvt} ............................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qk::qk.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qk")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QK::QK-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QK::QK-base::priv_} ......................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qs.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -54,11 +54,10 @@ Q_ASSERT_STATIC((enum_t)QS_PRE_MAX <= (enum_t)QS_USER);
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QS::QS-TX} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QS::QS-TX::initBuf} ......................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qs_64bit.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qs_fp.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qs_rx.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -122,11 +122,10 @@ QS_RxAttr QS_rxPriv_;
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QS::QS-RX} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QS::QS-RX::rxInitBuf} ....................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qstamp.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qs::qutest.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -54,11 +54,10 @@
// QUTest unit testing harness
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QS::QUTest} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//$enddef${QS::QUTest} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qv::qv.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qv")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QV::QV-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QV::QV-base::priv_} ......................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qxk::qxk.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qxk")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QXK::QXK-base} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QXK::QXK-base::priv_} ....................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qxk::qxk_mutex.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qxk_mutex")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QXK::QXMutex} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QXK::QXMutex} ............................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qxk::qxk_sema.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qxk_sema")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QXK::QXSemaphore} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QXK::QXSemaphore} ........................................................

View File

@ -3,14 +3,14 @@
// Model: qpc.qm
// File: ${src::qxk::qxk_xthr.c}
//
// This code has been generated by QM 6.1.1 <www.state-machine.com/qm>.
// This code has been generated by QM 6.2.0 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License # : LicenseRef-QL-dual
// Issued to : Any user of the QP/C real-time embedded framework
// Framework(s) : qpc
// Support ends : 2024-12-31
// Support ends : 2025-12-31
// License scope:
//
// Copyright (C) 2005 Quantum Leaps, LLC <state-machine.com>.
@ -60,11 +60,10 @@ Q_DEFINE_THIS_MODULE("qxk_xthr")
//$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// Check for the minimum required QP version
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U)%0x2710U))
#error qpc version 7.3.0 or higher required
#endif
//$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$define${QXK::QXThread} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QXK::QXThread} ...........................................................