diff --git a/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/TMS570LS1224.ccxml b/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/TMS570LS1224.ccxml
deleted file mode 100644
index a9750db0..00000000
--- a/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/TMS570LS1224.ccxml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/readme.txt b/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/readme.txt
deleted file mode 100644
index af97b62d..00000000
--- a/examples/arm-cr/blinky_launchxl2-tms57012/qv/ti/targetConfigs/readme.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based
-on the device and connection settings specified in your project on the Properties > General page.
-
-Please note that in automatic target-configuration management, changes to the project's device and/or
-connection settings will either modify an existing or generate a new target-configuration file. Thus,
-if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively,
-you may create your own target-configuration file for this project and manage it manually. You can
-always switch back to automatic target-configuration management by checking the "Manage the project's
-target-configuration automatically" checkbox on the project's Properties > General page.
\ No newline at end of file
diff --git a/examples/win32/qhsmtst/log.txt b/examples/win32/qhsmtst/log.txt
index 9dca43de..fa20ae84 100644
--- a/examples/win32/qhsmtst/log.txt
+++ b/examples/win32/qhsmtst/log.txt
@@ -1,4 +1,4 @@
-QHsmTst example, QEP 5.4.2
+QHsmTst example, QEP 5.7.4
top-INIT;s-ENTRY;s2-ENTRY;s2-INIT;s21-ENTRY;s211-ENTRY;
A:s21-A;s211-EXIT;s21-EXIT;s21-ENTRY;s21-INIT;s211-ENTRY;
B:s21-B;s211-EXIT;s211-ENTRY;
diff --git a/include/qep.h b/include/qep.h
index c059e55d..05cbd41f 100644
--- a/include/qep.h
+++ b/include/qep.h
@@ -5,7 +5,7 @@
* @cond
******************************************************************************
* Last updated for version 5.7.4
-* Last updated on 2016-11-04
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -356,7 +356,7 @@ QState QMsm_execTatbl_(QMsm * const me, QMTranActTable const *tatbl);
/*! Tests if a given state is part of the current active state
* configuration in a MSM.
*/
-bool QMsm_isInState(QMsm * const me, QMState const * const state);
+bool QMsm_isInState(QMsm const * const me, QMState const * const state);
/****************************************************************************/
/*! Hierarchical State Machine. */
diff --git a/include/qf.h b/include/qf.h
index 8b4b0e33..0496c140 100644
--- a/include/qf.h
+++ b/include/qf.h
@@ -4,8 +4,8 @@
* @ingroup qf
* @cond
******************************************************************************
-* Last updated for version 5.7.2
-* Last updated on 2016-09-23
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -642,7 +642,7 @@ bool QF_noTimeEvtsActiveX(uint_fast8_t const tickRate);
void QF_add_(QMActive * const a);
/*! Remove the active object from the framework. */
-void QF_remove_(QMActive const * const a);
+void QF_remove_(QMActive * const a);
/*! Obtain the minimum of free entries of the given event pool. */
uint_fast16_t QF_getPoolMin(uint_fast8_t const poolId);
diff --git a/ports/lint/options.lnt b/ports/lint/options.lnt
index c6ba06a8..ec895551 100644
--- a/ports/lint/options.lnt
+++ b/ports/lint/options.lnt
@@ -1,7 +1,7 @@
//////////////////////////////////////////////////////////////////////////////
// Product: PC-Lint 9.x option file for linting QP/C
-// Last updated for version 5.7.2
-// Last updated on 2016-09-18
+// Last updated for version 5.7.4
+// Last updated on 2016-11-02
//
// Q u a n t u m L e a P s
// ---------------------------
@@ -52,8 +52,6 @@ qpc.lnt // QP/C options
-strong(AXJ) // Strong type checking
// general
--esym(715, me) // Info: Symbol 'me' not referenced
--esym(818, me) // Info: Pointer 'me' could be pointing to const
+e900 // prints a success message at the end
// QEP
diff --git a/ports/posix/qf_port.c b/ports/posix/qf_port.c
index 1f9df4ed..26015ad8 100644
--- a/ports/posix/qf_port.c
+++ b/ports/posix/qf_port.c
@@ -4,8 +4,8 @@
* @ingroup ports
* @cond
******************************************************************************
-* Last Updated for Version: 5.6.5
-* Date of the Last Update: 2016-06-08
+* Last Updated for Version: 5.7.4
+* Date of the Last Update: 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -186,7 +186,7 @@ void QActive_start_(QActive * const me, uint_fast8_t prio,
me->thread = (uint8_t)1;
}
/*..........................................................................*/
-void QActive_stop(QActive *me) {
+void QActive_stop(QActive * const me) {
me->thread = (uint8_t)0; /* stop the QActive thread loop */
}
diff --git a/ports/ti-rtos/qf_port.c b/ports/ti-rtos/qf_port.c
index a5e9aea0..bb5f8619 100644
--- a/ports/ti-rtos/qf_port.c
+++ b/ports/ti-rtos/qf_port.c
@@ -4,8 +4,8 @@
* @ingroup ports
* @cond
******************************************************************************
-* Last Updated for Version: 5.7.3
-* Date of the Last Update: 2016-10-06
+* Last Updated for Version: 5.7.4
+* Date of the Last Update: 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -122,7 +122,7 @@ static void swi_function(UArg arg0, UArg arg1) { /* TI-RTOS Swi signature */
}
}
/*..........................................................................*/
-void QActive_stop(QActive *me) {
+void QActive_stop(QActive * const me) {
QF_remove_(me); /* remove the AO from the framework */
}
diff --git a/ports/ucos-ii/qf_port.c b/ports/ucos-ii/qf_port.c
index 3837b8cf..c7485b02 100644
--- a/ports/ucos-ii/qf_port.c
+++ b/ports/ucos-ii/qf_port.c
@@ -4,8 +4,8 @@
* @ingroup ports
* @cond
******************************************************************************
-* Last Updated for Version: 5.4.0
-* Date of the Last Update: 2015-04-08
+* Last Updated for Version: 5.7.4
+* Date of the Last Update: 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -32,8 +32,8 @@
* along with this program. If not, see .
*
* Contact information:
-* Web: www.state-machine.com
-* Email: info@state-machine.com
+* http://www.state-machine.com
+* mailto:info@state-machine.com
******************************************************************************
* @endcond
*/
@@ -128,7 +128,7 @@ static void task_function(void *pdata) { /* uC/OS-II task signature */
OSTaskDel(OS_PRIO_SELF); /* make uC/OS-II forget about this task */
}
/*..........................................................................*/
-void QActive_stop(QActive *me) {
+void QActive_stop(QActive * const me) {
INT8U err;
me->thread = (uint32_t)0; /* stop the thread loop */
OSQDel(me->eQueue, OS_DEL_ALWAYS, &err); /* cleanup the queue */
diff --git a/source/qep_hsm.c b/source/qep_hsm.c
index d48f6ae9..2ac44421 100644
--- a/source/qep_hsm.c
+++ b/source/qep_hsm.c
@@ -4,8 +4,8 @@
* @ingroup qep
* @cond
******************************************************************************
-* Last updated for version 5.5.0
-* Last updated on 2015-09-04
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -260,8 +260,11 @@ void QHsm_dispatch_(QHsm * const me, QEvt const * const e) {
QState r;
QS_CRIT_STAT_
- /** @pre the state configuration must be stable */
- Q_REQUIRE_ID(400, t == me->temp.fun);
+ /** @pre the current state must be initialized and
+ * the state configuration must be stable
+ */
+ Q_REQUIRE_ID(400, (t != Q_STATE_CAST(0))
+ && (t == me->temp.fun));
QS_BEGIN_(QS_QEP_DISPATCH, QS_priv_.smObjFilter, me)
QS_TIME_(); /* time stamp */
diff --git a/source/qep_msm.c b/source/qep_msm.c
index 8243b3bd..6b578311 100644
--- a/source/qep_msm.c
+++ b/source/qep_msm.c
@@ -4,8 +4,8 @@
* @ingroup qep
* @cond
******************************************************************************
-* Last updated for version 5.7.1
-* Last updated on 2016-09-20
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -519,7 +519,7 @@ static QState QMsm_enterHistory_(QMsm * const me, QMState const * const hist){
*
* @returns 'true' if the MSM "is in" the @p state and 'false' otherwise
*/
-bool QMsm_isInState(QMsm * const me, QMState const * const state) {
+bool QMsm_isInState(QMsm const * const me, QMState const * const state) {
bool inState = false; /* assume that this MSM is not in 'state' */
QMState const *s;
diff --git a/source/qf_act.c b/source/qf_act.c
index f157e215..2785abf0 100644
--- a/source/qf_act.c
+++ b/source/qf_act.c
@@ -4,8 +4,8 @@
* @ingroup qf
* @cond
******************************************************************************
-* Last updated for version 5.7.1
-* Last updated on 2016-09-17
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -106,7 +106,7 @@ void QF_add_(QMActive * const a) {
*
* @sa QF_add_()
*/
-void QF_remove_(QMActive const * const a) {
+void QF_remove_(QMActive * const a) {
uint_fast8_t p = a->prio;
QF_CRIT_STAT_
@@ -121,6 +121,7 @@ void QF_remove_(QMActive const * const a) {
QF_CRIT_ENTRY_();
QF_active_[p] = (QMActive *)0; /* free-up the priority level */
+ a->super.state.obj = (QMState *)0; /* invalidate the state */
QS_BEGIN_NOCRIT_(QS_QF_ACTIVE_REMOVE, QS_priv_.aoObjFilter, a)
QS_TIME_(); /* timestamp */
diff --git a/source/qk.c b/source/qk.c
index 0126a970..cda38823 100644
--- a/source/qk.c
+++ b/source/qk.c
@@ -4,8 +4,8 @@
* @ingroup qk
* @cond
******************************************************************************
-* Last updated for version 5.7.2
-* Last updated on 2016-09-26
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -203,7 +203,7 @@ void QActive_start_(QMActive * const me, uint_fast8_t prio,
* @note By the time the AO calls QActive_stop(), it should have unsubscribed
* from all events and no more events should be directly-posted to it.
*/
-void QActive_stop(QMActive *me) {
+void QActive_stop(QMActive * const me) {
QF_CRIT_STAT_
QF_CRIT_ENTRY_();
diff --git a/source/qxk.c b/source/qxk.c
index 151de95b..298a2322 100644
--- a/source/qxk.c
+++ b/source/qxk.c
@@ -5,7 +5,7 @@
* @cond
******************************************************************************
* Last updated for version 5.7.4
-* Last updated on 2016-11-01
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -216,7 +216,7 @@ void QActive_start_(QMActive * const me, uint_fast8_t prio,
* @note By the time the AO calls QActive_stop(), it should have unsubscribed
* from all events and no more events should be directly-posted to it.
*/
-void QActive_stop(QMActive *me) {
+void QActive_stop(QMActive * const me) {
QF_CRIT_STAT_
QF_CRIT_ENTRY_();
diff --git a/source/qxk_pkg.h b/source/qxk_pkg.h
index 2326ff1c..7ab9f774 100644
--- a/source/qxk_pkg.h
+++ b/source/qxk_pkg.h
@@ -4,8 +4,8 @@
* @ingroup qxk
* @cond
******************************************************************************
-* Last updated for version 5.7.2
-* Last updated on 2016-09-27
+* Last updated for version 5.7.4
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -58,10 +58,10 @@ enum QXK_Timeouts {
};
/*! internal functin to block (suspend) a given extended thread */
-void QXThread_block_(QXThread * const me);
+void QXThread_block_(QXThread const * const me);
/*! internal function to unblock (resume) a given extended thread. */
-void QXThread_unblock_(QXThread * const me);
+void QXThread_unblock_(QXThread const * const me);
/*! internal function to arm the private time event for a given thread. */
void QXThread_teArm_(QXThread * const me,
@@ -70,7 +70,7 @@ void QXThread_teArm_(QXThread * const me,
uint_fast8_t const tickRate);
/*! internal function to disarm the private time event for a given thread. */
-bool QXThread_teDisarm_(QXThread * const me);
+bool QXThread_teDisarm_(QXThread const * const me);
#include "qf_pkg.h" /* QF package-scope interface */
diff --git a/source/qxk_xthr.c b/source/qxk_xthr.c
index bf463fb0..2bd65671 100644
--- a/source/qxk_xthr.c
+++ b/source/qxk_xthr.c
@@ -5,7 +5,7 @@
* @cond
******************************************************************************
* Last updated for version 5.7.4
-* Last updated on 2016-11-01
+* Last updated on 2016-11-02
*
* Q u a n t u m L e a P s
* ---------------------------
@@ -463,7 +463,7 @@ QEvt const *QXThread_queueGet(uint_fast16_t const nTicks,
* @note
* must be called from within a critical section
*/
-void QXThread_block_(QXThread * const me) {
+void QXThread_block_(QXThread const * const me) {
/*! @pre the thread holding the lock cannot block! */
Q_REQUIRE_ID(600, me->super.prio != QXK_attr_.lockPrio);
QPSet_remove(&QXK_attr_.readySet, me->super.prio);
@@ -478,7 +478,7 @@ void QXThread_block_(QXThread * const me) {
* @note
* must be called from within a critical section
*/
-void QXThread_unblock_(QXThread * const me) {
+void QXThread_unblock_(QXThread const * const me) {
QPSet_insert(&QXK_attr_.readySet, me->super.prio);
if ((!QXK_ISR_CONTEXT_()) /* not inside ISR? */
&& (QF_active_[0] != (QMActive *)0)) /* kernel started? */