Quantum Leaps 10 лет назад
Родитель
Сommit
1c3932416b

+ 8 - 7
README.txt

@@ -1,4 +1,4 @@
-About AP/C
+About QP/C
 ==========
 QP/C (Quantum Platform in C) is a lightweight, open source software framework
 for building responsive and modular real-time embedded applications as
@@ -27,9 +27,9 @@ frameworks and the QM modeling tool receive over 40,000 downloads a year.
 The book, Practical UML Statecharts in C/C++, 2nd Edition provides a detailed
 design study of the QP frameworks and explains all the related concepts.
 
-***
+****
 NOTE: For more information about QP/C, please visit:
-http://www.state-machine.com/qp/qpc
+http://www.state-machine.com/qpc
 ****
 
 
@@ -39,10 +39,11 @@ QP/C is licensed under the increasingly popular dual licensing model, in
 which both the open source software distribution mechanism and traditional
 closed source software distribution models are combined.
 
-Note
-If your company has a policy forbidding open source in your product, all
-QP frameworks can be licensed commercially, in which case you don't use any
-open source license and you do not violate your policy.
+****
+NOTE: If your company has a policy forbidding open source in your product,
+all QP frameworks can be licensed commercially, in which case you don't use
+any open source license and you do not violate your policy.
+****
 
 Open Source Projects:
 --------------------

+ 2 - 0
doxygen/Doxyfile

@@ -782,6 +782,8 @@ INPUT = \
     ../include \
     ../source \
     ../ports/lint
+    ../ports/lint/qkn \
+    ../ports/lint/qvn
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

+ 2 - 0
doxygen/Doxyfile-CHM

@@ -782,6 +782,8 @@ INPUT = \
     ../include \
     ../source \
     ../ports/lint
+    ../ports/lint/qkn \
+    ../ports/lint/qvn
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

+ 16 - 132
examples/arm-cm/dpp_ek-tm4c123gxl/lint/lint_out.txt

@@ -1,6 +1,6 @@
 
 --- Module:   D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c (C)
-"D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 8 Note 950: Non-ANSI reserved word or construct: 'inline' [MISRA 2004 Rule 1.1, required], [MISRA 2004 Rule 2.2, required]
+"D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 1 Note 950: Non-ANSI reserved word or construct: 'inline' [MISRA 2004 Rule 1.1, required], [MISRA 2004 Rule 2.2, required]
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 15 Warning 618: Storage class specified after a type
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 15 Note 963: Qualifier const or volatile precedes a type; use +fqb to reverse the test
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 42 Note 960: Violates MISRA 2004 Required Rule 8.5, object/function definition in header file: 'QK_get_IPSR' 
@@ -8,10 +8,13 @@
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 48 52 Note 960: Violates MISRA 2004 Required Rule 14.3, null statement not in line by itself
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 49 19 Warning 530: Symbol 'regIPSR' (line 47) not initialized [MISRA 2004 Rule 9.1, required]
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 47 1 Info 830: Location cited in prior message
-"D:\qp\qpc\ports\arm-cm\qk\gnu\qs_port.h" 59 10 Warning 537: Repeated include file 'D:\qp\qpc\ports\arm-cm\qk\gnu\qf_port.h'
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 185 1 Info 818: Pointer parameter 'me' (line 180) could be declared as pointing to const [MISRA 2004 Rule 16.7, advisory]
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 180 1 Info 830: Location cited in prior message
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 237 1 Info 818: Pointer parameter 'me' (line 232) could be declared as pointing to const [MISRA 2004 Rule 16.7, advisory]
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 232 1 Info 830: Location cited in prior message
 
 --- Module:   D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c (C)
-"D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 8 Note 950: Non-ANSI reserved word or construct: 'inline' [MISRA 2004 Rule 1.1, required], [MISRA 2004 Rule 2.2, required]
+"D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 1 Note 950: Non-ANSI reserved word or construct: 'inline' [MISRA 2004 Rule 1.1, required], [MISRA 2004 Rule 2.2, required]
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 15 Warning 618: Storage class specified after a type
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 15 Note 963: Qualifier const or volatile precedes a type; use +fqb to reverse the test
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 46 42 Note 960: Violates MISRA 2004 Required Rule 8.5, object/function definition in header file: 'QK_get_IPSR' 
@@ -19,10 +22,12 @@
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 48 52 Note 960: Violates MISRA 2004 Required Rule 14.3, null statement not in line by itself
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 49 19 Warning 530: Symbol 'regIPSR' (line 47) not initialized [MISRA 2004 Rule 9.1, required]
 "D:\qp\qpc\ports\arm-cm\qk\gnu\qk_port.h" 47 1 Info 830: Location cited in prior message
-"D:\qp\qpc\ports\arm-cm\qk\gnu\qs_port.h" 59 10 Warning 537: Repeated include file 'D:\qp\qpc\ports\arm-cm\qk\gnu\qf_port.h'
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c" 148 21 Warning 527: Unreachable code at token 'status_' [MISRA 2004 Rule 14.1, required]
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c" 257 21 Warning 527: Unreachable code at token 'status_' [MISRA 2004 Rule 14.1, required]
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 57 1 Note 960: Violates MISRA 2004 Required Rule 8.7, could define variable at block scope: 'Philo_eating_s' at location line 57, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h" 56 1 Note 960: Violates MISRA 2004 Required Rule 8.7, could define variable at block scope: 'AO_Table' at location line 56, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 47 1 Note 960: Violates MISRA 2004 Required Rule 8.7, could define variable at block scope: 'Philo_hungry_s' at location line 47, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c
+"D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c" 57 1 Note 960: Violates MISRA 2004 Required Rule 8.7, could define variable at block scope: 'Table_paused_s' at location line 57, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c
 
 /// Start of Pass 2 ///
 
@@ -32,17 +37,8 @@
 
 --- Global Wrap-up
 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_mem' 
 "D:\qp\qpc\include\qf.h" 162 1 Warning 526: Symbol 'QMActive_ctor(QMActive *, QStateHandler)' (line 162, file D:\qp\qpc\include\qf.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QMActive_ctor' 
-"D:\qp\qpc\include\qs.h" 262 1 Warning 526: Symbol 'QS_obj_dict(const void *, const char_t *)' (line 262, file D:\qp\qpc\include\qs.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_obj_dict' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_onStartup' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_onCleanup' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_onFlush' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_onGetTime' 
-"D:\qp\qpc\include\qs.h" 1068 1 Warning 526: Symbol 'QS_priv_' (line 1068, file D:\qp\qpc\include\qs.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_priv_' 
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c" 79 1 Info 759: header declaration for symbol 'Table_ctor(void)' defined at (line 79, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c) could be moved from header to module
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c" 79 1 Info 765: external 'Table_ctor(void)' (line 79, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\table.c) could be made static [MISRA 2004 Rule 8.10, required]
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_init' 
@@ -61,19 +57,12 @@
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'BSP_random' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_onStartup' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_onCleanup' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_beginRec' 
+ Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QP_versionStr' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_poolInit' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_psInit' 
-"D:\qp\qpc\include\qf.h" 563 1 Warning 526: Symbol 'QF_publish_(const QEvt *, const void *)' (line 563, file D:\qp\qpc\include\qf.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
+"D:\qp\qpc\include\qf.h" 591 1 Warning 526: Symbol 'QF_publish_(const QEvt *)' (line 591, file D:\qp\qpc\include\qf.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_publish_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_pwr2Lkup' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QP_versionStr' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_str' 
-"D:\qp\qpc\include\qs.h" 258 1 Warning 526: Symbol 'QS_sig_dict(enum_t, const void *, const char_t *)' (line 258, file D:\qp\qpc\include\qs.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_sig_dict' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_str_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_str_ROM_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_str_ROM' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_active_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_add_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_run' 
@@ -81,15 +70,6 @@
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_bzero' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_mutexLock' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_mutexUnlock' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_endRec' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u16' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u16_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u32' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u32_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u8' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u8_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_u8u8_' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_usr_dict' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QActive_ctor' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QActive_postLIFO_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QActive_defer' 
@@ -107,19 +87,10 @@
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QHsm_dispatch_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QHsm_init_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QHsm_isIn' 
-"D:\qp\qpc\include\qep.h" 445 1 Warning 526: Symbol 'QHsm_top(const void *, const QEvt *)' (line 445, file D:\qp\qpc\include\qep.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QHsm_top' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_filterOff' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_f32' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_f64' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_filterOn' 
-"D:\qp\qpc\include\qs.h" 266 1 Warning 526: Symbol 'QS_fun_dict(void (*)(void), const char_t *)' (line 266, file D:\qp\qpc\include\qs.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_fun_dict' 
+ Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_onIdle' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_tickX_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_div8Lkup' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_onIdle' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_getByte' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_getBlock' 
 "D:\qp\qpc\include\qf.h" 476 1 Warning 526: Symbol 'QTimeEvt_armX(struct QTimeEvt *, QTimeEvtCtr, QTimeEvtCtr)' (line 476, file D:\qp\qpc\include\qf.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QTimeEvt_armX' 
 "D:\qp\qpc\include\qf.h" 472 1 Warning 526: Symbol 'QTimeEvt_ctorX(struct QTimeEvt *, QActive *, enum_t, uint_fast8_t)' (line 472, file D:\qp\qpc\include\qf.h, module D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) not defined
@@ -131,7 +102,6 @@
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QEQueue_init' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QEQueue_post' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QEQueue_postLIFO' 
- Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QS_initBuf' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QK_readySet_' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_gc' 
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 88 1 Info 759: header declaration for symbol 'Philo_ctor(void)' defined at (line 88, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) could be moved from header to module
@@ -155,7 +125,6 @@
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c" 78 1 Info 765: external 'AO_Philo' (line 78, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\philo.c) could be made static [MISRA 2004 Rule 8.10, required]
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_init' 
  Note 960: Violates MISRA 2004 Required Rule 8.9, undefined symbol: 'QF_invPwr2Lkup' 
-"D:\qp\qpc\include\qs.h" 750 1 Info 758: global enum '(untagged)' (line 750, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qep.h" 463 1 Info 769: global enumeration constant 'Q_RET_SUPER_SUB' (line 463, file D:\qp\qpc\include\qep.h) not referenced
 "D:\qp\qpc\include\qep.h" 468 1 Info 769: global enumeration constant 'Q_RET_IGNORED' (line 468, file D:\qp\qpc\include\qep.h) not referenced
 "D:\qp\qpc\include\qep.h" 475 1 Info 769: global enumeration constant 'Q_RET_NULL' (line 475, file D:\qp\qpc\include\qep.h) not referenced
@@ -165,104 +134,19 @@
 "D:\qp\qpc\include\qep.h" 604 1 Info 769: global enumeration constant 'Q_ENTRY_SIG' (line 604, file D:\qp\qpc\include\qep.h) not referenced
 "D:\qp\qpc\include\qep.h" 605 1 Info 769: global enumeration constant 'Q_EXIT_SIG' (line 605, file D:\qp\qpc\include\qep.h) not referenced
 "D:\qp\qpc\include\qep.h" 606 1 Info 769: global enumeration constant 'Q_INIT_SIG' (line 606, file D:\qp\qpc\include\qep.h) not referenced
-"D:\qp\qpc\include\qs.h" 57 1 Info 769: global enumeration constant 'QSpyRecords::QS_QP_RESET' (line 57, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 60 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_STATE_ENTRY' (line 60, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 61 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_STATE_EXIT' (line 61, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 62 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_STATE_INIT' (line 62, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 63 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_INIT_TRAN' (line 63, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 64 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_INTERN_TRAN' (line 64, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 65 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_TRAN' (line 65, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 66 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_IGNORED' (line 66, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 67 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_DISPATCH' (line 67, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 68 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_UNHANDLED' (line 68, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 71 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_ADD' (line 71, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 72 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_REMOVE' (line 72, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 73 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_SUBSCRIBE' (line 73, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 74 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_UNSUBSCRIBE' (line 74, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 75 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_POST_FIFO' (line 75, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 76 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_POST_LIFO' (line 76, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 77 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_GET' (line 77, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 78 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_GET_LAST' (line 78, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 79 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_INIT' (line 79, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 80 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_POST_FIFO' (line 80, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 81 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_POST_LIFO' (line 81, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 82 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_GET' (line 82, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 83 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_GET_LAST' (line 83, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 84 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_MPOOL_INIT' (line 84, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 85 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_MPOOL_GET' (line 85, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 86 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_MPOOL_PUT' (line 86, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 87 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_PUBLISH' (line 87, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 88 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_RESERVED8' (line 88, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 89 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_NEW' (line 89, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 90 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_GC_ATTEMPT' (line 90, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 91 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_GC' (line 91, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 92 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TICK' (line 92, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 93 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_ARM' (line 93, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 94 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_AUTO_DISARM' (line 94, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 95 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_DISARM_ATTEMPT' (line 95, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 96 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_DISARM' (line 96, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 97 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_REARM' (line 97, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 98 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_POST' (line 98, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 99 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_TIMEEVT_CTR' (line 99, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 100 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_CRIT_ENTRY' (line 100, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 101 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_CRIT_EXIT' (line 101, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 102 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ISR_ENTRY' (line 102, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 103 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ISR_EXIT' (line 103, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 104 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_INT_DISABLE' (line 104, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 105 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_INT_ENABLE' (line 105, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 106 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_ACTIVE_POST_ATTEMPT' (line 106, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 107 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_EQUEUE_POST_ATTEMPT' (line 107, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 108 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_MPOOL_GET_ATTEMPT' (line 108, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 109 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_RESERVED1' (line 109, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 110 1 Info 769: global enumeration constant 'QSpyRecords::QS_QF_RESERVED0' (line 110, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 113 1 Info 769: global enumeration constant 'QSpyRecords::QS_QK_MUTEX_LOCK' (line 113, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 114 1 Info 769: global enumeration constant 'QSpyRecords::QS_QK_MUTEX_UNLOCK' (line 114, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 115 1 Info 769: global enumeration constant 'QSpyRecords::QS_QK_SCHEDULE' (line 115, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 116 1 Info 769: global enumeration constant 'QSpyRecords::QS_QK_RESERVED1' (line 116, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 117 1 Info 769: global enumeration constant 'QSpyRecords::QS_QK_RESERVED0' (line 117, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 120 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_TRAN_HIST' (line 120, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 121 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_TRAN_EP' (line 121, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 122 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_TRAN_XP' (line 122, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 123 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_RESERVED1' (line 123, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 124 1 Info 769: global enumeration constant 'QSpyRecords::QS_QEP_RESERVED0' (line 124, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 130 1 Info 769: global enumeration constant 'QSpyRecords::QS_USR_DICT' (line 130, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 131 1 Info 769: global enumeration constant 'QSpyRecords::QS_EMPTY' (line 131, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 132 1 Info 769: global enumeration constant 'QSpyRecords::QS_RESERVED3' (line 132, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 133 1 Info 769: global enumeration constant 'QSpyRecords::QS_RESERVED2' (line 133, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 134 1 Info 769: global enumeration constant 'QSpyRecords::QS_TEST_RUN' (line 134, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 135 1 Info 769: global enumeration constant 'QSpyRecords::QS_TEST_FAIL' (line 135, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 136 1 Info 769: global enumeration constant 'QSpyRecords::QS_ASSERT_FAIL' (line 136, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 139 1 Info 769: global enumeration constant 'QSpyRecords::QS_USER' (line 139, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 751 1 Info 769: global enumeration constant 'QS_I8_T' (line 751, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 752 1 Info 769: global enumeration constant 'QS_U8_T' (line 752, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 753 1 Info 769: global enumeration constant 'QS_I16_T' (line 753, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 754 1 Info 769: global enumeration constant 'QS_U16_T' (line 754, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 755 1 Info 769: global enumeration constant 'QS_I32_T' (line 755, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 756 1 Info 769: global enumeration constant 'QS_U32_T' (line 756, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 757 1 Info 769: global enumeration constant 'QS_F32_T' (line 757, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 758 1 Info 769: global enumeration constant 'QS_F64_T' (line 758, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 759 1 Info 769: global enumeration constant 'QS_STR_T' (line 759, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 760 1 Info 769: global enumeration constant 'QS_MEM_T' (line 760, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 761 1 Info 769: global enumeration constant 'QS_SIG_T' (line 761, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 762 1 Info 769: global enumeration constant 'QS_OBJ_T' (line 762, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 763 1 Info 769: global enumeration constant 'QS_FUN_T' (line 763, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 764 1 Info 769: global enumeration constant 'QS_I64_T' (line 764, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 765 1 Info 769: global enumeration constant 'QS_U64_T' (line 765, file D:\qp\qpc\include\qs.h) not referenced
-"D:\qp\qpc\include\qs.h" 766 1 Info 769: global enumeration constant 'QS_U32_HEX_T' (line 766, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h" 27 1 Info 769: global enumeration constant 'DPPSignals::MAX_PUB_SIG' (line 27, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h) not referenced
 "D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h" 31 1 Info 769: global enumeration constant 'DPPSignals::MAX_SIG' (line 31, file D:\qp\qpc\examples\arm-cm\dpp_ek-tm4c123gxl\dpp.h) not referenced
 
 Count   Type    Number  Text
 
-16      Warning 526     Symbol '___' (___) not defined
+11      Warning 526     Symbol '___' (___) not defined
 2       Warning 527     Unreachable code at token '___'
 2       Warning 530     Symbol '___' (___) not initialized
-2       Warning 537     Repeated include file '___'
 2       Warning 618     Storage class specified after a type
-1       Info    758     global ___ '___' (___) not referenced
 3       Info    759     header declaration for symbol '___' defined at (___) could be moved from header to module
 3       Info    765     external '___' (___) could be made static
-95      Info    769     global enumeration constant '___' (___) not referenced
+11      Info    769     global enumeration constant '___' (___) not referenced
+2       Info    818     Pointer parameter '___' (___) could be declared as pointing to const
 2       Note    950     Non-ANSI reserved word or construct: '___'
-108     Note    960     Violates MISRA 2004 Required Rule ___, ___
+81      Note    960     Violates MISRA 2004 Required Rule ___, ___
 2       Note    963     Qualifier const or volatile ___ a type; use ___ to reverse the test

+ 0 - 80
examples/arm-cm/dpp_ek-tm4c123gxl/lint/options_gcc.lnt

@@ -1,80 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Product: PC-Lint 9.x option file for linting QP/C applications
-// Last Updated for Version: 5.4.0
-// Date of the Last Update:  2015-03-19
-//
-//                    Q u a n t u m     L e a P s
-//                    ---------------------------
-//                    innovating embedded systems
-//
-// Copyright (C) Quantum Leaps, www.state-machine.com.
-//
-// This program is open source software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Alternatively, this program may be distributed and modified under the
-// terms of Quantum Leaps commercial licenses, which expressly supersede
-// the GNU General Public License and are specifically designed for
-// licensees interested in retaining the proprietary status of their code.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Contact information:
-// Web:   www.state-machine.com
-// Email: info@state-machine.com
-//////////////////////////////////////////////////////////////////////////////
-
-// the location of the GNU ARM includes (need to adjust!!!)
--iC:\tools\CodeSourcery\arm-none-eabi\include
-
-// the location of the QTools lint directory (need to adjust!!!)
--i%QTOOLS%\lint
-
--i%QPC%\include               // QP/C includes
--i%QPC%\ports\arm-cm\qk\gcc   // QP/C port includes
--i%QPC%\3rd_partyCMSIS\Include // CMSIS directory
-
-co-gnu-arm.lnt                // GCC ARM compiler
-au-misra2.lnt                 // MISRA-C:2004 rules
-au-ds.lnt                     // Dan Saks recommendations
-lib-qpc.lnt                   // QP/C options
-//-strong(AXJ)                  // Strong type checking
-
-// library headers
--wlib(1)                      // ignore warnings from library headers
-+libclass(angle)              // consider only <...> headers as library
-+libdir(%QPC%\ports\arm-cm\cmsis)
-//-vf                           // print names of all header & source files
-
--emacro(923, UINT2PTR_CAST)   // cast from unsigned int to pointer
--emacro(946, PHILO_ID)        // MISRA04-17.2(req), subtraction of pointers
--emacro(947, PHILO_ID)        // MISRA04-17.2(req), subtraction of pointers
--emacro(960, PHILO_ID)        // MISRA04-17.4(req), pointer arithmetic
--estring(961,                 // MISRA04-19.7(adv) Function-like macro
- QF_SET_BASEPRI,
- PHILO_ID,
- RIGHT,
- LEFT)
--esym(960,                    // MISRA04-19.4(req), disallowed macro definition
- QF_SET_BASEPRI,
- THINK_TIME,
- EAT_TIME)
--emacro(717,                  // do ... while(0);
- QK_ISR_ENTRY,
- QK_ISR_EXIT)
--esym(522, Q_onAssert)        // Highest operation, function lacks side-effects
-
-// not referenced symbols
--e714                         // symbol '...' not referenced
--e755                         // global macro '...' not referenced
--e756                         // global typedef '...' not referenced
--e757                         // global declarator '...' not referenced
--e768                         // struct member '...' not referenced

+ 0 - 81
examples/arm-cm/dpp_ek-tm4c123gxl/lint/options_iar.lnt

@@ -1,81 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Product: PC-Lint 9.x option file for linting QP/C applications
-// Last Updated for Version: 5.4.0
-// Date of the Last Update:  2015-03-19
-//
-//                    Q u a n t u m     L e a P s
-//                    ---------------------------
-//                    innovating embedded systems
-//
-// Copyright (C) Quantum Leaps, LLC. All rights reserved.
-//
-// This program is open source software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Alternatively, this program may be distributed and modified under the
-// terms of Quantum Leaps commercial licenses, which expressly supersede
-// the GNU General Public License and are specifically designed for
-// licensees interested in retaining the proprietary status of their code.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Contact information:
-// Web:   http://www.state-machine.com
-// Email: info@state-machine.com
-//////////////////////////////////////////////////////////////////////////////
-
-// the location of the IAR ARM includes (need to adjust!!!)
--iC:\tools\IAR\ARM_KS_7.30\arm\inc\c
-
-// the location of the QTools lint directory (need to adjust!!!)
--i%QTOOLS%\lint
-
--i%QPC%\include               // QP/C includes
--i%QPC%\ports\arm-cm\qk\iar   // QP/C port includes
--i%QPC%\ports\arm-cm\cmsis    // CMSIS directory
-
--D__ARM7M__=1                 // define for Cortex-M3/M4
--D__ARM6M__=0                 // define for Cortex-M0/M0+
-
-co-iar-arm.lnt                // IAR ARM compiler
-au-misra2.lnt                 // MISRA-C:2004 rules
-au-ds.lnt                     // Dan Saks recommendations
-lib-qpc.lnt                   // QP/C options
-//-strong(AXJ)                  // Strong type checking
-
-// library headers
--wlib(1)                      // ignore warnings from library headers
-+libclass(angle)              // consider only <...> headers as library
-+libdir(%QPC%\ports\arm-cm\cmsis)
-//-vf                           // print names of all header & source files
-
-
--emacro(923, UINT2PTR_CAST)   // cast from unsigned int to pointer
--emacro(946, PHILO_ID)        // MISRA04-17.2(req), subtraction of pointers
--emacro(947, PHILO_ID)        // MISRA04-17.2(req), subtraction of pointers
--emacro(960, PHILO_ID)        // MISRA04-17.4(req), pointer arithmetic
--estring(961,                 // MISRA04-19.7(adv) Function-like macro
- PHILO_ID,
- RIGHT,
- LEFT)
--esym(960,                    // MISRA04-19.4(req), disallowed macro definition
- THINK_TIME,
- EAT_TIME)
--emacro(717,                  // do ... while(0);
- QK_ISR_ENTRY,
- QK_ISR_EXIT)
-
-// not referenced symbols
--e714                         // symbol '...' not referenced
--e755                         // global macro '...' not referenced
--e756                         // global typedef '...' not referenced
--e757                         // global declarator '...' not referenced
--e768                         // struct member '...' not referenced

+ 71 - 0
examples/arm-cm/dpp_nucleo-l053r8/qk/arm/README.txt

@@ -0,0 +1,71 @@
+About this Example
+==================
+This example demonstrates how to use the uVision IDE together with
+the MDK-ARM toolchain.
+
+***
+NOTE: This example requires installing the following Software Pack
+in the Keil uVision: Keil::STM32L0xx_DFP.
+***
+
+
+uVision Project File
+====================
+The MDK-ARM uVision project file provided with this example uses
+relative paths to the QP/C framework location (includes, port, and
+libraries. These relative paths must be modified when the project
+is moved to different relative location.
+
+
+Adjusting Stack and Heap Sizes
+==============================
+The stack and heap sizes are determined in this project by the 
+command-line options for the ARM assembler (see the Asm tab in
+the "Options for Target" dialog box in uVision). Specifically,
+you should define symbols: Stack_Size=xxx Heap_Size=yyy, where
+xxx represents a numerical value of stack size and yyy the
+numberical value of the heap size.
+  
+
+Startup Code
+============
+The startup code for the STM32L1xx MCU used in this project is
+located in the "3rd_party" folder in the following location:
+
+3rd_party\nucleo-l053r8\arm\startup_stm32l053xx.s
+
+The file startup_stm32l053xx.s provides a template of the recommended
+startup for QP applications and should be easily customizable for other
+ARM Cortex-M microcontrollers.
+
+The startup file typically does not need to be modified or adapted for
+applications. It provides only weak definitions of all exception and
+interrupt handlers, as well as the assert_failed() function.  
+
+The weak function assert_failed() defined in this file might be re-defined
+in the application to customize it for the application-specific error-
+handling policy.
+
+***
+NOTE: The function assert_failed() typically should NOT use the stack,
+because stack might be corrupted by the time this function is called.
+Also, assert_failed() is intended to handle catastrophic errors and
+should NOT return.
+***
+
+  
+Adjusting the CPU Clock Speed
+=============================
+The current setting is to run at 2MHz from the MSI (internal oscillator),
+but the CPU clock speed can be modified by editing the file
+system_stm32l1xx.c. Ther file system_stm32l0xx.c.pll provides an example
+of clock setting using the PLL driven from the MSE.
+
+***
+NOTE:
+The NUCLEO boards have a wide range of possible clock selections, depending
+on the solder bridge configuration. Please see Chapter 5.7 "OSC clock" in
+the STM32 NUCLEO Boards User Manual (ST document UM1724) for more information. 
+***
+
+  

+ 71 - 0
examples/arm-cm/dpp_nucleo-l053r8/qv/arm/README.txt

@@ -0,0 +1,71 @@
+About this Example
+==================
+This example demonstrates how to use the uVision IDE together with
+the MDK-ARM toolchain.
+
+***
+NOTE: This example requires installing the following Software Pack
+in the Keil uVision: Keil::STM32L0xx_DFP.
+***
+
+
+uVision Project File
+====================
+The MDK-ARM uVision project file provided with this example uses
+relative paths to the QP/C framework location (includes, port, and
+libraries. These relative paths must be modified when the project
+is moved to different relative location.
+
+
+Adjusting Stack and Heap Sizes
+==============================
+The stack and heap sizes are determined in this project by the 
+command-line options for the ARM assembler (see the Asm tab in
+the "Options for Target" dialog box in uVision). Specifically,
+you should define symbols: Stack_Size=xxx Heap_Size=yyy, where
+xxx represents a numerical value of stack size and yyy the
+numberical value of the heap size.
+  
+
+Startup Code
+============
+The startup code for the STM32L1xx MCU used in this project is
+located in the "3rd_party" folder in the following location:
+
+3rd_party\nucleo-l053r8\arm\startup_stm32l053xx.s
+
+The file startup_stm32l053xx.s provides a template of the recommended
+startup for QP applications and should be easily customizable for other
+ARM Cortex-M microcontrollers.
+
+The startup file typically does not need to be modified or adapted for
+applications. It provides only weak definitions of all exception and
+interrupt handlers, as well as the assert_failed() function.  
+
+The weak function assert_failed() defined in this file might be re-defined
+in the application to customize it for the application-specific error-
+handling policy.
+
+***
+NOTE: The function assert_failed() typically should NOT use the stack,
+because stack might be corrupted by the time this function is called.
+Also, assert_failed() is intended to handle catastrophic errors and
+should NOT return.
+***
+
+  
+Adjusting the CPU Clock Speed
+=============================
+The current setting is to run at 2MHz from the MSI (internal oscillator),
+but the CPU clock speed can be modified by editing the file
+system_stm32l1xx.c. Ther file system_stm32l0xx.c.pll provides an example
+of clock setting using the PLL driven from the MSE.
+
+***
+NOTE:
+The NUCLEO boards have a wide range of possible clock selections, depending
+on the solder bridge configuration. Please see Chapter 5.7 "OSC clock" in
+the STM32 NUCLEO Boards User Manual (ST document UM1724) for more information. 
+***
+
+  

+ 0 - 0
examples/arm7-9/dpp_at91sam7s-ek/qk/bsp.h → examples/arm7-9/dpp_at91sam7s-ek/bsp.h


+ 95 - 17
examples/arm7-9/dpp_at91sam7s-ek/qk/iar/bsp.c

@@ -48,22 +48,28 @@ typedef void (*IntVector)(void);  /* IntVector pointer-to-function */
 uint32_t get_MCK_FREQ(void);      /* CPU clock set up in __low_level_init() */
 
 uint32_t const l_led[] = {
-    (1 << 0),              /* LED D1 on AT91SAM7S-EK */
-    (1 << 1),              /* LED D2 on AT91SAM7S-EK */
-    (1 << 2),              /* LED D3 on AT91SAM7S-EK */
-    (1 << 3),              /* LED D4 on AT91SAM7S-EK */
-    0                      /* no LED 5  on AT91SAM7S-EK */
+    (1 << 0),  /* LED D1 on AT91SAM7S-EK */
+    (1 << 1),  /* LED D2 on AT91SAM7S-EK */
+    (1 << 2),  /* LED D3 on AT91SAM7S-EK */
+    (1 << 3)   /* LED D4 on AT91SAM7S-EK */
 };
 
-#define LED_ON(num_)       (AT91C_BASE_PIOA->PIO_CODR = l_led[num_])
-#define LED_OFF(num_)      (AT91C_BASE_PIOA->PIO_SODR = l_led[num_])
+#define LED_ON(num_)  (AT91C_BASE_PIOA->PIO_CODR = l_led[num_])
+#define LED_OFF(num_) (AT91C_BASE_PIOA->PIO_SODR = l_led[num_])
 
-static unsigned  l_rnd;    /* random seed */
+uint32_t const l_btn[] = {
+    (1U << 19), /* BTN P1 on AT91SAM7S-EK */
+    (1U << 20), /* BTN P2 on AT91SAM7S-EK */
+    (1U << 14), /* BTN P3 on AT91SAM7S-EK */
+    (1U << 15)  /* BTN P4 on AT91SAM7S-EK */
+};
+
+static unsigned l_rnd; /* random seed */
 
 #ifdef Q_SPY
 
     static uint8_t const l_ISR_tick = 0;
-    enum AppRecords {      /* application-specific trace records */
+    enum AppRecords { /* application-specific trace records */
         PHILO_STAT = QS_USER
     };
 
@@ -84,10 +90,40 @@ void BSP_irq(void) {
 /* ISRs --------------------------------------------------------------------*/
 __ramfunc
 static void ISR_tick(void) {
-    uint32_t volatile tmp = AT91C_BASE_PITC->PITC_PIVR;  /* clear interrupt */
-    (void)tmp; /* avoid the compiler warning about unused variable */
+    /* state of the button debouncing, see below */
+    static struct ButtonsDebouncing {
+        uint32_t depressed;
+        uint32_t previous;
+    } buttons = { ~0U, ~0U };
+    uint32_t current;
+    uint32_t volatile tmp;
+
+    /* clear the interrupt source */
+    tmp = AT91C_BASE_PITC->PITC_PIVR;
 
     QF_TICK_X(0U, &l_ISR_tick); /* process all time events at tick rate 0 */
+
+    /* Perform the debouncing of buttons. The algorithm for debouncing
+    * adapted from the book "Embedded Systems Dictionary" by Jack Ganssle
+    * and Michael Barr, page 71.
+    */
+    current = ~AT91C_BASE_PIOA->PIO_PDSR;/* read PIOA with state of Buttons */
+    tmp = buttons.depressed; /* save the debounced depressed buttons */
+    buttons.depressed |= (buttons.previous & current); /* set depressed */
+    buttons.depressed &= (buttons.previous | current); /* clear released */
+    buttons.previous   = current; /* update the history */
+    tmp ^= buttons.depressed;     /* changed debounced depressed */
+    if ((tmp & l_btn[0]) != 0U) {  /* debounced BTN_P1 state changed? */
+        if ((buttons.depressed & l_btn[0]) != 0U) { /* is BTN_P1 depressed? */
+            static QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
+            QF_PUBLISH(&pauseEvt, &l_ISR_tick);
+        }
+        else {            /* the button is released */
+            static QEvt const serveEvt = { SERVE_SIG, 0U, 0U};
+            QF_PUBLISH(&serveEvt, &l_ISR_tick);
+        }
+
+    }
 }
 /*..........................................................................*/
 __ramfunc
@@ -99,12 +135,28 @@ static void ISR_spur(void) {
 void BSP_init(void) {
     uint32_t i;
 
-    for (i = 0; i < Q_DIM(l_led); ++i) {      /* initialize the LEDs... */
+    /* When using the JTAG debugger the AIC might not be initialised
+    * to the correct default state. This line ensures that AIC does not
+    * mask all interrupts at the start.
+    */
+    AT91C_BASE_AIC->AIC_EOICR = 0U;
+
+    /* enable peripheral clock for PIOA */
+    AT91C_BASE_PMC->PMC_PCER = (1U << AT91C_ID_PIOA);
+
+    /* initialize the LEDs... */
+    for (i = 0; i < Q_DIM(l_led); ++i) {
         AT91C_BASE_PIOA->PIO_PER = l_led[i];  /* enable pin */
         AT91C_BASE_PIOA->PIO_OER = l_led[i];  /* configure as output pin */
         LED_OFF(i);                           /* extinguish the LED */
     }
 
+    /* initialize the Buttons... */
+    for (i = 0; i < Q_DIM(l_btn); ++i) {
+        AT91C_BASE_PIOA->PIO_ODR = l_btn[i]; /* disable output (input pin) */
+        AT91C_BASE_PIOA->PIO_PER = l_btn[i]; /* enable pin */
+    }
+
     /* configure Advanced Interrupt Controller (AIC) of AT91... */
     AT91C_BASE_AIC->AIC_IDCR = ~0;            /* disable all interrupts */
     AT91C_BASE_AIC->AIC_ICCR = ~0;            /* clear all interrupts */
@@ -129,11 +181,17 @@ void BSP_terminate(int16_t result) {
 }
 /*..........................................................................*/
 void BSP_displayPhilStat(uint8_t n, char const *stat) {
-    if (stat[0] == (uint8_t)'e') { /* is this Philosopher eating? */
-        LED_ON(n);
+    if (stat[0] == 'h') {
+        LED_ON(0);  /* turn LED on  */
     }
-    else {  /* this Philosopher is not eating */
-        LED_OFF(n);
+    else {
+        LED_OFF(0); /* turn LED off */
+    }
+    if (stat[0] == 'e') {
+        LED_ON(1);  /* turn LED on  */
+    }
+    else {
+        LED_OFF(1); /* turn LED off */
     }
 
     QS_BEGIN(PHILO_STAT, AO_Philo[n]) /* application-specific record begin */
@@ -143,7 +201,12 @@ void BSP_displayPhilStat(uint8_t n, char const *stat) {
 }
 /*..........................................................................*/
 void BSP_displayPaused(uint8_t paused) {
-    (void)paused;
+    if (paused != (uint8_t)0) {
+        LED_ON(2);  /* turn LED on  */
+    }
+    else {
+        LED_OFF(2); /* turn LED off */
+    }
 }
 /*..........................................................................*/
 uint32_t BSP_random(void) {  /* a very cheap pseudo-random-number generator */
@@ -183,6 +246,13 @@ void QF_onCleanup(void) {
 /*..........................................................................*/
 __ramfunc
 void QK_onIdle(void) {
+
+    /* toggle first LED on and off, see NOTE01 */
+    QF_INT_DISABLE();
+    LED_ON(3);  /* turn LED on  */
+    LED_OFF(3); /* turn LED off */
+    QF_INT_ENABLE();
+
 #ifdef Q_SPY
     /* use the idle cycles for QS transmission... */
 
@@ -361,3 +431,11 @@ uint32_t QS_onGetTime(void) {
 }
 #endif  /* Q_SPY */
 /*--------------------------------------------------------------------------*/
+
+/*****************************************************************************
+* NOTE01:
+* The User LED is used to visualize the idle loop activity. The brightness
+* of the LED is proportional to the frequency of invcations of the idle loop.
+* Please note that the LED is toggled with interrupts locked, so no interrupt
+* execution time contributes to the brightness of the User LED.
+*/

+ 0 - 47
examples/arm7-9/dpp_at91sam7s-ek/qv/bsp.h

@@ -1,47 +0,0 @@
-/*****************************************************************************
-* Product: DPP example
-* Last Updated for Version: 5.4.0
-* Date of the Last Update:  2015-04-02
-*
-*                    Q u a n t u m     L e a P s
-*                    ---------------------------
-*                    innovating embedded systems
-*
-* Copyright (C) Quantum Leaps, LLC. All rights reserved.
-*
-* This program is open source software: you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* Alternatively, this program may be distributed and modified under the
-* terms of Quantum Leaps commercial licenses, which expressly supersede
-* the GNU General Public License and are specifically designed for
-* licensees interested in retaining the proprietary status of their code.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* Contact information:
-* Web:   http://www.state-machine.com
-* Email: info@state-machine.com
-*****************************************************************************/
-#ifndef bsp_h
-#define bsp_h
-
-#define BSP_TICKS_PER_SEC    100U
-
-void BSP_init(void);
-void BSP_displayPaused(uint8_t paused);
-void BSP_displayPhilStat(uint8_t n, char_t const *stat);
-void BSP_terminate(int16_t result);
-
-void BSP_randomSeed(uint32_t seed); /* random seed */
-uint32_t BSP_random(void);          /* pseudo-random generator */
-
-#endif /* bsp_h */

+ 95 - 19
examples/arm7-9/dpp_at91sam7s-ek/qv/iar/bsp.c

@@ -1,7 +1,7 @@
 /*****************************************************************************
 * Product: DPP on AT91SAM7S-EK, cooperative QV kernel, IAR-ARM toolset
-* Last Updated for Version: 5.4.0
-* Date of the Last Update:  2015-04-01
+* Last Updated for Version: 5.4.1
+* Date of the Last Update:  2015-05-31
 *
 *                    Q u a n t u m     L e a P s
 *                    ---------------------------
@@ -48,22 +48,28 @@ typedef void (*IntVector)(void);  /* IntVector pointer-to-function */
 uint32_t get_MCK_FREQ(void);      /* CPU clock set up in __low_level_init() */
 
 uint32_t const l_led[] = {
-    (1 << 0),              /* LED D1 on AT91SAM7S-EK */
-    (1 << 1),              /* LED D2 on AT91SAM7S-EK */
-    (1 << 2),              /* LED D3 on AT91SAM7S-EK */
-    (1 << 3),              /* LED D4 on AT91SAM7S-EK */
-    0                      /* no LED 5  on AT91SAM7S-EK */
+    (1 << 0),  /* LED D1 on AT91SAM7S-EK */
+    (1 << 1),  /* LED D2 on AT91SAM7S-EK */
+    (1 << 2),  /* LED D3 on AT91SAM7S-EK */
+    (1 << 3)   /* LED D4 on AT91SAM7S-EK */
 };
 
-#define LED_ON(num_)       (AT91C_BASE_PIOA->PIO_CODR = l_led[num_])
-#define LED_OFF(num_)      (AT91C_BASE_PIOA->PIO_SODR = l_led[num_])
+#define LED_ON(num_)  (AT91C_BASE_PIOA->PIO_CODR = l_led[num_])
+#define LED_OFF(num_) (AT91C_BASE_PIOA->PIO_SODR = l_led[num_])
 
-static unsigned  l_rnd;    /* random seed */
+uint32_t const l_btn[] = {
+    (1U << 19), /* BTN P1 on AT91SAM7S-EK */
+    (1U << 20), /* BTN P2 on AT91SAM7S-EK */
+    (1U << 14), /* BTN P3 on AT91SAM7S-EK */
+    (1U << 15)  /* BTN P4 on AT91SAM7S-EK */
+};
+
+static unsigned l_rnd; /* random seed */
 
 #ifdef Q_SPY
 
     static uint8_t const l_ISR_tick = 0;
-    enum AppRecords {      /* application-specific trace records */
+    enum AppRecords { /* application-specific trace records */
         PHILO_STAT = QS_USER
     };
 
@@ -84,10 +90,40 @@ void BSP_irq(void) {
 /* ISRs --------------------------------------------------------------------*/
 __ramfunc
 static void ISR_tick(void) {
-    uint32_t volatile tmp = AT91C_BASE_PITC->PITC_PIVR;  /* clear interrupt */
-    (void)tmp; /* avoid the compiler warning about unused variable */
+    /* state of the button debouncing, see below */
+    static struct ButtonsDebouncing {
+        uint32_t depressed;
+        uint32_t previous;
+    } buttons = { ~0U, ~0U };
+    uint32_t current;
+    uint32_t volatile tmp;
+
+    /* clear the interrupt source */
+    tmp = AT91C_BASE_PITC->PITC_PIVR;
 
     QF_TICK_X(0U, &l_ISR_tick); /* process all time events at tick rate 0 */
+
+    /* Perform the debouncing of buttons. The algorithm for debouncing
+    * adapted from the book "Embedded Systems Dictionary" by Jack Ganssle
+    * and Michael Barr, page 71.
+    */
+    current = ~AT91C_BASE_PIOA->PIO_PDSR;/* read PIOA with state of Buttons */
+    tmp = buttons.depressed; /* save the debounced depressed buttons */
+    buttons.depressed |= (buttons.previous & current); /* set depressed */
+    buttons.depressed &= (buttons.previous | current); /* clear released */
+    buttons.previous   = current; /* update the history */
+    tmp ^= buttons.depressed;     /* changed debounced depressed */
+    if ((tmp & l_btn[0]) != 0U) {  /* debounced BTN_P1 state changed? */
+        if ((buttons.depressed & l_btn[0]) != 0U) { /* is BTN_P1 depressed? */
+            static QEvt const pauseEvt = { PAUSE_SIG, 0U, 0U};
+            QF_PUBLISH(&pauseEvt, &l_ISR_tick);
+        }
+        else {            /* the button is released */
+            static QEvt const serveEvt = { SERVE_SIG, 0U, 0U};
+            QF_PUBLISH(&serveEvt, &l_ISR_tick);
+        }
+
+    }
 }
 /*..........................................................................*/
 __ramfunc
@@ -99,12 +135,28 @@ static void ISR_spur(void) {
 void BSP_init(void) {
     uint32_t i;
 
-    for (i = 0; i < Q_DIM(l_led); ++i) {      /* initialize the LEDs... */
+    /* When using the JTAG debugger the AIC might not be initialised
+    * to the correct default state. This line ensures that AIC does not
+    * mask all interrupts at the start.
+    */
+    AT91C_BASE_AIC->AIC_EOICR = 0U;
+
+    /* enable peripheral clock for PIOA */
+    AT91C_BASE_PMC->PMC_PCER = (1U << AT91C_ID_PIOA);
+
+    /* initialize the LEDs... */
+    for (i = 0; i < Q_DIM(l_led); ++i) {
         AT91C_BASE_PIOA->PIO_PER = l_led[i];  /* enable pin */
         AT91C_BASE_PIOA->PIO_OER = l_led[i];  /* configure as output pin */
         LED_OFF(i);                           /* extinguish the LED */
     }
 
+    /* initialize the Buttons... */
+    for (i = 0; i < Q_DIM(l_btn); ++i) {
+        AT91C_BASE_PIOA->PIO_ODR = l_btn[i]; /* disable output (input pin) */
+        AT91C_BASE_PIOA->PIO_PER = l_btn[i]; /* enable pin */
+    }
+
     /* configure Advanced Interrupt Controller (AIC) of AT91... */
     AT91C_BASE_AIC->AIC_IDCR = ~0;            /* disable all interrupts */
     AT91C_BASE_AIC->AIC_ICCR = ~0;            /* clear all interrupts */
@@ -129,11 +181,17 @@ void BSP_terminate(int16_t result) {
 }
 /*..........................................................................*/
 void BSP_displayPhilStat(uint8_t n, char const *stat) {
-    if (stat[0] == (uint8_t)'e') { /* is this Philosopher eating? */
-        LED_ON(n);
+    if (stat[0] == 'h') {
+        LED_ON(0);  /* turn LED on  */
     }
-    else {  /* this Philosopher is not eating */
-        LED_OFF(n);
+    else {
+        LED_OFF(0); /* turn LED off */
+    }
+    if (stat[0] == 'e') {
+        LED_ON(1);  /* turn LED on  */
+    }
+    else {
+        LED_OFF(1); /* turn LED off */
     }
 
     QS_BEGIN(PHILO_STAT, AO_Philo[n]) /* application-specific record begin */
@@ -143,7 +201,12 @@ void BSP_displayPhilStat(uint8_t n, char const *stat) {
 }
 /*..........................................................................*/
 void BSP_displayPaused(uint8_t paused) {
-    (void)paused;
+    if (paused != (uint8_t)0) {
+        LED_ON(2);  /* turn LED on  */
+    }
+    else {
+        LED_OFF(2); /* turn LED off */
+    }
 }
 /*..........................................................................*/
 uint32_t BSP_random(void) {  /* a very cheap pseudo-random-number generator */
@@ -183,6 +246,11 @@ void QF_onCleanup(void) {
 /*..........................................................................*/
 __ramfunc
 void QV_onIdle(void) { /* NOTE: called with interrupts DISABLED */
+
+    /* toggle first LED on and off, see NOTE01 */
+    LED_ON(3);  /* turn LED on  */
+    LED_OFF(3); /* turn LED off */
+
 #ifdef Q_SPY
     /* use the idle cycles for QS transmission... */
 
@@ -365,3 +433,11 @@ uint32_t QS_onGetTime(void) {
 }
 #endif  /* Q_SPY */
 /*--------------------------------------------------------------------------*/
+
+/*****************************************************************************
+* NOTE01:
+* The User LED is used to visualize the idle loop activity. The brightness
+* of the LED is proportional to the frequency of invcations of the idle loop.
+* Please note that the LED is toggled with interrupts locked, so no interrupt
+* execution time contributes to the brightness of the User LED.
+*/

+ 0 - 38
examples/posix/README.txt

@@ -1,38 +0,0 @@
-The Makefiles provided with projects in this directory assume that
-the QP/C framework has been istalled on your machine and the
-environment variable QPC has been defined.
-
-Additionally, to build the SPY configuration, the Qtools collection
-must be also istalled on your machine and the environment variable
-QTOOLS has been defined.
-
-
-Editing the Environment Variables on Linux
-------------------------------------------
-You need to edit the ~/.bash_profile file to add the
-following line:
-
-export QPC=~/qpc
-export QTOOLS=~/qtools
-
-assuming that you have installed QP/C into ~/qpc and
-Qtools into ~/qtools.
-
-
-Editing the Environment Variables on Mac OS X
----------------------------------------------
-You need to edit the ~/.profile file to add the
-following line:
-
-export QPC=~/qpc
-export QTOOLS=~/qtools
-
-assuming that you have installed QP/C into ~/qpc and
-Qtools into ~/qtools.
-
-****
-NOTE: After updating envrinment variables, you should log off
-your account and then log on again so that all applications can
-pick up the changes.
-****
-

+ 1 - 0
examples/win32-qv/dpp/dpp.vcxproj

@@ -110,6 +110,7 @@
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <TargetMachine>MachineX86</TargetMachine>
+      <GenerateMapFile>true</GenerateMapFile>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='QSpy|Win32'">

+ 84 - 80
include/qpc.lnt

@@ -1,7 +1,7 @@
 //============================================================================
 // Product: PC-Lint 9.x option file for linting QP/C applications
-// Last updated for version 5.4.0
-// Last updated on  2015-05-08
+// Last updated for version 5.4.1
+// Last updated on  2015-05-31
 //
 //                    Q u a n t u m     L e a P s
 //                    ---------------------------
@@ -31,10 +31,25 @@
 // Web:   http://www.state-machine.com
 // Email: info@state-machine.com
 //============================================================================
+
+// General
+-estring(793,6)       // ANSI/ISO limit of 6 significant chars exceeded
+-emacro((960),        // MISRA04-17.4(req) pointer arithmetic
+ Q_DIM,
+ Q_UINT2PTR_CAST)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
+ Q_DIM,
+ Q_UINT2PTR_CAST)
+-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
+ Q_UINT2PTR_CAST)
+-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
+ Q_UINT2PTR_CAST)
+
 
 // Assertions
--estring(960, Q_this_module_) // MISRA04-8.7(req) could use block scope
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(960,         // MISRA04-8.7(req) could use block scope
+ Q_this_module_)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  Q_ASSERT,
  Q_ASSERT_ID,
  Q_ALLEGE,
@@ -50,7 +65,7 @@
  Q_ASSERT_COMPILE,
  Q_TEST_ASSERT,
  Q_DEFINE_THIS_MODULE)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  Q_ALLEGE,
  Q_ALLEGE_ID,
  Q_ERROR,
@@ -64,45 +79,35 @@
  Q_DEFINE_THIS_FILE,
  Q_ASSERT_COMPILE,
  Q_TEST_ASSERT)
--esym(960,                    // MISRA04-19.10(req) unparenthesized macro par
+-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
  Q_DEFINE_THIS_MODULE)
--estring(9022,                // MISRA04-19.10(req) unparenthesized macro parameter
+-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
  Q_DEFINE_THIS_MODULE)
--emacro(522,                  // Highest operation lacks side-effects
+-emacro(522,          // Highest operation lacks side-effects
  Q_ASSERT,
  Q_ERROR,
  Q_ALLEGE)
--function(exit, Q_onAssert)   // give Q_onAssert() the semantics of "exit"
--estring(752,Q_assert_compile) // not referenced
+-function(exit,       // give Q_onAssert() the semantics of "exit"
+ Q_onAssert)
+-estring(752,         // not referenced
+ Q_assert_compile)
 
 // QEP
--emacro(740,                  // MISRA04-1.2(req) incompatible indirect types
+-emacro(740,          // MISRA04-1.2(req) incompatible indirect types
  Q_MSM_UPCAST)
--emacro((960),                // MISRA04-17.4(req) pointer arithmetic
- Q_DIM,
- Q_UINT2PTR_CAST)
--esym(960,                    // MISRA04-19.10(req) unparenthesized macro par
- Q_EVT_CAST,
- Q_UINT2PTR_CAST)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
+ Q_EVT_CAST)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  Q_MSM_UPCAST,
- Q_EVT_CAST,
- Q_DIM,
- Q_UINT2PTR_CAST)
--emacro(929,                  // MISRA04-11.4(adv) cast pointer to pointer
+ Q_EVT_CAST)
+-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
  Q_MSM_UPCAST,
  Q_EVT_CAST)
--estring(9022,                // MISRA04-19.10(req) unparenthesized macro parameter
- Q_EVT_CAST,
- Q_UINT2PTR_CAST)
--esym(960,                    // MISRA04-19.4(req) disallowed macro definition
- QFsm,
- QFsm_ctor,
- QF_onIdle)
--emacro(866, Q_DIM)           // Unusual use of 'SYM' in argument to sizeof
+-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
+ Q_EVT_CAST)
 
--emacro(740,                  // MISRA04-1.2(req) pointer cast
- Q_STATE_CAST,                // (incompatible indirect types)
+-emacro(740,          // MISRA04-1.2(req) pointer cast
+ Q_STATE_CAST,        // (incompatible indirect types)
  Q_TRAN,
  Q_TRAN_HIST,
  Q_SUPER,
@@ -113,7 +118,7 @@
  QM_TRAN_HIST,
  QM_TRAN_EP,
  QM_TRAN_XP)
--emacro(929,                  // MISRA04-11.4(adv) cast pointer to pointer
+-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
  Q_STATE_CAST,
  Q_ACTION_CAST,
  Q_TRAN,
@@ -125,11 +130,11 @@
  QM_TRAN_HIST,
  QM_TRAN_EP,
  QM_TRAN_XP)
--emacro(960,                  // MISRA04-11.1(req) Conversions involving
- Q_STATE_CAST,                // fun. pointers must be to/from integral types
+-emacro(960,          // MISRA04-11.1(req) Conversions involving
+ Q_STATE_CAST,        // fun. pointers must be to/from integral types
  Q_ACTION_CAST)
 
--emacro(960,                  // MISRA04-12.10(req) comma operator used
+-emacro(960,          // MISRA04-12.10(req) comma operator used
  Q_TRAN,
  Q_TRAN_HIST,
  Q_SUPER,
@@ -138,8 +143,9 @@
  QM_TRAN,
  QM_TRAN_INIT,
  QM_TRAN_HIST)
--estring(960, QMAttr)         // MISRA04-18.4(req) declaration of union type
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(960,         // MISRA04-18.4(req) declaration of union type
+ QMAttr)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  Q_ROM_BYTE,
  QMsm_stateObj,
  QHsm_state,
@@ -152,7 +158,7 @@
  Q_STATE_CAST,
  Q_ACTION_CAST,
  QEP_getVersion)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QMSM_INIT,
  QMSM_DISPATCH,
  QM_ENTRY,
@@ -166,20 +172,18 @@
  QM_SUPER_SUB,
  QM_HANDLED,
  QM_UNHANDLED)
--esym(754,                    // Info: local structure member not referenced
+-esym(754,            // Info: local structure member not referenced
  target,
  act)
--esym(715, me)                // Info: Symbol 'me' not referenced
--esym(818, me)                // Info: Pointer 'me' could be pointing to const 
 
 // QF
--emacro(950,                  // MISRA04-2.1(req) assembly language
+-emacro(950,          // MISRA04-2.1(req) assembly language
  QF_INT_DISABLE,
  QF_INT_ENABLE,
  QF_CRIT_ENTRY,
  QF_CRIT_EXIT,
  QF_LOG2)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  Q_NEW,
  Q_NEW_X,
  QF_INT_DISABLE,
@@ -197,7 +201,7 @@
  QACTIVE_POST,
  QACTIVE_POST_X,
  QACTIVE_POST_LIFO)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QEQueue_getNFree,
  QEQueue_getNMin,
  QEQueue_isEmpty,
@@ -217,14 +221,14 @@
  QTimeEvt_postIn,
  QTimeEvt_postEvery,
  QF_getVersion)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QF_QS_CRIT_EXIT,
  QF_QS_CRIT_ENTRY,
  QF_QS_CRIT_EXIT,
  QF_QS_ISR_ENTRY,
  QF_QS_ISR_EXIT,
  QF_QS_ACTION)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QACTIVE_EQUEUE_WAIT_,
  QACTIVE_EQUEUE_SIGNAL_,
  QACTIVE_EQUEUE_ONEMPTY_,
@@ -236,7 +240,7 @@
  QF_tick,
  QActive_postFIFO,
  QEQueue_postFIFO)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QF_INT_DISABLE,
  QF_INT_ENABLE,
  QF_CRIT_ENTRY,
@@ -253,33 +257,34 @@
  QF_ACTIVE_STATE_,
  QPSet8_findMax,
  QTimeEvt_ctor)
--emacro(929,                  // MISRA04-11.4(adv) cast from pointer to pointer
+-emacro(929,          // MISRA04-11.4(adv) cast from pointer to pointer
  Q_NEW,
  Q_NEW_X,
  QACTIVE_POST,
  QACTIVE_POST_LIFO)
--emacro(960, QF_PTR_INC_)     // MISRA04-17.4(req) pointer increment
--emacro(717,                  // do ... while(0)
+-emacro(960,          // MISRA04-17.4(req) pointer increment
+ QF_PTR_INC_)
+-emacro(717,          // do ... while(0)
  QPSet64_insert,
  QPSet64_remove,
  QPSet64_findMax,
  QTimeEvt_postIn,
  QTimeEvt_postEvery)
--esym(960,                    // MISRA04-19.10(req) unparenthesized macro par
+-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
  Q_NEW,
  Q_NEW_X)
--estring(9022,                // MISRA04-19.10(req) unparenthesized macro parameter
+-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
  Q_NEW,
  Q_NEW_X)
--esym(641, *Signals)          // Converting enum '*Signals' to 'int'
--esym(754, sto_)              // local structure member 'sto' not referenced
+-esym(641, *Signals)  // Converting enum '*Signals' to 'int'
+-esym(754, sto_)      // local structure member 'sto' not referenced
 
 // QK
--emacro(950,                  // MISRA04-2.1(req) assembly language
+-emacro(950,          // MISRA04-2.1(req) assembly language
  QK_ISR_CONTEXT_,
  QK_ISR_ENTRY,
  QK_ISR_EXIT)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QK_ISR_CONTEXT_,
  QK_ISR_ENTRY,
  QK_ISR_EXIT,
@@ -287,24 +292,24 @@
  QK_EXT_RESTORE,
  QK_TLS,
  QK_getVersion)
--estring(960,                 // MISRA04-8.7(req) could use block scope
+-estring(960,         // MISRA04-8.7(req) could use block scope
  QK_intNest_,
  QF_maxPool_,
  QF_timeEvtHead_)
 
 // QV
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QV_getVersion)
 
 // QS
--emacro(506, QS_*)            // MISRA04-13.7(req) constant value boolean
-                              // MISRA04-14.1(req) no unreachable code
--emacro(774, QS_*)            // MISRA04-13.7(req) 'if' always True
-                              // MISRA04-14.1(req) no unreachable code
--emacro(923,                  // MISRA04-11.3(req) cast from pointer to int
+-emacro(506, QS_*)    // MISRA04-13.7(req) constant value boolean
+                      // MISRA04-14.1(req) no unreachable code
+-emacro(774, QS_*)    // MISRA04-13.7(req) 'if' always True
+                      // MISRA04-14.1(req) no unreachable code
+-emacro(923,          // MISRA04-11.3(req) cast from pointer to int
  QS_OBJ_,
  QS_FUN_)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QS_INIT,
  QS_EXIT,
  QS_DUMP,
@@ -323,12 +328,12 @@
  QS_END,
  QS_BEGIN_NOCRIT,
  QS_END_NOCRIT)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QS_BEGIN,
  QS_END,
  QS_BEGIN_NOCRIT,
  QS_END_NOCRIT)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QS_I8,
  QS_U8,
  QS_I16,
@@ -355,7 +360,7 @@
  QS_STR_ROM,
  QS_MEM,
  QS_SIG)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QS_CRIT_ENTRY_,
  QS_CRIT_EXIT_,
  QS_BEGIN_,
@@ -379,7 +384,7 @@
  QS_MPS_,
  QS_TEC_,
  QS_getVersion)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QS_CRIT_STAT_,
  QS_CRIT_ENTRY_,
  QS_CRIT_EXIT_,
@@ -394,16 +399,20 @@
  QS_END_NOCRIT_)
 -emacro(960,          // MISRA04-11.1(req) conversion of function pointers
  QS_FUN_DICTIONARY)
--emacro(929,                  // MISRA04-11.4(adv) cast pointer to pointer
+-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
  QS_FUN_DICTIONARY)
--estring(9022,                // MISRA04-19.10(req) unparenthesized macro parameter
+-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
  QF_QS_ISR_ENTRY,
  QF_QS_ISR_EXIT)
--emacro(717, QS_*)            // do ... while(0);
+-emacro(717, QS_*)    // do ... while(0);
 
 
-// Backwards compatibility layer of QP API
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+// Deprecated features--provided in the backwards compatibility API of QP/C
+-esym(960,            // MISRA04-19.4(req) disallowed macro definition
+ QFsm,
+ QFsm_ctor,
+ QF_onIdle)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QHsm_init,
  QHsm_dispatch,
  QFsm_init,
@@ -415,7 +424,7 @@
  QTimeEvt_ctor,
  QTimeEvt_postIn,
  QTimeEvt_postEvery)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QHsm_init,
  QHsm_dispatch,
  QFsm_init,
@@ -429,8 +438,3 @@
  QTimeEvt_postEvery)
 
 
-// Miscallaneous
--estring(793,6)   // ANSI/ISO limit of 6 significant chars exceeded
--e546             // Suspicious use of &
-
-

+ 4 - 4
ports/avr/qv/iar/qv_port.h

@@ -3,8 +3,8 @@
 * @brief QV/C port to AVRmega, IAR-AVR toolset
 * @cond
 ******************************************************************************
-* Last Updated for Version: 5.4.0
-* Date of the Last Update:  2015-04-08
+* Last Updated for Version: 5.4.1
+* Date of the Last Update:  2015-05-28
 *
 *                    Q u a n t u m     L e a P s
 *                    ---------------------------
@@ -40,8 +40,8 @@
 #define qv_port_h
 
 /* QV sleep mode, see NOTE1... */
-#define QV_CPU_SLEEP()          do { \
-    __disable_interrupt(); \
+#define QV_CPU_SLEEP()  do { \
+    __enable_interrupt(); \
     __sleep(); \
     SMCR = 0U; \
 } while (0)

+ 2 - 0
ports/lint/lint_qep.txt

@@ -484,6 +484,7 @@
 "D:\qp\qpc\include\qs.h" 1062 1 Info 768: global struct member 'QSPriv::seq' (line 1062, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1063 1 Info 768: global struct member 'QSPriv::chksum' (line 1063, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1065 1 Info 768: global struct member 'QSPriv::critNest' (line 1065, file D:\qp\qpc\include\qs.h) not referenced
+ Note 900: Successful completion, 473 messages produced
 
 Count   Type    Number  Text
 
@@ -497,4 +498,5 @@ Count   Type    Number  Text
 11      Info    765     external '___' (___) could be made static
 50      Info    768     global struct member '___' (___) not referenced
 76      Info    769     global enumeration constant '___' (___) not referenced
+1       Note    900     Successful completion, ___ messages produced
 90      Note    960     Violates MISRA 2004 Required Rule ___, ___

+ 2 - 0
ports/lint/lint_qf.txt

@@ -490,6 +490,7 @@
 "D:\qp\qpc\include\qs.h" 1062 1 Info 768: global struct member 'QSPriv::seq' (line 1062, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1063 1 Info 768: global struct member 'QSPriv::chksum' (line 1063, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1065 1 Info 768: global struct member 'QSPriv::critNest' (line 1065, file D:\qp\qpc\include\qs.h) not referenced
+ Note 900: Successful completion, 447 messages produced
 
 Count   Type    Number  Text
 
@@ -504,4 +505,5 @@ Count   Type    Number  Text
 28      Info    765     external '___' (___) could be made static
 30      Info    768     global struct member '___' (___) not referenced
 72      Info    769     global enumeration constant '___' (___) not referenced
+1       Note    900     Successful completion, ___ messages produced
 63      Note    960     Violates MISRA 2004 Required Rule ___, ___

+ 2 - 0
ports/lint/lint_qk.txt

@@ -533,6 +533,7 @@
 "D:\qp\qpc\include\qs.h" 1062 1 Info 768: global struct member 'QSPriv::seq' (line 1062, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1063 1 Info 768: global struct member 'QSPriv::chksum' (line 1063, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1065 1 Info 768: global struct member 'QSPriv::critNest' (line 1065, file D:\qp\qpc\include\qs.h) not referenced
+ Note 900: Successful completion, 522 messages produced
 
 Count   Type    Number  Text
 
@@ -546,4 +547,5 @@ Count   Type    Number  Text
 10      Info    765     external '___' (___) could be made static
 55      Info    768     global struct member '___' (___) not referenced
 101     Info    769     global enumeration constant '___' (___) not referenced
+1       Note    900     Successful completion, ___ messages produced
 90      Note    960     Violates MISRA 2004 Required Rule ___, ___

+ 2 - 0
ports/lint/lint_qs.txt

@@ -536,6 +536,7 @@
 "D:\qp\qpc\include\qs.h" 1054 1 Info 768: global struct member 'QSPriv::teObjFilter' (line 1054, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1055 1 Info 768: global struct member 'QSPriv::apObjFilter' (line 1055, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1065 1 Info 768: global struct member 'QSPriv::critNest' (line 1065, file D:\qp\qpc\include\qs.h) not referenced
+ Note 900: Successful completion, 521 messages produced
 
 Count   Type    Number  Text
 
@@ -549,4 +550,5 @@ Count   Type    Number  Text
 25      Info    765     external '___' (___) could be made static
 59      Info    768     global struct member '___' (___) not referenced
 96      Info    769     global enumeration constant '___' (___) not referenced
+1       Note    900     Successful completion, ___ messages produced
 75      Note    960     Violates MISRA 2004 Required Rule ___, ___

+ 2 - 0
ports/lint/lint_qv.txt

@@ -506,6 +506,7 @@
 "D:\qp\qpc\include\qs.h" 1062 1 Info 768: global struct member 'QSPriv::seq' (line 1062, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1063 1 Info 768: global struct member 'QSPriv::chksum' (line 1063, file D:\qp\qpc\include\qs.h) not referenced
 "D:\qp\qpc\include\qs.h" 1065 1 Info 768: global struct member 'QSPriv::critNest' (line 1065, file D:\qp\qpc\include\qs.h) not referenced
+ Note 900: Successful completion, 499 messages produced
 
 Count   Type    Number  Text
 
@@ -517,4 +518,5 @@ Count   Type    Number  Text
 4       Info    758     global ___ '___' (___) not referenced
 57      Info    768     global struct member '___' (___) not referenced
 104     Info    769     global enumeration constant '___' (___) not referenced
+1       Note    900     Successful completion, ___ messages produced
 87      Note    960     Violates MISRA 2004 Required Rule ___, ___

+ 67 - 54
ports/lint/options.lnt

@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 // Product: PC-Lint 9.x option file for linting QP/C
-// Last updated for version 5.4.0
-// Last updated on  2015-05-01
+// Last updated for version 5.4.1
+// Last updated on  2015-05-31
 //
 //                    Q u a n t u m     L e a P s
 //                    ---------------------------
@@ -33,58 +33,66 @@
 //////////////////////////////////////////////////////////////////////////////
 
 // library headers
-+libclass()       // lint all header files, including "foreign"
-//-vf             // print names of all source files
++libclass()           // lint all header files, including "foreign"
+//-vf                 // print names of all source files
 
-+fdi              // start #include search in directory of the including file
--i.               // QP/C port includes (see also qk/ and qv/)
--i../../include   // QP/C includes
++fdi                  // start #include search in dir of the including file
+-i.                   // QP/C port includes (see also qk/ and qv/)
+-i../../include       // QP/C includes
 
--si4              // sizeof(int) 
--ss2              // sizeof(short)
--spD4             // sizeof(void *)
--spP4             // sizeof(function pointer)
+-si4                  // sizeof(int) 
+-ss2                  // sizeof(short)
+-spD4                 // sizeof(void *)
+-spP4                 // sizeof(function pointer)
 
 
-au-misra2.lnt     // MISRA-C:2004 options
-au-ds.lnt         // Dan Saks recommendations
-qpc.lnt           // QP/C options
--strong(AXJ)      // Strong type checking
+au-misra2.lnt         // MISRA-C:2004 options
+au-ds.lnt             // Dan Saks recommendations
+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
--emacro(960,                  // MISRA04-14.3(req) null not in line by itself
+-emacro(960,          // MISRA04-14.3(req) null not in line by itself
  QEP_ENTER_,
  QEP_EXIT_)
--emacro(960,                  // MISR04-17.4(req), pointer arithmetic
+-emacro(960,          // MISR04-17.4(req), pointer arithmetic
  QEP_ACT_PTR_INC_)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QEP_TRIG_,
  QEP_ENTER_,
  QEP_EXIT_,
  QEP_ACT_PTR_INC_)
--emacro(717,                  // do ... while(0);
+-emacro(717,          // do ... while(0);
  QEP_ENTER_,
  QEP_EXIT_)
--efunc(632, QHsm_init)        // Assignment to strong type 'QStateHandler'
--efunc(661, QMsm_execTatbl_)  // Possible access of out-of-bounds pointer
--efunc(644, QMsm_enterHistory_) // Variable 'entry' may not be initialized 
+-efunc(632,           // Assignment to strong type 'QStateHandler'
+ QHsm_init)
+ -efunc(661,          // Possible access of out-of-bounds pointer
+ QMsm_execTatbl_)
+-efunc(644,           // Variable 'entry' may not be initialized 
+ QMsm_enterHistory_)
 
 // QF
--emacro(960,                  // MISRA04-11.5(req) cast away const
+-emacro(960,          // MISRA04-11.5(req) cast away const
  QF_EVT_REF_CTR_INC_,
  QF_EVT_REF_CTR_DEC_,
  QF_EPOOL_PUT_)
--esym(960, QF_log2Lkup)       // MISRA04-8.7(req) could define at block scope 
--emacro(960, QF_PTR_AT_)      // MISRA04-17.4(req) pointer arithmetic
--estring(960, QF_readySet_)   // MISRA04-8.7(req) could use block scope
--emacro(946, QF_PTR_RANGE_)   // MISRA04-17.2(req),17.3(req)
-                              // Relation or subtraction applied to pointers
--emacro(929,                  // MISRA04-11.4(adv) cast pointer to pointer
+-esym(960,            // MISRA04-8.7(req) could define at block scope 
+ QF_log2Lkup)
+-emacro(960,          // MISRA04-17.4(req) pointer arithmetic
+ QF_PTR_AT_)
+-emacro(946,          // MISRA04-17.2(req),17.3(req)
+ QF_PTR_RANGE_)       // Relation or subtraction applied to pointers
+-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
  QF_EVT_REF_CTR_INC_,
  QF_EVT_REF_CTR_DEC_,
  QF_EPOOL_PUT_)
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QF_EVT_REF_CTR_INC_,
  QF_EVT_REF_CTR_DEC_,
  QF_PTR_AT_,
@@ -92,7 +100,7 @@ qpc.lnt           // QP/C options
  QF_CRIT_EXIT_,
  QF_PTR_RANGE_,
  QF_MPOOL_EL)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QF_EPOOL_TYPE_,
  QF_ACTIVE_SUPER_,
  QF_ACTIVE_STATE_,
@@ -101,46 +109,50 @@ qpc.lnt           // QP/C options
  QACTIVE_EQUEUE_WAIT_,
  QACTIVE_EQUEUE_SIGNAL_,
  QACTIVE_EQUEUE_ONEMPTY_)
--efunc(818,                   // MISRA04-16.7(adv) 'stkSto' could be const
+-efunc(818,           // MISRA04-16.7(adv) 'stkSto' could be const
  QActive_start_)
--efunc(527, QF_run)           // MISRA04-14.17(req) Unreachable code
--efunc(550, QF_tick)          // Symbol 'dummy' not accessed
--emacro({717},                // do ... while(0);
+-efunc(527, QF_run)   // MISRA04-14.17(req) Unreachable code
+-efunc(550, QF_tick)  // Symbol 'dummy' not accessed
+-emacro({717},        // do ... while(0);
  QACTIVE_EQUEUE_SIGNAL_,
  QACTIVE_EQUEUE_ONEMPTY_)
--esym(960, 8.8)   // MISRA04-8.8(req) Seems to be checked incorrectly...
+-esym(960, 8.8)       // MISRA04-8.8(req) Seems to be checked incorrectly...
 
 // QK
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QF_CRIT_ENTRY_,
  QF_CRIT_EXIT_)
--esym(960,                    // MISRA04-8.7(req) could define at block scope
+-esym(960,            // MISRA04-8.7(req) could define at block scope
  impure_ptr)
+
+// QV
+
  
 // QS -- the following options are needed only when Q_SPY is defined
--emacro(960,                  // MISR04-17.4(req), pointer arithmetic
+-emacro(960,          // MISR04-17.4(req), pointer arithmetic
  QS_PTR_AT_,
  QS_PTR_INC_)
--efunc(960,                   // MISRA04-18.4(req) declaration of union
+-efunc(960,           // MISRA04-18.4(req) declaration of union
  QS_f32,
  QS_f64)
--estring(960, QS_seq_)        // MISRA04-8.7(req) could use block scope
--estring(961,                 // MISRA04-19.7(adv) function-like macro
+-estring(960,         // MISRA04-8.7(req) could use block scope
+ QS_seq_)
+-estring(961,         // MISRA04-19.7(adv) function-like macro
  QS_INSERT_BYTE,
  QS_INSERT_ESC_BYTE,
  QS_INSERT_CHKSUM_BYTE,
  QS_PTR_AT_,
  QS_PTR_INC_)
--emacro(506,                  // MISRA04-13.7(req) & 14.1(req)
+-emacro(506,          // MISRA04-13.7(req) & 14.1(req)
  QS_BEGIN_,
  QS_BEGIN_NOCRIT_)
--emacro(923,                  // MISRA04-11.1(req) & 11.3(req)
+-emacro(923,          // MISRA04-11.1(req) & 11.3(req)
  QS_OBJ_,
  QS_FUN_)
--emacro(572,                  // MISRA04-12.8(req) excessive shift value
+-emacro(572,          // MISRA04-12.8(req) excessive shift value
  QS_BEGIN_,
  QS_BEGIN_NOCRIT_)
--esym(960,                    // MISRA04-19.4(req) Disallowed macro definition
+-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
  QS_BEGIN_,
  QS_END_,
  QS_BEGIN_NOCRIT_,
@@ -153,23 +165,24 @@ qpc.lnt           // QP/C options
  QS_MPS_,
  QS_MPC_,
  QS_TEC_)
--emacro(961, QS_TEC_)         // MISRA04-12.13(adv)
--emacro(774,                  // Boolean within 'if' always False
+-emacro(961, QS_TEC_) // MISRA04-12.13(adv)
+-emacro(774,          // Boolean within 'if' always False
  QS_BEGIN_,
  QS_BEGIN_NOCRIT_)
--emacro(778,                  // expression evaluates to 0 in operation '>>'
+-emacro(778,          // expression evaluates to 0 in operation '>>'
  QS_BEGIN_,
  QS_BEGIN_NOCRIT_)
--emacro(845,                  // The right argument of '<<' is zero
+-emacro(845,          // The right argument of '<<' is zero
  QS_BEGIN_,
  QS_BEGIN_NOCRIT_)
--emacro(725,                  // Expected positive indentation
+-emacro(725,          // Expected positive indentation
  QS_END_,
  QS_END_NOCRIT_)
--emacro(778, QS_BEGIN_NOCRIT_)// zero in operation '&'
-
+-emacro(778,          // zero in operation '&'
+ QS_BEGIN_NOCRIT_)
+ 
 // Warning 537 "Repeated include file" is generated only for QEP source code
 // This warning is redundant, because all QP header files are protected
 // by #ifndef xxx_h ... #endif preprocessor checks.
--e537                         // Repeated include file (checked by 451)
+-e537                 // Repeated include file (checked by 451)