mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-01-28 06:02:56 +08:00
5.9.7b
This commit is contained in:
parent
56ef8c82d8
commit
1b62f8fc7e
@ -168,7 +168,7 @@ Given the simplicity, portability, and low-resource consumption, the QV schedule
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@section api_qk Preemptive Run-to-Completion Kernel (QK)
|
||||
@section api_qk QK (Preemptive Run-to-Completion Kernel)
|
||||
QK is a tiny **preemptive**, priority-based, non-blocking kernel designed specifically for executing active objects. QK runs active objects in the same way as prioritized interrupt controller (such as NVIC in ARM Cortex-M) runs interrupts using the single stack. Active objects process their events in run-to-completion (RTC) fashion and remove themselves from the call stack, the same way as nested interrupts remove themselves from the stack upon completion. At the same time high-priority active objects can preempt lower-priority active objects, just like interrupts can preempt each other under a prioritized interrupt controller. QK meets all the requirement of the Rate Monotonic Scheduling (a.k.a. Rate Monotonic Analysis RMA) and can be used in hard real-time systems.
|
||||
|
||||
|
||||
@ -177,8 +177,8 @@ QK is a tiny **preemptive**, priority-based, non-blocking kernel designed specif
|
||||
- QK_INIT()
|
||||
- <a href="qk_8c.html#a779a1bc9482e2d489dc87751cd100fdb"><b>QF_run()</b></a>
|
||||
- QK::onIdle()
|
||||
- QK_schedLock()
|
||||
- QK_schedUnlock()
|
||||
- QK::schedLock()
|
||||
- QK::schedUnlock()
|
||||
- QK::getVersion()
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@ QK is a tiny **preemptive**, priority-based, non-blocking kernel designed specif
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@section api_qxk Preemptive Dual-Mode (Run-to-Completion/Blocking) RTOS Kernel
|
||||
@section api_qxk QXK (Preemptive Dual-Mode Run-to-Completion/Blocking RTOS Kernel)
|
||||
QXK is a small, preemptive, priority-based, dual-mode **blocking** kernel that executes active objects like the @ref qk "QK kernel", but can also execute traditional __blocking__ threads (extended threads). In this respect, QXK behaves exactly as a conventional __RTOS__ (Real-Time Operating System). QXK has been designed specifically for mixing event-driven active objects with traditional blocking code, such as commercial middleware (TCP/IP stacks, UDP stacks, embedded file systems, etc.) or legacy software.
|
||||
|
||||
|
||||
@ -198,8 +198,8 @@ QXK is a small, preemptive, priority-based, dual-mode **blocking** kernel that e
|
||||
- QXK_INIT()
|
||||
- <a href="qxk_8c.html#a779a1bc9482e2d489dc87751cd100fdb"><b>QF_run()</b></a>
|
||||
- QXK::onIdle()
|
||||
- QXK_schedLock()
|
||||
- QXK_schedUnlock()
|
||||
- QXK::schedLock()
|
||||
- QXK::schedUnlock()
|
||||
- QXK::getVersion()
|
||||
|
||||
|
||||
@ -214,7 +214,8 @@ QXK is a small, preemptive, priority-based, dual-mode **blocking** kernel that e
|
||||
- QXThread class
|
||||
- QXThread::QXThread()
|
||||
- QXThread::start()
|
||||
- QXThread::postX()
|
||||
- %QXThread:: POST()
|
||||
- %QXThread:: POST_X()
|
||||
- QXThread::delay()
|
||||
- QXThread::delayCancel()
|
||||
- QXThread::queueGet()
|
||||
|
@ -9,7 +9,7 @@
|
||||
License Type: Windows Single User License
|
||||
Licensed To : Quantum Leaps, LLC
|
||||
License No. : WS2975 License Date: Dec 15, 2013
|
||||
Build Date : Sep 2 2009 Run Date: Aug 23, 2017
|
||||
Build Date : Sep 2 2009 Run Date: Sep 01, 2017
|
||||
(C)1996-2009 M Squared Technologies LLC
|
||||
________________________________________________________________________
|
||||
|
||||
@ -747,16 +747,6 @@
|
||||
File: ..\src\qf_pkg.h
|
||||
________________________________________________________________________
|
||||
|
||||
Inline Function: QP::QF_EVT_POOL_ID_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
LOC 1 eLOC 1 lLOC 1 Comment 1 Lines 1
|
||||
|
||||
Inline Function: QP::QF_EVT_REF_CTR_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
LOC 1 eLOC 1 lLOC 1 Comment 1 Lines 1
|
||||
|
||||
Inline Function: QP::QF_EVT_REF_CTR_INC_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
@ -771,20 +761,20 @@
|
||||
|
||||
~~ Total File Summary ~~
|
||||
|
||||
LOC 71 eLOC 67 lLOC 11 Comment 109 Lines 205
|
||||
LOC 69 eLOC 65 lLOC 9 Comment 107 Lines 199
|
||||
------------------------------------------------------------------------
|
||||
|
||||
~~ File Functional Summary ~~
|
||||
|
||||
File Function Count....: 4
|
||||
Total Function LOC.....: 8 Total Function Pts LOC : 0.0
|
||||
Total Function eLOC....: 6 Total Function Pts eLOC: 0.0
|
||||
Total Function lLOC....: 4 Total Function Pts lLOC: 0.0
|
||||
Total Function Params .: 4 Total Function Return .: 4
|
||||
Total Cyclo Complexity : 4 Total Function Complex.: 12
|
||||
File Function Count....: 2
|
||||
Total Function LOC.....: 6 Total Function Pts LOC : 0.0
|
||||
Total Function eLOC....: 4 Total Function Pts eLOC: 0.0
|
||||
Total Function lLOC....: 2 Total Function Pts lLOC: 0.0
|
||||
Total Function Params .: 2 Total Function Return .: 2
|
||||
Total Cyclo Complexity : 2 Total Function Complex.: 6
|
||||
------ ----- ----- ------ ------ -----
|
||||
Max Function LOC ......: 3 Average Function LOC ..: 2.00
|
||||
Max Function eLOC .....: 2 Average Function eLOC .: 1.50
|
||||
Max Function LOC ......: 3 Average Function LOC ..: 3.00
|
||||
Max Function eLOC .....: 2 Average Function eLOC .: 2.00
|
||||
Max Function lLOC .....: 1 Average Function lLOC .: 1.00
|
||||
------ ----- ----- ------ ------ -----
|
||||
Max Function Parameters: 1 Avg Function Parameters: 1.00
|
||||
@ -1252,9 +1242,9 @@
|
||||
Parameters: (QEvt const * const e, QEvt const * const evtRef)
|
||||
Cyclomatic Complexity Vg Detail
|
||||
Function Base : 1
|
||||
Conditional if / else if: 1
|
||||
Logical and ( && ) : 1
|
||||
Complexity Param 2 Return 1 Cyclo Vg 2 Total 5
|
||||
LOC 10 eLOC 8 lLOC 5 Comment 15 Lines 14
|
||||
LOC 10 eLOC 9 lLOC 5 Comment 15 Lines 14
|
||||
|
||||
Function: QP::QF::poolGetMaxBlockSize
|
||||
Parameters: (void)
|
||||
@ -1265,20 +1255,20 @@
|
||||
|
||||
~~ Total File Summary ~~
|
||||
|
||||
LOC 104 eLOC 88 lLOC 40 Comment 177 Lines 281
|
||||
LOC 104 eLOC 89 lLOC 40 Comment 177 Lines 281
|
||||
------------------------------------------------------------------------
|
||||
|
||||
~~ File Functional Summary ~~
|
||||
|
||||
File Function Count....: 5
|
||||
Total Function LOC.....: 86 Total Function Pts LOC : 2.0
|
||||
Total Function eLOC....: 71 Total Function Pts eLOC: 1.7
|
||||
Total Function eLOC....: 72 Total Function Pts eLOC: 1.7
|
||||
Total Function lLOC....: 38 Total Function Pts lLOC: 0.8
|
||||
Total Function Params .: 9 Total Function Return .: 5
|
||||
Total Cyclo Complexity : 13 Total Function Complex.: 27
|
||||
------ ----- ----- ------ ------ -----
|
||||
Max Function LOC ......: 32 Average Function LOC ..: 17.20
|
||||
Max Function eLOC .....: 28 Average Function eLOC .: 14.20
|
||||
Max Function eLOC .....: 28 Average Function eLOC .: 14.40
|
||||
Max Function lLOC .....: 14 Average Function lLOC .: 7.60
|
||||
------ ----- ----- ------ ------ -----
|
||||
Max Function Parameters: 3 Avg Function Parameters: 1.80
|
||||
@ -2243,9 +2233,9 @@
|
||||
|
||||
~~ Total Project Summary ~~
|
||||
|
||||
LOC 4869 eLOC 4314 lLOC 1884 Comment 6428 Lines 11582
|
||||
LOC 4867 eLOC 4313 lLOC 1882 Comment 6426 Lines 11576
|
||||
Average per File, metric/37 files
|
||||
LOC 131 eLOC 116 lLOC 50 Comment 173 Lines 313
|
||||
LOC 131 eLOC 116 lLOC 50 Comment 173 Lines 312
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@ -2578,16 +2568,6 @@
|
||||
Complexity Param 5 Return 1 Cyclo Vg 1 Total 7
|
||||
LOC 4 eLOC 2 lLOC 1 Comment 1 Lines 4
|
||||
|
||||
Function: QP::QF_EVT_POOL_ID_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
LOC 1 eLOC 1 lLOC 1 Comment 1 Lines 1
|
||||
|
||||
Function: QP::QF_EVT_REF_CTR_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
LOC 1 eLOC 1 lLOC 1 Comment 1 Lines 1
|
||||
|
||||
Function: QP::QF_EVT_REF_CTR_INC_
|
||||
Parameters: (QEvt const * const e)
|
||||
Complexity Param 1 Return 1 Cyclo Vg 1 Total 3
|
||||
@ -2773,7 +2753,7 @@
|
||||
Function: QP::QF::newRef_
|
||||
Parameters: (QEvt const * const e, QEvt const * const evtRef)
|
||||
Complexity Param 2 Return 1 Cyclo Vg 2 Total 5
|
||||
LOC 10 eLOC 8 lLOC 5 Comment 15 Lines 14
|
||||
LOC 10 eLOC 9 lLOC 5 Comment 15 Lines 14
|
||||
|
||||
Function: QP::QF::poolGetMaxBlockSize
|
||||
Parameters: (void)
|
||||
@ -3156,26 +3136,26 @@
|
||||
LOC 14 eLOC 11 lLOC 7 Comment 2 Lines 16
|
||||
|
||||
Total: Functions
|
||||
LOC 2741 eLOC 2285 lLOC 1364 InCmp 344 CycloCmp 466
|
||||
LOC 2739 eLOC 2284 lLOC 1362 InCmp 340 CycloCmp 464
|
||||
Function Points FP(LOC) 46.7 FP(eLOC) 39.5 FP(lLOC) 23.8
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
~~ Project Functional Analysis ~~
|
||||
|
||||
Total Functions .......: 177 Total Physical Lines ..: 3793
|
||||
Total LOC .............: 2741 Total Function Pts LOC : 46.7
|
||||
Total eLOC ............: 2285 Total Function Pts eLOC: 39.5
|
||||
Total lLOC.............: 1364 Total Function Pts lLOC: 23.8
|
||||
Total Cyclomatic Comp. : 466 Total Interface Comp. .: 344
|
||||
Total Parameters ......: 167 Total Return Points ...: 177
|
||||
Total Comment Lines ...: 2682 Total Blank Lines .....: 513
|
||||
Total Functions .......: 175 Total Physical Lines ..: 3791
|
||||
Total LOC .............: 2739 Total Function Pts LOC : 46.7
|
||||
Total eLOC ............: 2284 Total Function Pts eLOC: 39.5
|
||||
Total lLOC.............: 1362 Total Function Pts lLOC: 23.8
|
||||
Total Cyclomatic Comp. : 464 Total Interface Comp. .: 340
|
||||
Total Parameters ......: 165 Total Return Points ...: 175
|
||||
Total Comment Lines ...: 2680 Total Blank Lines .....: 513
|
||||
------ ----- ----- ------ ------ -----
|
||||
Avg Physical Lines ....: 21.43
|
||||
Avg LOC ...............: 15.49 Avg eLOC ..............: 12.91
|
||||
Avg lLOC ..............: 7.71 Avg Cyclomatic Comp. ..: 2.63
|
||||
Avg Physical Lines ....: 21.66
|
||||
Avg LOC ...............: 15.65 Avg eLOC ..............: 13.05
|
||||
Avg lLOC ..............: 7.78 Avg Cyclomatic Comp. ..: 2.65
|
||||
Avg Interface Comp. ...: 1.94 Avg Parameters ........: 0.94
|
||||
Avg Return Points .....: 1.00 Avg Comment Lines .....: 15.15
|
||||
Avg Return Points .....: 1.00 Avg Comment Lines .....: 15.31
|
||||
------ ----- ----- ------ ------ -----
|
||||
Max LOC ...............: 117
|
||||
Max eLOC ..............: 100 Max lLOC ..............: 61
|
||||
|
@ -28,13 +28,34 @@ Starting from version 5.6.0, QP/C++ includes the conventional, preemptive @ref q
|
||||
/*##########################################################################*/
|
||||
/*! @page embos embOS
|
||||
|
||||
@image html under_construction.jpg
|
||||
<p>The QP/C/C++ ports and examples for embOS are described in the Quantum Leaps Application Note <a class="extern" target="_blank" href="https://state-machine.com/doc/AN_RTOS-embOS.pdf"><strong>QP and embOS</strong></a>.
|
||||
</p>
|
||||
|
||||
@htmlonly
|
||||
<div class="image">
|
||||
<a target="_blank" href="https://state-machine.com/doc/AN_RTOS-embOS.pdf"><img border="0" src="img/AN.jpg" title="Download PDF"></a>
|
||||
<div class="caption">
|
||||
Application Note: QP and embOS
|
||||
</div>
|
||||
</div>
|
||||
@endhtmlonly
|
||||
|
||||
|
||||
*/
|
||||
/*##########################################################################*/
|
||||
/*! @page threadx ThreadX
|
||||
|
||||
@image html under_construction.jpg
|
||||
<p>The QP/C/C++ ports and examples for ThreadX are described in the Quantum Leaps Application Note <a class="extern" target="_blank" href="https://state-machine.com/doc/AN_RTOS-ThreadX.pdf"><strong>QP and ThreadX</strong></a>.
|
||||
</p>
|
||||
|
||||
@htmlonly
|
||||
<div class="image">
|
||||
<a target="_blank" href="https://state-machine.com/doc/AN_RTOS-ThreadX.pdf"><img border="0" src="img/AN.jpg" title="Download PDF"></a>
|
||||
<div class="caption">
|
||||
Application Note: QP and ThreadX
|
||||
</div>
|
||||
</div>
|
||||
@endhtmlonly
|
||||
|
||||
*/
|
||||
|
||||
@ -344,7 +365,17 @@ qpc
|
||||
@note
|
||||
Specifically, the QP source files qf_actq.c and qf_mem.c must **NOT** be included in the build, because this functionality is taken from uC/OS-II.
|
||||
|
||||
@image html under_construction.jpg
|
||||
<p>The QP/C/C++ ports and examples for uC/OS-II are described in the Quantum Leaps Application Note <a class="extern" target="_blank" href="https://state-machine.com/doc/AN_RTOS-uCOS2.pdf"><strong>QP and uC/OS-II</strong></a>.
|
||||
</p>
|
||||
|
||||
@htmlonly
|
||||
<div class="image">
|
||||
<a target="_blank" href="https://state-machine.com/doc/AN_RTOS-uCOS2.pdf"><img border="0" src="img/AN.jpg" title="Download PDF"></a>
|
||||
<div class="caption">
|
||||
Application Note: QP and uC/OS-II
|
||||
</div>
|
||||
</div>
|
||||
@endhtmlonly
|
||||
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@ To "lint" the application, invoke the batch "lin.bat" without parameters.
|
||||
Optionally, you can supply the parameter -DQ_SPY to include the QS
|
||||
instrumentation in the "linting" process.
|
||||
|
||||
The output from the "linting" is saved in the fle "lin_out.txt".
|
||||
The output from the "linting" is saved in the fle "lin_out.log".
|
||||
|
||||
***
|
||||
NOTE: You need to adjust the symbol PC_LINT_DIR at the top of the
|
||||
|
@ -1,8 +1,8 @@
|
||||
@echo off
|
||||
:: ===========================================================================
|
||||
:: Product: QP/C++ build script for PC-Lint(TM)
|
||||
:: Last Updated for Version: 5.4.0
|
||||
:: Date of the Last Update: 2015-04-15
|
||||
:: Last Updated for Version: 5.9.7
|
||||
:: Date of the Last Update: 2017-08-31
|
||||
::
|
||||
:: Q u a n t u m L e a P s
|
||||
:: ---------------------------
|
||||
@ -50,6 +50,6 @@ set LINTFLAGS=-i%PC_LINT_DIR%\lnt %QPCPP%\include\std.lnt options.lnt %1 %2 %3 %
|
||||
set PROJ_DIR=..
|
||||
|
||||
:: linting -------------------------------------------------------------------
|
||||
%PC_LINT_DIR%\lint-nt -os(lint_out.txt) %LINTFLAGS% %PROJ_DIR%\philo.cpp %PROJ_DIR%\table.cpp
|
||||
%PC_LINT_DIR%\lint-nt -os(lint_out.log) %LINTFLAGS% %PROJ_DIR%\philo.cpp %PROJ_DIR%\table.cpp
|
||||
|
||||
endlocal
|
||||
|
@ -1,13 +1,13 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Product: PC-Lint 9.x options for linting QP/C++ applications, GNU-ARM
|
||||
// Last Updated for Version: 5.4.0
|
||||
// Date of the Last Update: 2015-03-19
|
||||
// Last Updated for Version: 5.9.7
|
||||
// Date of the Last Update: 2017-08-31
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ---------------------------
|
||||
// innovating embedded systems
|
||||
//
|
||||
// Copyright (C) Quantum Leaps, www.state-machine.com.
|
||||
// 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
|
||||
@ -28,20 +28,28 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Contact information:
|
||||
// Web: www.state-machine.com
|
||||
// Email: info@state-machine.com
|
||||
// http://www.state-machine.com
|
||||
// mailto:info@state-machine.com
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// NOTE:
|
||||
// The following code requires the definition of the QTOOLS environment
|
||||
// variable, which must point to the installation directory of QTools on
|
||||
// your machine (e.g. C:\qp\qtools )
|
||||
|
||||
// the location of the GNU-ARM includes (need to adjust!!!)
|
||||
-iC:\tools\gnu_arm-eabi\arm-eabi\include
|
||||
-i%QTOOLS%\gnu_arm-eabi\arm-eabi\include
|
||||
|
||||
// define ARM Architecture
|
||||
-D__ARM_ARCH=7
|
||||
|
||||
// the location of the QTools lint directory (need to adjust!!!)
|
||||
-iC:\tools\qtools\lint
|
||||
-i%QTOOLS%\lint
|
||||
|
||||
// the location of the QPC framework (need to adjust!!!)
|
||||
-i..\..\..\..\include // QP/C++ includes
|
||||
-i..\..\..\..\ports\arm-cm\qk\gnu // QP/C++ port includes
|
||||
-i..\..\..\..\3rd_partyCMSIS\Include // CMSIS directory
|
||||
-i..\..\..\..\include // QP/C++ includes
|
||||
-i..\..\..\..\ports\arm-cm\qk\gnu // QP/C++ port includes
|
||||
-i..\..\..\..\3rd_party\CMSIS\Include // CMSIS directory
|
||||
|
||||
-D__ARM7M__=1 // define for Cortex-M3/M4
|
||||
-D__ARM6M__=0 // define for Cortex-M0/M0+
|
||||
@ -87,4 +95,3 @@ qpcpp.lnt // QP/C++ options
|
||||
-e756 // global typedef '...' not referenced
|
||||
-e757 // global declarator '...' not referenced
|
||||
-e768 // struct member '...' not referenced
|
||||
|
||||
|
@ -7,7 +7,7 @@ To "lint" the application, invoke the batch "lin.bat" without parameters.
|
||||
Optionally, you can supply the parameter -DQ_SPY to include the QS
|
||||
instrumentation in the "linting" process.
|
||||
|
||||
The output from the "linting" is saved in the fle "lin_out.txt".
|
||||
The output from the "linting" is saved in the fle "lin_out.log".
|
||||
|
||||
***
|
||||
NOTE: You need to adjust the symbol PC_LINT_DIR at the top of the
|
||||
|
@ -1,8 +1,8 @@
|
||||
@echo off
|
||||
:: ===========================================================================
|
||||
:: Product: QP/C++ build script for PC-Lint(TM)
|
||||
:: Last Updated for Version: 5.4.0
|
||||
:: Date of the Last Update: 2015-04-15
|
||||
:: Last Updated for Version: 5.9.7
|
||||
:: Date of the Last Update: 2017-08-31
|
||||
::
|
||||
:: Q u a n t u m L e a P s
|
||||
:: ---------------------------
|
||||
@ -50,6 +50,6 @@ set LINTFLAGS=-i%PC_LINT_DIR%\lnt %QPCPP%\include\std.lnt options.lnt %1 %2 %3 %
|
||||
set PROJ_DIR=..
|
||||
|
||||
:: linting -------------------------------------------------------------------
|
||||
%PC_LINT_DIR%\lint-nt -os(lint_out.txt) %LINTFLAGS% %PROJ_DIR%\philo.cpp %PROJ_DIR%\table.cpp
|
||||
%PC_LINT_DIR%\lint-nt -os(lint_out.log) %LINTFLAGS% %PROJ_DIR%\philo.cpp %PROJ_DIR%\table.cpp
|
||||
|
||||
endlocal
|
||||
|
@ -1,3 +0,0 @@
|
||||
|
||||
|
||||
"C:\qp_lab\qpcpp\examples\arm-cm\dpp_ek-tm4c123gxl\lint\options.lnt" 49 1 Error 307: Can't open indirect file 'co-gnu-arm.lnt'
|
@ -1,13 +1,13 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Product: PC-Lint 9.x options for linting QP/C++ applications, GNU-ARM
|
||||
// Last Updated for Version: 5.4.0
|
||||
// Date of the Last Update: 2015-03-19
|
||||
// Last Updated for Version: 5.9.7
|
||||
// Date of the Last Update: 2017-08-31
|
||||
//
|
||||
// Q u a n t u m L e a P s
|
||||
// ---------------------------
|
||||
// innovating embedded systems
|
||||
//
|
||||
// Copyright (C) Quantum Leaps, www.state-machine.com.
|
||||
// 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
|
||||
@ -28,20 +28,28 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Contact information:
|
||||
// Web: www.state-machine.com
|
||||
// Email: info@state-machine.com
|
||||
// http://www.state-machine.com
|
||||
// mailto:info@state-machine.com
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// NOTE:
|
||||
// The following code requires the definition of the QTOOLS environment
|
||||
// variable, which must point to the installation directory of QTools on
|
||||
// your machine (e.g. C:\qp\qtools )
|
||||
|
||||
// the location of the GNU-ARM includes (need to adjust!!!)
|
||||
-iC:\tools\gnu_arm-eabi\arm-eabi\include
|
||||
-i%QTOOLS%\gnu_arm-eabi\arm-eabi\include
|
||||
|
||||
// define ARM Architecture
|
||||
-D__ARM_ARCH=7
|
||||
|
||||
// the location of the QTools lint directory (need to adjust!!!)
|
||||
-iC:\tools\qtools\lint
|
||||
-i%QTOOLS%\lint
|
||||
|
||||
// the location of the QPC framework (need to adjust!!!)
|
||||
-i..\..\..\..\include // QP/C++ includes
|
||||
-i..\..\..\..\ports\arm-cm\qk\gnu // QP/C++ port includes
|
||||
-i..\..\..\..\3rd_partyCMSIS\Include // CMSIS directory
|
||||
-i..\..\..\..\include // QP/C++ includes
|
||||
-i..\..\..\..\ports\arm-cm\qk\gnu // QP/C++ port includes
|
||||
-i..\..\..\..\3rd_party\CMSIS\Include // CMSIS directory
|
||||
|
||||
-D__ARM7M__=1 // define for Cortex-M3/M4
|
||||
-D__ARM6M__=0 // define for Cortex-M0/M0+
|
||||
@ -87,4 +95,3 @@ qpcpp.lnt // QP/C++ options
|
||||
-e756 // global typedef '...' not referenced
|
||||
-e757 // global declarator '...' not referenced
|
||||
-e768 // struct member '...' not referenced
|
||||
|
||||
|
@ -6,52 +6,16 @@
|
||||
/// in the build directory before each build. (Most development tools allow
|
||||
/// you to specify a pre-build action, which is the ideal place to delete
|
||||
/// the qstamp object file.)
|
||||
/// @cond
|
||||
///***************************************************************************
|
||||
/// Last updated for version 5.6.0
|
||||
/// Last updated on 2015-12-26
|
||||
///
|
||||
/// Q u a n t u m L e a P s
|
||||
/// ---------------------------
|
||||
/// innovating embedded systems
|
||||
///
|
||||
/// Copyright (C) Quantum Leaps. 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:
|
||||
/// https://state-machine.com
|
||||
/// mailto:info@state-machine.com
|
||||
///***************************************************************************
|
||||
/// @endcond
|
||||
|
||||
#include "qpcpp.h"
|
||||
|
||||
namespace QP {
|
||||
|
||||
extern char_t const BUILD_DATE[12];
|
||||
extern char_t const BUILD_TIME[9];
|
||||
extern char const BUILD_DATE[12];
|
||||
extern char const BUILD_TIME[9];
|
||||
|
||||
//! the calendar date of the last translation of the form: "Mmm dd yyyy"
|
||||
char_t const BUILD_DATE[12] = __DATE__;
|
||||
char const BUILD_DATE[12] = __DATE__;
|
||||
|
||||
//! the time of the last translation of the form: "hh:mm:ss"
|
||||
char_t const BUILD_TIME[9] = __TIME__;
|
||||
char const BUILD_TIME[9] = __TIME__;
|
||||
|
||||
} // namespace QP
|
||||
|
@ -2,8 +2,8 @@
|
||||
/// @brief QF/C++ dynamic event management
|
||||
/// @cond
|
||||
///***************************************************************************
|
||||
/// Last updated for version 5.9.3
|
||||
/// Last updated on 2017-06-19
|
||||
/// Last updated for version 5.9.7
|
||||
/// Last updated on 2017-08-25
|
||||
///
|
||||
/// Q u a n t u m L e a P s
|
||||
/// ---------------------------
|
||||
@ -196,7 +196,7 @@ QEvt *QF::newX_(uint_fast16_t const evtSize,
|
||||
///
|
||||
void QF::gc(QEvt const * const e) {
|
||||
// is it a dynamic event?
|
||||
if (QF_EVT_POOL_ID_(e) != static_cast<uint8_t>(0)) {
|
||||
if (e->poolId_ != static_cast<uint8_t>(0)) {
|
||||
QF_CRIT_STAT_
|
||||
QF_CRIT_ENTRY_();
|
||||
|
||||
@ -255,15 +255,15 @@ void QF::gc(QEvt const * const e) {
|
||||
/// The only allowed use is thorough the macro Q_NEW_REF().
|
||||
///
|
||||
QEvt const *QF::newRef_(QEvt const * const e, QEvt const * const evtRef) {
|
||||
// the provided event reference must not be in use
|
||||
Q_REQUIRE_ID(500, evtRef == static_cast<QEvt const *>(0));
|
||||
//! @pre the event must be dynamic and the provided event reference
|
||||
//! must not be already in use
|
||||
Q_REQUIRE_ID(500,
|
||||
(e->poolId_ != static_cast<uint8_t>(0))
|
||||
&& (evtRef == static_cast<QEvt const *>(0)));
|
||||
|
||||
QF_CRIT_STAT_
|
||||
QF_CRIT_ENTRY_();
|
||||
// is the current event dynamic?
|
||||
if (e->poolId_ != static_cast<uint8_t>(0)) {
|
||||
QF_EVT_REF_CTR_INC_(e); // increments the ref counter
|
||||
}
|
||||
QF_EVT_REF_CTR_INC_(e); // increments the ref counter
|
||||
QF_CRIT_EXIT_();
|
||||
|
||||
return e;
|
||||
|
@ -3,8 +3,8 @@
|
||||
/// @brief Internal (package scope) QF/C++ interface.
|
||||
/// @cond
|
||||
///***************************************************************************
|
||||
/// Last updated for version 5.8.0
|
||||
/// Last updated on 2016-11-29
|
||||
/// Last updated for version 5.9.7
|
||||
/// Last updated on 2017-08-25
|
||||
///
|
||||
/// Q u a n t u m L e a P s
|
||||
/// ---------------------------
|
||||
@ -101,12 +101,6 @@ struct QFreeBlock {
|
||||
//****************************************************************************
|
||||
// internal helper inline functions
|
||||
|
||||
//! access to the poolId_ of an event @p e
|
||||
inline uint8_t QF_EVT_POOL_ID_(QEvt const * const e) { return e->poolId_; }
|
||||
|
||||
//! access to the refCtr_ of an event @p e
|
||||
inline uint8_t QF_EVT_REF_CTR_(QEvt const * const e) { return e->refCtr_; }
|
||||
|
||||
//! increment the refCtr_ of an event @p e
|
||||
inline void QF_EVT_REF_CTR_INC_(QEvt const * const e) {
|
||||
++(QF_EVT_CONST_CAST_(e))->refCtr_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user