7.4.0-rc.3

This commit is contained in:
MMS 2024-08-28 03:03:05 -04:00
parent c284a04584
commit d3f94c7783
23 changed files with 188 additions and 236 deletions

@ -1 +1 @@
Subproject commit c2de401845b27784d4d9f5a9d6185f7b8d99add0
Subproject commit 16ea07cc4dbcbde83431a9962cf4ec157b951dcf

View File

@ -199,7 +199,7 @@ enum QStateRet {
// unhandled and need to "bubble up"
Q_RET_SUPER, //!< event passed to superstate to handle
Q_RET_SUPER_SUB, //!< event passed to submachine superstate
Q_RET_UNHANDLED, //!< event unhandled due to a guard
Q_RET_UNHANDLED, //!< event unhandled due to guard
// handled and do not need to "bubble up"
Q_RET_HANDLED, //!< event handled (internal transition)
@ -417,13 +417,8 @@ bool QMsm_isIn_(
QAsm * const me,
QStateHandler const state);
//! @private @memberof QMsm
//! @deprecated instead use: QASM_IS_IN()
bool QMsm_isInState(QMsm const * const me,
QMState const * const stateObj);
//! @public @memberof QMsm
static inline QMState const * QMsm_stateObj(QMsm * const me) {
static inline QMState const * QMsm_stateObj(QMsm const * const me) {
return me->super.state.obj;
}
@ -861,10 +856,8 @@ void QActive_setAttr(QActive * const me,
uint32_t attr1,
void const * attr2);
// private:
//! @private @memberof QActive
void QActive_start_(QActive * const me,
//! @public @memberof QActive
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,
@ -1197,11 +1190,6 @@ void QF_gcFromISR(QEvt const * const e);
(evtRef_) = (void *)0; \
} while (false)
//${QF-macros::QACTIVE_START} ................................................
#define QACTIVE_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) \
(QActive_start_((QActive *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))
//${QF-macros::QACTIVE_POST} .................................................
#ifdef Q_SPY
#define QACTIVE_POST(me_, e_, sender_) \

View File

@ -72,7 +72,19 @@
//! @deprecated plain 'char' is no longer forbidden in MISRA-C:2023
typedef char char_t;
//! @deprecated assertion failure handler
//! @deprecated Macro for starting an Active Object.
//! Use QActive::QActive_start() instead.
#define QACTIVE_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) \
(QActive_start((QActive *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))
//! @deprecated Macro for starting an eXtended Thread.
//! Use QXThread::QXThread_start() instead.
#define QXTHREAD_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) \
(QXThread_start((QXThread *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))
//! @deprecated Assertion failure handler.
//! Use Q_onError() instead.
#define Q_onAssert(module_, id_) Q_onError(module_, id_)
@ -130,7 +142,7 @@ static inline void QF_psInit(
#define QHSM_DISPATCH(me_, e_, qsId_) QASM_DISPATCH((me_), (e_), (qsId_))
//! @deprecated instead use: QASM_IS_IN()
#define QHsm_isIn(me_, state_) QHsm_isIn_((QAsm *)(me_), (state_))
#define QHsm_isIn(me_, state_) QASM_IS_IN((QAsm *)(me_), (state_))
//============================================================================
#if (QP_API_VERSION < 691)

View File

@ -163,6 +163,18 @@ void QXThread_ctor(QXThread * const me,
QXThreadHandler const handler,
uint_fast8_t const tickRate);
//! @public @memberof QXThread
static inline void QXThread_start(QXThread * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,
void * const stkSto,
uint_fast16_t const stkSize,
void const * const par)
{
QActive_start(&me->super, prioSpec, qSto, qLen, stkSto, stkSize, par);
}
//! @public @memberof QXThread
bool QXThread_delay(QTimeEvtCtr const nTicks);
@ -269,10 +281,6 @@ void QXMutex_unlock(QXMutex * const me);
//$declare${QXK-macros} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//${QXK-macros::QXTHREAD_START} ..............................................
#define QXTHREAD_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) QACTIVE_START((me_), (prioSpec_), (qSto_), (qLen_), \
(stkSto_), (stkSize_), (par_))
//${QXK-macros::QXTHREAD_POST_X} .............................................
#define QXTHREAD_POST_X(me_, e_, margin_, sender_) \
QACTIVE_POST_X(&(me_)->super, (e_), (margin_), (sender_))

View File

@ -101,10 +101,11 @@ void QF_stop(void) {
}
//............................................................................
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,
void const * const par)
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,
void const * const par)
{
// create the embOS message box for the AO
OS_MAILBOX_Create(&me->eQueue,
@ -297,7 +298,7 @@ QEvt const *QActive_get_(QActive * const me) {
// FPU. In this QP-embOS port, an active object task that uses the FPU is
// designated by the QF_TASK_USES_FPU attribute, which can be set with the
// QF_setEmbOsTaskAttr() function. The task attributes must be set *before*
// calling QACTIVE_START(). The task attributes are saved in QActive.osObject
// calling QActive_start(). The task attributes are saved in QActive.osObject
// member.
//
// NOTE3:

View File

@ -122,7 +122,7 @@ static void task_function(void *pvParameters) { // FreeRTOS task signature
}
//............................................................................
void QActive_start_(QActive * const me,
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,
@ -214,7 +214,7 @@ void QActive_stop(QActive * const me) {
void QActive_setAttr(QActive *const me, uint32_t attr1, void const *attr2) {
QF_CRIT_STAT
QF_CRIT_ENTRY();
// this function must be called before QACTIVE_START(),
// this function must be called before QActive_start(),
// which implies that me->thread.pxDummy1 must not be used yet;
Q_REQUIRE_INCRIT(300, me->thread.pxDummy1 == (void *)0);
switch (attr1) {

View File

@ -367,10 +367,11 @@ 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,
void const * const par)
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,
void const * const par)
{
Q_UNUSED_PAR(stkSto);
Q_UNUSED_PAR(stkSize);

View File

@ -311,10 +311,11 @@ static void *thread_routine(void *arg) { // the expected POSIX signature
}
// 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,
void const * const par)
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,
void const * const par)
{
Q_UNUSED_PAR(stkSto);
Q_UNUSED_PAR(stkSize);

View File

@ -357,7 +357,7 @@ int_t QF_run(void) {
}
//--------------------------------------------------------------------------
void QActive_start_(QActive* const me,
void QActive_start(QActive* const me,
QPrioSpec const prioSpec,
QEvt const** const qSto,
uint_fast16_t const qLen,

View File

@ -73,10 +73,11 @@ static void thread_function(ULONG thread_input) { // ThreadX signature
}
}
//............................................................................
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,
void const * const par)
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,
void const * const par)
{
me->prio = (uint8_t)(prioSpec & 0xFFU); // QF-priority
me->pthre = (uint8_t)(prioSpec >> 8U); // QF preemption-threshold
@ -116,7 +117,7 @@ void QActive_start_(QActive * const me, QPrioSpec const prioSpec,
}
//............................................................................
void QActive_setAttr(QActive *const me, uint32_t attr1, void const *attr2) {
// this function must be called before QACTIVE_START(),
// this function must be called before QActive_start(),
// which implies that me->thread.tx_thread_name must not be used yet;
//
QF_CRIT_STAT

View File

@ -83,10 +83,11 @@ static void task_function(void *pdata) { // uC-OS2 task signature
}
//............................................................................
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,
void const * const par)
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,
void const * const par)
{
// task name to be passed to OSTaskCreateExt()
void * const task_name = (void *)me->eQueue;
@ -168,7 +169,7 @@ void QActive_setAttr(QActive *const me, uint32_t attr1, void const *attr2) {
QF_CRIT_ENTRY();
switch (attr1) {
case TASK_NAME_ATTR:
// this function must be called before QACTIVE_START(),
// this function must be called before QActive_start(),
// which implies that me->eQueue must not be used yet;
Q_ASSERT_INCRIT(300, me->eQueue == (OS_EVENT *)0);
// temporarily store the name, cast 'const' away
@ -311,7 +312,7 @@ QEvt const *QActive_get_(QActive * const me) {
// NOTE1:
// The member QActive.thread is set to the uC-OS2 task options in the
// function QF_setUCosTaskAttr(), which must be called **before**
// QACTIVE_START().
// QActive_start().
//
// NOTE3:
// The event posting to uC-OS2 message queue occurs OUTSIDE critical section,

View File

@ -235,10 +235,11 @@ int QF_consoleWaitForKey(void) {
// 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,
void const * const par)
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,
void const * const par)
{
Q_UNUSED_PAR(stkSto);
Q_UNUSED_PAR(stkSize);

View File

@ -165,10 +165,11 @@ int QF_consoleWaitForKey(void) {
// 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,
void const * const par)
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,
void const * const par)
{
Q_UNUSED_PAR(stkSto);
Q_UNUSED_PAR(stkSize);

193
qpc.qm
View File

@ -355,7 +355,7 @@ return me;</code>
// unhandled and need to &quot;bubble up&quot;
Q_RET_SUPER, //!&lt; event passed to superstate to handle
Q_RET_SUPER_SUB, //!&lt; event passed to submachine superstate
Q_RET_UNHANDLED, //!&lt; event unhandled due to a guard
Q_RET_UNHANDLED, //!&lt; event unhandled due to guard
// handled and do not need to &quot;bubble up&quot;
Q_RET_HANDLED, //!&lt; event handled (internal transition)
@ -1258,7 +1258,7 @@ do {
else if (r == Q_RET_SUPER_SUB) {
t = me-&gt;temp.obj; // current host state of the submachine
}
else { // event unhandled due to a guard?
else { // event unhandled due to a guard
QF_CRIT_ENTRY();
// event must be unhandled due to a guard evaluating to 'false'
Q_ASSERT_INCRIT(310, r == Q_RET_UNHANDLED);
@ -1455,40 +1455,11 @@ QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(490, lbound &gt; 0);
QF_CRIT_EXIT();
return inState;</code>
</operation>
<!--${QEP::QMsm::isInState}-->
<operation name="isInState" type="bool" visibility="0x00" properties="0x00">
<specifiers>const</specifiers>
<documentation>//! @private @memberof QMsm
//! @deprecated instead use: QASM_IS_IN()
//! @private @memberof QMsm</documentation>
<!--${QEP::QMsm::isInState::stateObj}-->
<parameter name="stateObj" type="QMState const * const"/>
<code>bool inState = false; // assume that this SM is not in 'state'
QMState const *s = me-&gt;super.state.obj;
int_fast8_t lbound = QMSM_MAX_NEST_DEPTH_; // fixed upper loop bound
for (; (s != (QMState *)0) &amp;&amp; (lbound &gt; 0); --lbound) {
if (s == stateObj) { // match found?
inState = true;
break;
}
else {
s = s-&gt;superstate; // advance to the superstate
}
}
QF_CRIT_STAT
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(590, lbound &gt; 0);
QF_CRIT_EXIT();
return inState;</code>
</operation>
<!--${QEP::QMsm::stateObj}-->
<operation name="stateObj" type="QMState const *" visibility="0x00" properties="0x02">
<specifiers>const</specifiers>
<documentation>//! @public @memberof QMsm
//! @public @memberof QMsm</documentation>
@ -2324,22 +2295,22 @@ me-&gt;super.vptr = &amp;vtable; // hook vptr to QActive vtable</code>
<!--${QF::QActive::setAttr::attr2}-->
<parameter name="attr2" type="void const *"/>
</operation>
<!--${QF::QActive::start_}-->
<operation name="start_" type="void" visibility="0x02" properties="0x00">
<documentation>//! @private @memberof QActive
<!--${QF::QActive::start}-->
<operation name="start" type="void" visibility="0x00" properties="0x00">
<documentation>//! @public @memberof QActive
//! @private @memberof QActive</documentation>
<!--${QF::QActive::start_::prioSpec}-->
//! @public @memberof QActive</documentation>
<!--${QF::QActive::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QF::QActive::start_::qSto}-->
<!--${QF::QActive::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QF::QActive::start_::qLen}-->
<!--${QF::QActive::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QF::QActive::start_::stkSto}-->
<!--${QF::QActive::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QF::QActive::start_::stkSize}-->
<!--${QF::QActive::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QF::QActive::start_::par}-->
<!--${QF::QActive::start::par}-->
<parameter name="par" type="void const * const"/>
</operation>
<!--${QF::QActive::stop}-->
@ -4684,26 +4655,6 @@ QF_gc(e); // recycle the referenced event
(evtRef_) = (void *)0; \
} while (false)</code>
</operation>
<!--${QF-macros::QACTIVE_START}-->
<operation name="QACTIVE_START" type="void" visibility="0x03" properties="0x00">
<!--${QF-macros::QACTIVE_START::me_}-->
<parameter name="me_" type="&lt;QActive subclass *&gt;"/>
<!--${QF-macros::QACTIVE_START::prioSpec_}-->
<parameter name="prioSpec_" type="QPrioSpec"/>
<!--${QF-macros::QACTIVE_START::qSto_}-->
<parameter name="qSto_" type="QEvt const * *"/>
<!--${QF-macros::QACTIVE_START::qLen_}-->
<parameter name="qLen_" type="uint_fast16_t"/>
<!--${QF-macros::QACTIVE_START::stkSto_}-->
<parameter name="stkSto_" type="void *"/>
<!--${QF-macros::QACTIVE_START::stkSize_}-->
<parameter name="stkSize_" type="uint_fast16_t"/>
<!--${QF-macros::QACTIVE_START::par_}-->
<parameter name="par_" type="void const *"/>
<code>\
(QActive_start_((QActive *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))</code>
</operation>
<!--${QF-macros::QACTIVE_POST}-->
<operation name="QACTIVE_POST?def Q_SPY" type="void" visibility="0x03" properties="0x00">
<!--${QF-macros::QACTIVE_POST::me_}-->
@ -5160,22 +5111,22 @@ return 0;
<!--${QV::QActive}-->
<class name="QActive" superclass="QEP::QAsm">
<documentation>//! QActive active object class customization for QV</documentation>
<!--${QV::QActive::start_}-->
<operation name="start_" type="void" visibility="0x00" properties="0x04">
<!--${QV::QActive::start}-->
<operation name="start" type="void" visibility="0x00" properties="0x04">
<documentation>//! @public @memberof QActive
//! @public @memberof QActive</documentation>
<!--${QV::QActive::start_::prioSpec}-->
<!--${QV::QActive::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QV::QActive::start_::qSto}-->
<!--${QV::QActive::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QV::QActive::start_::qLen}-->
<!--${QV::QActive::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QV::QActive::start_::stkSto}-->
<!--${QV::QActive::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QV::QActive::start_::stkSize}-->
<!--${QV::QActive::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QV::QActive::start_::par}-->
<!--${QV::QActive::start::par}-->
<parameter name="par" type="void const * const"/>
<code>Q_UNUSED_PAR(stkSto); // not needed in QV
Q_UNUSED_PAR(stkSize); // not needed in QV
@ -5683,22 +5634,22 @@ return 0;
<!--${QK::QActive}-->
<class name="QActive" superclass="QEP::QAsm">
<documentation>// QActive class customization for QK</documentation>
<!--${QK::QActive::start_}-->
<operation name="start_" type="void" visibility="0x00" properties="0x04">
<!--${QK::QActive::start}-->
<operation name="start" type="void" visibility="0x00" properties="0x04">
<documentation>//! @public @memberof QActive
//! @public @memberof QActive</documentation>
<!--${QK::QActive::start_::prioSpec}-->
<!--${QK::QActive::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QK::QActive::start_::qSto}-->
<!--${QK::QActive::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QK::QActive::start_::qLen}-->
<!--${QK::QActive::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QK::QActive::start_::stkSto}-->
<!--${QK::QActive::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QK::QActive::start_::stkSize}-->
<!--${QK::QActive::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QK::QActive::start_::par}-->
<!--${QK::QActive::start::par}-->
<parameter name="par" type="void const * const"/>
<code>Q_UNUSED_PAR(stkSto); // not needed in QK
Q_UNUSED_PAR(stkSize); // not needed in QK
@ -6278,22 +6229,22 @@ return 0;
<!--${QXK::QActive}-->
<class name="QActive" superclass="QEP::QAsm">
<documentation>// QActive active object class customization for QK</documentation>
<!--${QXK::QActive::start_}-->
<operation name="start_" type="void" visibility="0x00" properties="0x04">
<!--${QXK::QActive::start}-->
<operation name="start" type="void" visibility="0x00" properties="0x04">
<documentation>//! @public @memberof QActive
//! @public @memberof QActive</documentation>
<!--${QXK::QActive::start_::prioSpec}-->
<!--${QXK::QActive::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QXK::QActive::start_::qSto}-->
<!--${QXK::QActive::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QXK::QActive::start_::qLen}-->
<!--${QXK::QActive::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QXK::QActive::start_::stkSto}-->
<!--${QXK::QActive::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QXK::QActive::start_::stkSize}-->
<!--${QXK::QActive::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QXK::QActive::start_::par}-->
<!--${QXK::QActive::start::par}-->
<parameter name="par" type="void const * const"/>
<code>QF_CRIT_STAT
QF_CRIT_ENTRY();
@ -6389,6 +6340,25 @@ me-&gt;super.super.state.act = Q_ACTION_CAST(0); // mark as extended thread
QTimeEvt_ctorX(&amp;me-&gt;timeEvt, &amp;me-&gt;super,
(enum_t)QXK_DELAY_SIG, tickRate);</code>
</operation>
<!--${QXK::QXThread::start}-->
<operation name="start" type="void" visibility="0x00" properties="0x02">
<documentation>//! @public @memberof QXThread
//! @public @memberof QXThread</documentation>
<!--${QXK::QXThread::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QXK::QXThread::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QXK::QXThread::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QXK::QXThread::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QXK::QXThread::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QXK::QXThread::start::par}-->
<parameter name="par" type="void const * const"/>
<code>QActive_start(&amp;me-&gt;super, prioSpec, qSto, qLen, stkSto, stkSize, par);</code>
</operation>
<!--${QXK::QXThread::delay}-->
<operation name="delay" type="bool" visibility="0x00" properties="0x01">
<documentation>//! @public @memberof QXThread
@ -7364,25 +7334,6 @@ QF_CRIT_EXIT();</code>
</package>
<!--${QXK-macros}-->
<package name="QXK-macros" stereotype="0x02">
<!--${QXK-macros::QXTHREAD_START}-->
<operation name="QXTHREAD_START" type="void" visibility="0x03" properties="0x00">
<!--${QXK-macros::QXTHREAD_START::me_}-->
<parameter name="me_" type="&lt;QActive subclass *&gt;"/>
<!--${QXK-macros::QXTHREAD_START::prioSpec_}-->
<parameter name="prioSpec_" type="QPrioSpec const"/>
<!--${QXK-macros::QXTHREAD_START::qSto_}-->
<parameter name="qSto_" type="QEvt const * *"/>
<!--${QXK-macros::QXTHREAD_START::qLen_}-->
<parameter name="qLen_" type="uint_fast16_t"/>
<!--${QXK-macros::QXTHREAD_START::stkSto_}-->
<parameter name="stkSto_" type="void *"/>
<!--${QXK-macros::QXTHREAD_START::stkSize_}-->
<parameter name="stkSize_" type="uint_fast16_t"/>
<!--${QXK-macros::QXTHREAD_START::par_}-->
<parameter name="par_" type="void const *"/>
<code>QACTIVE_START((me_), (prioSpec_), (qSto_), (qLen_), \
(stkSto_), (stkSize_), (par_))</code>
</operation>
<!--${QXK-macros::QXTHREAD_POST_X}-->
<operation name="QXTHREAD_POST_X" type="void" visibility="0x03" properties="0x00">
<!--${QXK-macros::QXTHREAD_POST_X::me_}-->
@ -8196,22 +8147,22 @@ return 0; // return no error</code>
<!--${QS::QUTest-stub::QActive}-->
<class name="QActive" superclass="QEP::QAsm">
<documentation>// QActive stub for QUTest</documentation>
<!--${QS::QUTest-stub::QActive::start_}-->
<operation name="start_" type="void" visibility="0x02" properties="0x00">
<!--${QS::QUTest-stub::QActive::start}-->
<operation name="start" type="void" visibility="0x02" properties="0x00">
<documentation>//! @private @memberof QActive
//! @private @memberof QActive</documentation>
<!--${QS::QUTest-stub::QActive::start_::prioSpec}-->
<!--${QS::QUTest-stub::QActive::start::prioSpec}-->
<parameter name="prioSpec" type="QPrioSpec const"/>
<!--${QS::QUTest-stub::QActive::start_::qSto}-->
<!--${QS::QUTest-stub::QActive::start::qSto}-->
<parameter name="qSto" type="QEvt const * * const"/>
<!--${QS::QUTest-stub::QActive::start_::qLen}-->
<!--${QS::QUTest-stub::QActive::start::qLen}-->
<parameter name="qLen" type="uint_fast16_t const"/>
<!--${QS::QUTest-stub::QActive::start_::stkSto}-->
<!--${QS::QUTest-stub::QActive::start::stkSto}-->
<parameter name="stkSto" type="void * const"/>
<!--${QS::QUTest-stub::QActive::start_::stkSize}-->
<!--${QS::QUTest-stub::QActive::start::stkSize}-->
<parameter name="stkSize" type="uint_fast16_t const"/>
<!--${QS::QUTest-stub::QActive::start_::par}-->
<!--${QS::QUTest-stub::QActive::start::par}-->
<parameter name="par" type="void const * const"/>
<code>Q_UNUSED_PAR(stkSto);
Q_UNUSED_PAR(stkSize);
@ -9822,7 +9773,19 @@ extern char const Q_BUILD_TIME[9];
//! @deprecated plain 'char' is no longer forbidden in MISRA-C:2023
typedef char char_t;
//! @deprecated assertion failure handler
//! @deprecated Macro for starting an Active Object.
//! Use QActive::QActive_start() instead.
#define QACTIVE_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) \
(QActive_start((QActive *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))
//! @deprecated Macro for starting an eXtended Thread.
//! Use QXThread::QXThread_start() instead.
#define QXTHREAD_START(me_, prioSpec_, qSto_, qLen_, stkSto_, stkSize_, par_) \
(QXThread_start((QXThread *)(me_), (prioSpec_), \
(qSto_), (qLen_), (stkSto_), (stkSize_), (par_)))
//! @deprecated Assertion failure handler.
//! Use Q_onError() instead.
#define Q_onAssert(module_, id_) Q_onError(module_, id_)
@ -9880,7 +9843,7 @@ static inline void QF_psInit(
#define QHSM_DISPATCH(me_, e_, qsId_) QASM_DISPATCH((me_), (e_), (qsId_))
//! @deprecated instead use: QASM_IS_IN()
#define QHsm_isIn(me_, state_) QHsm_isIn_((QAsm *)(me_), (state_))
#define QHsm_isIn(me_, state_) QASM_IS_IN((QAsm *)(me_), (state_))
//============================================================================
#if (QP_API_VERSION &lt; 691)

View File

@ -1,20 +1,20 @@
bdb9fd45fa87fbd718a23f61188801136f8cfc38 *qpc.qm
d875de4b3adef10ad05ff11713bed330be048922 *qpc.qm
4905c5e1a7afeafb9b644ca8ff0c7bd8b6d956ec *include/qequeue.h
80349c00631173d87bf4b98fddc7ccc417561d10 *include/qk.h
f131ada80744965bc27f5d31c43ee8a5edac63fd *include/qmpool.h
11476265c9b27c47b762163715d76cd481540de7 *include/qp.h
e112ab5915f12deef350c75ef9e9ec69f7b8c59f *include/qp.h
a9e58ddcc2185a56d79cad7dc5f31f7e5f5c89a3 *include/qp_pkg.h
cf4fef7f60ee125ac654ee64816a59caec8ffad1 *include/qpc.h
270513305e374cec84fed74979299835f4ae3246 *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
4b229ebf5b2109147940f00e8b46a629ea5a29ba *include/qxk.h
7f54a0933a9dc2fcaca475919fa0067667ed99ed *src/qf/CMakeLists.txt
125ad159841f3290be4c1a1708641099101afc46 *src/qf/qep_hsm.c
661562d0d073d0993bdb83c1e40b005386bcca2d *src/qf/qep_msm.c
edac47d01b0d24636c312a4b85813e7d7af3fdfb *src/qf/qep_msm.c
8e366a46d0e9fd5580ec1a052b9bf54d322409fb *src/qf/qf_act.c
b2ef0d4ea8d62bab84ff674c9037db35609c35fd *src/qf/qf_actq.c
8f1af64278e070f94a791bee8747eb2c8f8eaf42 *src/qf/qf_defer.c
@ -26,18 +26,18 @@ eab3084e49a9ac674f898a038c1c61e17b86db34 *src/qf/qf_ps.c
c0265928351e6d891277d05aab1aeac20534c5a8 *src/qf/qf_qmact.c
390f03c5899d3657066bb7335905f9e44793236d *src/qf/qf_time.c
878a737efe234f40dc8c9374acc351e510b4da1e *src/qk/CMakeLists.txt
cfb544f3cd73a76ef3656641b9a825f5b6957d39 *src/qk/qk.c
144e820821d5676d6bbbacac028acb8ea50de0a7 *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
b9309c48a98f04639c03ad9e363a46f031fe02c3 *src/qs/qutest.c
b1d2def9b8f6cde464170af7682ab0f01f4f40f6 *src/qv/CMakeLists.txt
871301303bb8027f950800f9ed6d00544f3b98df *src/qv/qv.c
b6577263b393a83197f9383f4576dbd870ec1511 *src/qv/qv.c
4cb0461eeec92f5a2e0c5b8ec41da409c5958193 *src/qxk/CMakeLists.txt
b1dd543516393d3c4cc3bb89446c56b7d5c331da *src/qxk/qxk.c
bb8f6d1e612a39e40e3f780ec1a678ee75a1a0d8 *src/qxk/qxk.c
a67a1aec687cb3f692dc5d49bec6e7460a38bbd0 *src/qxk/qxk_mutex.c
81b8a5c73f7c918fecd6e67969c9f625d9db408f *src/qxk/qxk_sema.c
abd65424ec87f9ad930f141bffd83d6ddeb619e5 *src/qxk/qxk_xthr.c
@ -102,34 +102,34 @@ faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *ports/arm-cr/qv/ti/qs_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
05944870ca5f75d0942a2a65e32c4a9fc9ea4f9e *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
6343509d769b420f07cea628c68bec729dfbc942 *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
fb18ebe253666180094170817e6453bcc3dcf386 *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
85f46dc50c923694206f88f310c76083ff34ad2f *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
e4eb61f17c387d6a3f0986384ea2d321f96a20c9 *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
7ad0df4b40d862f22a0781c7c54ac17f38b48cf7 *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
@ -141,7 +141,7 @@ 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
141eba516d088f91ed5c74968b5863414e8587da *ports/win32/qf_port.c
92e081241e4ce102193246ebe8f95879bd853c09 *ports/win32/qp_port.h
eea30365b6b95a429cb1f1f17136df44d32e62ba *ports/win32/qs_port.c
ff6375dabf341a7869781f82fd7eda32497c4069 *ports/win32/qs_port.h
@ -150,7 +150,7 @@ ff6375dabf341a7869781f82fd7eda32497c4069 *ports/win32/qs_port.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
8c9f5fa1cd43311381c09b17db15b40d883470a6 *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
@ -167,7 +167,7 @@ ff6375dabf341a7869781f82fd7eda32497c4069 *ports/win32-qutest/qs_port.h
848a30efa3274ff30fb72059f926fe7963ab2321 *zephyr/CMakeLists.txt
10764710e545dd4d2ce0ddf032711df7f9191937 *zephyr/Kconfig
2eb2a922e18b4760a68151ebee1b6282d20b4692 *zephyr/module.yml
0644ecb3cfe1d05837b375c5e236a36d294459d9 *zephyr/qf_port.c
fdae436b2e3b9657bd38a51a6f85482ba2e4c6a8 *zephyr/qf_port.c
109c291df50110f185adc17bcdf8becc0a79346c *zephyr/qp-zephyr.jpg
ee0f1921d5994717b112b2c933f3c2cc3d690d74 *zephyr/qp_port.h
faf4df1db0c16caa5e84a303ad9a1ecaaa135b78 *zephyr/qs_port.h

View File

@ -221,7 +221,7 @@ void QMsm_dispatch_(
else if (r == Q_RET_SUPER_SUB) {
t = me->temp.obj; // current host state of the submachine
}
else { // event unhandled due to a guard?
else { // event unhandled due to a guard
QF_CRIT_ENTRY();
// event must be unhandled due to a guard evaluating to 'false'
Q_ASSERT_INCRIT(310, r == Q_RET_UNHANDLED);
@ -410,33 +410,6 @@ bool QMsm_isIn_(
return inState;
}
//${QEP::QMsm::isInState} ....................................................
//! @private @memberof QMsm
bool QMsm_isInState(QMsm const * const me,
QMState const * const stateObj)
{
bool inState = false; // assume that this SM is not in 'state'
QMState const *s = me->super.state.obj;
int_fast8_t lbound = QMSM_MAX_NEST_DEPTH_; // fixed upper loop bound
for (; (s != (QMState *)0) && (lbound > 0); --lbound) {
if (s == stateObj) { // match found?
inState = true;
break;
}
else {
s = s->superstate; // advance to the superstate
}
}
QF_CRIT_STAT
QF_CRIT_ENTRY();
Q_ENSURE_INCRIT(590, lbound > 0);
QF_CRIT_EXIT();
return inState;
}
//${QEP::QMsm::childStateObj} ................................................
//! @public @memberof QMsm
QMState const * QMsm_childStateObj(QMsm const * const me,

View File

@ -435,9 +435,9 @@ int_t QF_run(void) {
//${QK::QActive} .............................................................
//${QK::QActive::start_} .....................................................
//${QK::QActive::start} ......................................................
//! @public @memberof QActive
void QActive_start_(QActive * const me,
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,

View File

@ -212,9 +212,9 @@ int_t QF_run(void) {
//${QS::QUTest-stub::QActive} ................................................
//${QS::QUTest-stub::QActive::start_} ........................................
//${QS::QUTest-stub::QActive::start} .........................................
//! @private @memberof QActive
void QActive_start_(QActive * const me,
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,

View File

@ -279,9 +279,9 @@ int_t QF_run(void) {
//${QV::QActive} .............................................................
//${QV::QActive::start_} .....................................................
//${QV::QActive::start} ......................................................
//! @public @memberof QActive
void QActive_start_(QActive * const me,
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,

View File

@ -472,9 +472,9 @@ int_t QF_run(void) {
//${QXK::QActive} ............................................................
//${QXK::QActive::start_} ....................................................
//${QXK::QActive::start} .....................................................
//! @public @memberof QActive
void QActive_start_(QActive * const me,
void QActive_start(QActive * const me,
QPrioSpec const prioSpec,
QEvt const * * const qSto,
uint_fast16_t const qLen,

View File

@ -144,7 +144,7 @@ int main() {
for (uint8_t n = 0U; n < NUM_B; ++n) {
if (pspecB[n] != 0U) {
ObjB_ctor(&aoB[n]); // instantiate the AO
QACTIVE_START(&aoB[n].super, // AO to start
QActive_start(&aoB[n].super, // AO to start
pspecB[n], // QF-prio/p-thre.
aoB_queueSto[n], // event queue storage
Q_DIM(aoB_queueSto[n]), // event length [events]

View File

@ -188,7 +188,7 @@ int main() {
for (n = 0U; n < NUM_B; ++n) {
if (pspecB[n] != 0U) {
ObjB_ctor(&aoB[n]); // instantiate the AO
QACTIVE_START(&aoB[n].super, // AO to start
QActive_start(&aoB[n].super, // AO to start
pspecB[n], // QF-prio/p-thre.
aoB_queueSto[n], // event queue storage
Q_DIM(aoB_queueSto[n]), // event length [events]
@ -203,7 +203,7 @@ int main() {
for (n = 0U; n < NUM_X; ++n) {
QXThread_ctor(&thrX[n], &ThrX_run, 0U); // instantiate the thread
if (pspecX[n] != 0U) {
QXTHREAD_START(&thrX[n], // thread to start
QXThread_start(&thrX[n], // thread to start
pspecX[n], // QF-prio/p-thre.
thrX_queueSto[n], // event queue storage
Q_DIM(thrX_queueSto[n]), // event length [events]

View File

@ -100,11 +100,11 @@ static void thread_entry(void *p1, void *p2, void *p3) {
//
// In the Zephyr port the generic function QActive_setAttr() is used to
// set the options for the Zephyr thread (attr1) and thread name (attr2).
// QActive_setAttr() needs to be called *before* QACTIVE_START() for the
// QActive_setAttr() needs to be called *before* QActive_start() for the
// given active object.
//
// In this Zephyr port the attributes will be used as follows
// (see also QActive_start_()):
// (see also QActive_start()):
// - attr1 - will be used for thread options in k_thread_create()
// - attr2 - will be used for thread name in k_thread_name_set()
//
@ -113,10 +113,11 @@ void QActive_setAttr(QActive *const me, uint32_t attr1, void const *attr2) {
me->thread.init_data = (void *)attr2; // will be used for thread name
}
//............................................................................
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,
void const * const par)
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,
void const * const par)
{
me->prio = (uint8_t)(prioSpec & 0xFFU); // QF-priority of the AO
me->pthre = 0U; // preemption-threshold (not used for AO registration)