6.9.4rc1
Release Candidate 1
@ -5,9 +5,9 @@
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = "QP/C"
|
||||
PROJECT_NUMBER = "6.9.3"
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO = images/header_logo_ql.png
|
||||
PROJECT_NUMBER = "6.9.4"
|
||||
PROJECT_BRIEF = "Real-Time Embedded Framework"
|
||||
PROJECT_LOGO = images/logo_ql.png
|
||||
OUTPUT_DIRECTORY =
|
||||
CREATE_SUBDIRS = NO
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
@ -15,7 +15,17 @@ OUTPUT_LANGUAGE = English
|
||||
OUTPUT_TEXT_DIRECTION = None
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF =
|
||||
ABBREVIATE_BRIEF = "The $name class" \
|
||||
"The $name widget" \
|
||||
"The $name file" \
|
||||
is \
|
||||
provides \
|
||||
specifies \
|
||||
contains \
|
||||
represents \
|
||||
a \
|
||||
an \
|
||||
the
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = NO
|
||||
@ -24,21 +34,22 @@ STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
JAVADOC_BANNER = NO
|
||||
QT_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = YES
|
||||
QT_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
PYTHON_DOCSTRING = YES
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 4
|
||||
ALIASES = "next{1}=<hr><b>Next:</b> @ref \1</p>" \
|
||||
"description=@par Description" \
|
||||
"amplification=@par Amplification" \
|
||||
"rationale=@par Rationale" \
|
||||
"caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \
|
||||
"hint=@par Hint" \
|
||||
"usage=@par Usage" \
|
||||
"caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \
|
||||
"reqdef{2}=<div class= vmargin20></div>@anchor \1 <TABLE><TR ALIGN= left><TH NOWRAP>\1</TH><TH WIDTH= 100%>\2</TH></TR></TABLE>" \
|
||||
"reqref{1}=@ref \1 \"\1\"" \
|
||||
"termdef{2}=@anchor term_\1 @par \2" \
|
||||
"termref{1}=@ref term_\1"
|
||||
"termref{2}=<a class=\"extern\" target=\"_blank\" href=\"https://www.state-machine.com/\1\">\2</a>" \
|
||||
"reqdef{1}=@anchor \1 @xrefitem reqdef \"Requirement\" \"Requirement Index\" @ref \1" \
|
||||
"reqref{1}=@ref \1 \"\1\""
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
@ -181,6 +192,7 @@ SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
CLANG_ADD_INC_PATHS = YES
|
||||
CLANG_OPTIONS =
|
||||
CLANG_DATABASE_PATH =
|
||||
#---------------------------------------------------------------------------
|
||||
@ -194,14 +206,15 @@ IGNORE_PREFIX =
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = ../html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER = ../../doxygen/header.html
|
||||
HTML_FOOTER = ../../doxygen/footer.html
|
||||
HTML_HEADER = ../../doxygen/header-awesome.html
|
||||
HTML_FOOTER = ../../doxygen/footer-awesome.html
|
||||
HTML_STYLESHEET =
|
||||
HTML_EXTRA_STYLESHEET = ../../doxygen/ql.css
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_EXTRA_STYLESHEET = ../../doxygen/doxygen-awesome.css \
|
||||
../../doxygen/ql-awesome.css
|
||||
HTML_EXTRA_FILES = ../../doxygen/doxygen-awesome-darkmode-toggle.js
|
||||
HTML_COLORSTYLE_HUE = 209
|
||||
HTML_COLORSTYLE_SAT = 255
|
||||
HTML_COLORSTYLE_GAMMA = 113
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_MENUS = YES
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
@ -231,7 +244,7 @@ ECLIPSE_DOC_ID = com.state-machine.qp
|
||||
DISABLE_INDEX = YES
|
||||
GENERATE_TREEVIEW = YES
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 180
|
||||
TREEVIEW_WIDTH = 300
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
HTML_FORMULA_FORMAT = png
|
||||
FORMULA_FONTSIZE = 10
|
||||
@ -239,7 +252,7 @@ FORMULA_TRANSPARENT = YES
|
||||
FORMULA_MACROFILE =
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = YES
|
||||
|
@ -1,390 +1,13 @@
|
||||
# Doxyfile 1.9.0
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = "QP/C"
|
||||
PROJECT_NUMBER = "6.9.3"
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO = images/header_logo_ql.png
|
||||
OUTPUT_DIRECTORY =
|
||||
CREATE_SUBDIRS = NO
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
OUTPUT_TEXT_DIRECTION = None
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF =
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = NO
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
JAVADOC_BANNER = NO
|
||||
QT_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = YES
|
||||
PYTHON_DOCSTRING = YES
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 4
|
||||
ALIASES = "next{1}=<hr><b>Next:</b> @ref \1</p>" \
|
||||
"description=@par Description" \
|
||||
"hint=@par Hint" \
|
||||
"usage=@par Usage" \
|
||||
"caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \
|
||||
"reqdef{2}=<div class= vmargin20></div>@anchor \1 <TABLE><TR ALIGN= left><TH NOWRAP>\1</TH><TH WIDTH= 100%>\2</TH></TR></TABLE>" \
|
||||
"reqref{1}=@ref \1 \"\1\"" \
|
||||
"termdef{2}=@anchor term_\1 @par \2" \
|
||||
"termref{1}=@ref term_\1"
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
OPTIMIZE_OUTPUT_SLICE = NO
|
||||
EXTENSION_MAPPING = lnt=Objective-C
|
||||
MARKDOWN_SUPPORT = YES
|
||||
TOC_INCLUDE_HEADINGS = 4
|
||||
AUTOLINK_SUPPORT = YES
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
GROUP_NESTED_COMPOUNDS = NO
|
||||
SUBGROUPING = YES
|
||||
INLINE_GROUPED_CLASSES = YES
|
||||
INLINE_SIMPLE_STRUCTS = YES
|
||||
TYPEDEF_HIDES_STRUCT = YES
|
||||
LOOKUP_CACHE_SIZE = 0
|
||||
NUM_PROC_THREADS = 1
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_PRIV_VIRTUAL = NO
|
||||
EXTRACT_PACKAGE = YES
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
RESOLVE_UNNAMED_PARAMS = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = NO
|
||||
HIDE_SCOPE_NAMES = YES
|
||||
HIDE_COMPOUND_REFERENCE= NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
SHOW_GROUPED_MEMB_INC = NO
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
STRICT_PROTO_MATCHING = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_FILES = YES
|
||||
SHOW_NAMESPACES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
LAYOUT_FILE =
|
||||
CITE_BIB_FILES =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_AS_ERROR = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = main.dox \
|
||||
gs.dox \
|
||||
struct.dox \
|
||||
api.dox \
|
||||
exa.dox \
|
||||
exa_apps.dox \
|
||||
exa_native.dox \
|
||||
../../doxygen/exa_low-power.dox \
|
||||
exa_rtos.dox \
|
||||
exa_os.dox \
|
||||
exa_qutest.dox \
|
||||
exa_mware.dox \
|
||||
ports.dox \
|
||||
ports_native.dox \
|
||||
../../doxygen/ports_arm-cm.dox \
|
||||
ports_rtos.dox \
|
||||
ports_os.dox \
|
||||
history.dox \
|
||||
macros.h \
|
||||
metrics.dox \
|
||||
modules.dox \
|
||||
../include \
|
||||
../src \
|
||||
../ports/lint-plus \
|
||||
../../doxygen/help.dox
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS = *.dox \
|
||||
*.h \
|
||||
*.c \
|
||||
*.cpp \
|
||||
*.s \
|
||||
*.asm \
|
||||
*.lnt
|
||||
RECURSIVE = YES
|
||||
EXCLUDE = ../include/qs_dummy.h
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXCLUDE_SYMBOLS = QP_IMPL
|
||||
EXAMPLE_PATH = snippets \
|
||||
../include \
|
||||
../src \
|
||||
../ports \
|
||||
../examples
|
||||
EXAMPLE_PATTERNS = *
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH = images \
|
||||
../../doxygen/images
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = NO
|
||||
REFERENCES_RELATION = NO
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
CLANG_OPTIONS =
|
||||
CLANG_DATABASE_PATH =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
IGNORE_PREFIX =
|
||||
@INCLUDE = Doxyfile
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = tmp
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER = ../../doxygen/header.html
|
||||
HTML_FOOTER = ../../doxygen/footer.html
|
||||
HTML_STYLESHEET =
|
||||
HTML_EXTRA_STYLESHEET = ../../doxygen/ql.css
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_MENUS = YES
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
HTML_INDEX_NUM_ENTRIES = 100
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
DOCSET_BUNDLE_ID = com.state-machine.doc
|
||||
DOCSET_PUBLISHER_ID = com.state-machine.doc
|
||||
DOCSET_PUBLISHER_NAME = QuantumLeaps
|
||||
GENERATE_HTMLHELP = YES
|
||||
CHM_FILE = ../qpc.chm
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
CHM_INDEX_ENCODING =
|
||||
BINARY_TOC = YES
|
||||
TOC_EXPAND = NO
|
||||
GENERATE_QHP = NO
|
||||
QCH_FILE =
|
||||
QHP_NAMESPACE = com.state-machine.qp
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
QHP_CUST_FILTER_NAME =
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
QHG_LOCATION =
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
ECLIPSE_DOC_ID = com.state-machine.qp
|
||||
DISABLE_INDEX = YES
|
||||
GENERATE_TREEVIEW = YES
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 180
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
HTML_FORMULA_FORMAT = png
|
||||
FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
FORMULA_MACROFILE =
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = YES
|
||||
SERVER_BASED_SEARCH = NO
|
||||
EXTERNAL_SEARCH = NO
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
LATEX_MAKEINDEX_CMD = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = letter
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
LATEX_FOOTER =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_FILES =
|
||||
PDF_HYPERLINKS = YES
|
||||
USE_PDFLATEX = YES
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
LATEX_SOURCE_CODE = NO
|
||||
LATEX_BIB_STYLE = plain
|
||||
LATEX_TIMESTAMP = NO
|
||||
LATEX_EMOJI_DIRECTORY =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_SOURCE_CODE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_SUBDIR =
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_PROGRAMLISTING = YES
|
||||
XML_NS_MEMB_FILE_SCOPE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_DOCBOOK = NO
|
||||
DOCBOOK_OUTPUT = docbook
|
||||
DOCBOOK_PROGRAMLISTING = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = Q_SPY \
|
||||
QP_IMPL \
|
||||
Q_UTEST \
|
||||
QK_ON_CONTEXT_SW \
|
||||
QXK_ON_CONTEXT_SW \
|
||||
QF_MAX_ACTIVE \
|
||||
QF_MAX_TICK_RATE \
|
||||
QF_MAX_EPOOL \
|
||||
QF_EVENT_SIZ_SIZE \
|
||||
QF_EQUEUE_CTR_SIZE \
|
||||
QF_MPOOL_SIZ_SIZE \
|
||||
QF_MPOOL_CTR_SIZE \
|
||||
QF_TIMEEVT_CTR_SIZE \
|
||||
QF_ACTIVE_STOP \
|
||||
QS_TIME_SIZE
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
EXTERNAL_PAGES = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
DIA_PATH =
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
DOT_NUM_THREADS = 0
|
||||
DOT_FONTNAME = Helvetica
|
||||
DOT_FONTSIZE = 10
|
||||
DOT_FONTPATH =
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = YES
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
DOT_UML_DETAILS = NO
|
||||
DOT_WRAP_THRESHOLD = 17
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
CALLER_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
INTERACTIVE_SVG = NO
|
||||
DOT_PATH = C:/tools/graphviz/bin
|
||||
DOTFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
PLANTUML_JAR_PATH =
|
||||
PLANTUML_CFG_FILE =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
|
@ -1,394 +1,11 @@
|
||||
# Doxyfile 1.9.0
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = "QP/C"
|
||||
PROJECT_NUMBER = "6.9.3"
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO = images/header_logo_ql.png
|
||||
OUTPUT_DIRECTORY =
|
||||
CREATE_SUBDIRS = NO
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
OUTPUT_TEXT_DIRECTION = None
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF =
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = NO
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
JAVADOC_BANNER = NO
|
||||
QT_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = YES
|
||||
PYTHON_DOCSTRING = YES
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 4
|
||||
ALIASES = "next{1}=<hr><b>Next:</b> @ref \1</p>" \
|
||||
"description=@par Description" \
|
||||
"hint=@par Hint" \
|
||||
"usage=@par Usage" \
|
||||
"caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \
|
||||
"reqdef{2}=<div class= vmargin20></div>@anchor \1 <TABLE><TR ALIGN= left><TH NOWRAP>\1</TH><TH WIDTH= 100%>\2</TH></TR></TABLE>" \
|
||||
"reqref{1}=@ref \1 \"\1\"" \
|
||||
"termdef{2}=@anchor term_\1 @par \2" \
|
||||
"termref{1}=@ref term_\1"
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
OPTIMIZE_OUTPUT_SLICE = NO
|
||||
EXTENSION_MAPPING = lnt=Objective-C
|
||||
MARKDOWN_SUPPORT = YES
|
||||
TOC_INCLUDE_HEADINGS = 4
|
||||
AUTOLINK_SUPPORT = YES
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
GROUP_NESTED_COMPOUNDS = NO
|
||||
SUBGROUPING = YES
|
||||
INLINE_GROUPED_CLASSES = YES
|
||||
INLINE_SIMPLE_STRUCTS = YES
|
||||
TYPEDEF_HIDES_STRUCT = YES
|
||||
LOOKUP_CACHE_SIZE = 0
|
||||
NUM_PROC_THREADS = 1
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_PRIV_VIRTUAL = NO
|
||||
EXTRACT_PACKAGE = YES
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
RESOLVE_UNNAMED_PARAMS = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = NO
|
||||
HIDE_SCOPE_NAMES = YES
|
||||
HIDE_COMPOUND_REFERENCE= NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
SHOW_GROUPED_MEMB_INC = NO
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
STRICT_PROTO_MATCHING = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_FILES = YES
|
||||
SHOW_NAMESPACES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
LAYOUT_FILE =
|
||||
CITE_BIB_FILES =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_AS_ERROR = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
@INCLUDE = Doxyfile
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = main.dox \
|
||||
gs.dox \
|
||||
struct.dox \
|
||||
api.dox \
|
||||
spec.dox \
|
||||
srs.dox \
|
||||
sas.dox \
|
||||
sds.dox \
|
||||
exa.dox \
|
||||
exa_apps.dox \
|
||||
exa_native.dox \
|
||||
../../doxygen/exa_low-power.dox \
|
||||
exa_rtos.dox \
|
||||
exa_os.dox \
|
||||
exa_qutest.dox \
|
||||
exa_mware.dox \
|
||||
ports.dox \
|
||||
ports_native.dox \
|
||||
../../doxygen/ports_arm-cm.dox \
|
||||
ports_rtos.dox \
|
||||
ports_os.dox \
|
||||
history.dox \
|
||||
macros.h \
|
||||
metrics.dox \
|
||||
modules.dox \
|
||||
../include \
|
||||
../src \
|
||||
../ports/lint-plus \
|
||||
modules.dox
|
||||
../../doxygen/help.dox
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS = *.dox \
|
||||
*.h \
|
||||
*.c \
|
||||
*.cpp \
|
||||
*.s \
|
||||
*.asm \
|
||||
*.lnt
|
||||
RECURSIVE = YES
|
||||
EXCLUDE = ../include/qs_dummy.h
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXCLUDE_SYMBOLS = QP_IMPL
|
||||
EXAMPLE_PATH = snippets \
|
||||
../include \
|
||||
../src \
|
||||
../ports \
|
||||
../examples
|
||||
EXAMPLE_PATTERNS = *
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH = images \
|
||||
../../doxygen/images
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = NO
|
||||
REFERENCES_RELATION = NO
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
CLANG_OPTIONS =
|
||||
CLANG_DATABASE_PATH =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = ../html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER = ../../doxygen/header.html
|
||||
HTML_FOOTER = ../../doxygen/footer.html
|
||||
HTML_STYLESHEET =
|
||||
HTML_EXTRA_STYLESHEET = ../../doxygen/ql.css
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_MENUS = YES
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
HTML_INDEX_NUM_ENTRIES = 100
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
DOCSET_BUNDLE_ID = com.state-machine.doc
|
||||
DOCSET_PUBLISHER_ID = com.state-machine.doc
|
||||
DOCSET_PUBLISHER_NAME = QuantumLeaps
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE = ../qpc.chm
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
CHM_INDEX_ENCODING =
|
||||
BINARY_TOC = YES
|
||||
TOC_EXPAND = NO
|
||||
GENERATE_QHP = NO
|
||||
QCH_FILE =
|
||||
QHP_NAMESPACE = com.state-machine.qp
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
QHP_CUST_FILTER_NAME =
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
QHG_LOCATION =
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
ECLIPSE_DOC_ID = com.state-machine.qp
|
||||
DISABLE_INDEX = YES
|
||||
GENERATE_TREEVIEW = YES
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 180
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
HTML_FORMULA_FORMAT = png
|
||||
FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
FORMULA_MACROFILE =
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = YES
|
||||
SERVER_BASED_SEARCH = NO
|
||||
EXTERNAL_SEARCH = NO
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
LATEX_MAKEINDEX_CMD = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = letter
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
LATEX_FOOTER =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_FILES =
|
||||
PDF_HYPERLINKS = YES
|
||||
USE_PDFLATEX = YES
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
LATEX_SOURCE_CODE = NO
|
||||
LATEX_BIB_STYLE = plain
|
||||
LATEX_TIMESTAMP = NO
|
||||
LATEX_EMOJI_DIRECTORY =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_SOURCE_CODE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_SUBDIR =
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_PROGRAMLISTING = YES
|
||||
XML_NS_MEMB_FILE_SCOPE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_DOCBOOK = NO
|
||||
DOCBOOK_OUTPUT = docbook
|
||||
DOCBOOK_PROGRAMLISTING = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = Q_SPY \
|
||||
QP_IMPL \
|
||||
Q_UTEST \
|
||||
QK_ON_CONTEXT_SW \
|
||||
QXK_ON_CONTEXT_SW \
|
||||
QF_MAX_ACTIVE \
|
||||
QF_MAX_TICK_RATE \
|
||||
QF_MAX_EPOOL \
|
||||
QF_EVENT_SIZ_SIZE \
|
||||
QF_EQUEUE_CTR_SIZE \
|
||||
QF_MPOOL_SIZ_SIZE \
|
||||
QF_MPOOL_CTR_SIZE \
|
||||
QF_TIMEEVT_CTR_SIZE \
|
||||
QF_ACTIVE_STOP \
|
||||
QS_TIME_SIZE
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
EXTERNAL_PAGES = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
DIA_PATH =
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
DOT_NUM_THREADS = 0
|
||||
DOT_FONTNAME = Helvetica
|
||||
DOT_FONTSIZE = 10
|
||||
DOT_FONTPATH =
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = YES
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
DOT_UML_DETAILS = NO
|
||||
DOT_WRAP_THRESHOLD = 17
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
CALLER_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
INTERACTIVE_SVG = NO
|
||||
DOT_PATH = C:/tools/graphviz/bin
|
||||
DOTFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
PLANTUML_JAR_PATH =
|
||||
PLANTUML_CFG_FILE =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
|
@ -66,7 +66,7 @@ QF is a portable, event-driven, real-time framework for execution of active obje
|
||||
- QTimeEvt_armX()
|
||||
- QTimeEvt_disarm()
|
||||
- QTimeEvt_rearm()
|
||||
- QTimeEvt_ctr()
|
||||
- QTimeEvt_currCtr()
|
||||
- ::QTicker active object
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 144 KiB |
BIN
doxygen/images/logo_ql-icon.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
doxygen/images/logo_ql.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
doxygen/img/github-corner.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
doxygen/img/github-qp.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
doxygen/img/help_dark.png
Normal file
After Width: | Height: | Size: 920 B |
BIN
doxygen/img/help_light.png
Normal file
After Width: | Height: | Size: 965 B |
@ -14,9 +14,12 @@
|
||||
<img src="AN_OOP_in_C.gif">
|
||||
<img src="AN_Active_Objects_for_Embedded.jpg">
|
||||
<img src="AN_Crash_Course_in_UML_State_Machines.gif">
|
||||
<img src="help_light.png">
|
||||
<img src="help_dark.png">
|
||||
<img src="tree-view_linked.png">
|
||||
<img src="tree-view_unlinked.png">
|
||||
<img src="logo_qp.gif">
|
||||
<img src="github-corner.png">
|
||||
<img src="github-qp.png">
|
||||
<img src="logo_qwin.jpg">
|
||||
<img src="board.png">
|
||||
<img src="checkboxoff.png">
|
||||
@ -34,7 +37,6 @@
|
||||
<img src="file_qmp.png">
|
||||
<img src="file_tcl.png">
|
||||
<img src="file_wish.png">
|
||||
<img src="file_wish.png">
|
||||
<img src="folder.png">
|
||||
<img src="forbidden.png">
|
||||
<img src="header_bg.png">
|
||||
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 19 KiB |
@ -2,9 +2,14 @@
|
||||
|
||||
@image html qp_banner.jpg
|
||||
|
||||
@section ab_new What's new?
|
||||
To check what's new in QP/C, please see @ref history "QP/C Revision History".
|
||||
@htmlonly
|
||||
<a target="_blank" href="https://github.com/QuantumLeaps/qpc" title="QP/C on GitHub"><img style="float:right; clear:right;" src="img/github-corner.png"></a>
|
||||
@endhtmlonly
|
||||
|
||||
@section ab_new What's new?
|
||||
To check what's new in QP/C, please see @ref history "QP/C Revision History". You can also get the latest __QP/C code__, with the recent enhancements and bug fixes, from the <a class="extern" target="_blank" href="https://github.com/QuantumLeaps/qpc"><strong>GitHub QP/C repository</strong></a>.
|
||||
|
||||
<div style="clear:both"></div>
|
||||
|
||||
|
||||
@section ab_about What is it?
|
||||
@ -15,14 +20,8 @@ The behavior of active objects is specified in QP/C by means of <a href="https:/
|
||||
@attention
|
||||
To use QP/C™ effectively, you need to understand the <a href="https://www.state-machine.com/category/concepts/" target="_blank" class="extern"><strong>key concepts</strong></a> that underline the architecture of the framework and your applications based on the framework.
|
||||
|
||||
<div style="clear:both"></div>
|
||||
|
||||
|
||||
|
||||
@htmlonly
|
||||
<img style="float:right; margin:10px 8px 8px 15px; clear:right;" src="img/logo_qp.gif" title="QP">
|
||||
@endhtmlonly
|
||||
|
||||
@section ab_goals What does it do?
|
||||
The main goals of the QP/C™ framework are:
|
||||
- to provide a reusable event-driven **architecture** based on <a class="extern" target="_blank" href="https://www.state-machine.com/active-object/">active objects (actors)</a>, which is inherently **safer**, more extensible, and easier to understand than the usual _shared-state concurrency_ based on a traditional Real-Time Operating System (RTOS).
|
||||
@ -124,7 +123,6 @@ Training and consulting services are also available from Quantum Leaps. Please r
|
||||
|
||||
- e-mail: <a class="extern" target="_blank" href="mailto:info@state-machine.com">info@state-machine.com</a>
|
||||
|
||||
@image html logo_ql_TM.jpg
|
||||
|
||||
@next{gs}
|
||||
*/
|
||||
|
@ -1,8 +1,8 @@
|
||||
@echo off
|
||||
:: ==========================================================================
|
||||
:: Product: QP/C script for generating Doxygen documentation
|
||||
:: Last Updated for Version: 6.9.0
|
||||
:: Date of the Last Update: 2020-08-24
|
||||
:: Last Updated for Version: 6.9.4
|
||||
:: Date of the Last Update: 2021-08-14
|
||||
::
|
||||
:: Q u a n t u m L e a P s
|
||||
:: ------------------------
|
||||
|
@ -113,16 +113,6 @@ The software shall support hierarchical state nesting
|
||||
@subsection sas_qep State Machine Event Processor
|
||||
|
||||
|
||||
@reqdef{RQPC101, The software shall support hierarchical state nesting}
|
||||
@par Amplification
|
||||
State hierarchy is the primary mechanism of behavioral reuse in state machines.
|
||||
@par Rationale
|
||||
This is a useful thing to have
|
||||
|
||||
@reqdef{RQPC102, The software shall support manual coding}
|
||||
|
||||
|
||||
|
||||
@subsection sas_qv Cooperative Run-to-Completion Kernel
|
||||
|
||||
|
||||
|
156
doxygen/srs.dox
@ -1,30 +1,28 @@
|
||||
/*! @page srs_toc SRS
|
||||
/*! @page srs_toc Requirements (SRS)
|
||||
|
||||
<h1>Software Requirements Specification (SRS)</h1>
|
||||
<p>This document specifies the requirements for the **QP/C** @termref{ao} @termref{framework} (later referenced simply as _QP/C_). This document describes the intended features of _QP/C_, as well as the interfaces to other software, hardware, and various other technical dependencies. The quick links to the main sections of this SRS are given below:
|
||||
<p>This document specifies the requirements for the **QP/C** @termref{rtef, real-time embedded framework (RTEF)} (later referenced simply as _QP/C_). This document describes the intended features of _QP/C_, as well as the interfaces to other software, hardware, and various other technical dependencies. The quick links to the main sections of this SRS are given below:
|
||||
</p>
|
||||
|
||||
- @subpage srs_intro
|
||||
+ @ref srs_concepts
|
||||
+ @ref srs_purpose
|
||||
+ @ref srs_scope
|
||||
+ @ref srs_audience
|
||||
+ @ref srs_conv
|
||||
+ @ref srs_refs
|
||||
- @subpage srs_descr
|
||||
+ @ref srs_prod
|
||||
+ @ref srs_funct
|
||||
+ @ref srs_user
|
||||
+ @ref srs_assume
|
||||
- @subpage srs
|
||||
+ @ref srs_fun
|
||||
- @ref srs_qf
|
||||
- @ref srs_qep
|
||||
- @ref srs_qv
|
||||
- @ref srs_qk
|
||||
- @ref srs_qxk
|
||||
+ @ref srs_non-fun
|
||||
- @subpage srs_fun
|
||||
+ @ref srs_qf
|
||||
+ @ref srs_qep
|
||||
+ @ref srs_qv
|
||||
+ @ref srs_qk
|
||||
+ @ref srs_qxk
|
||||
- @subpage srs_nf
|
||||
+ @ref srs_constr
|
||||
- @subpage reqdef
|
||||
|
||||
|
||||
@next{srs_intro}
|
||||
@ -42,66 +40,12 @@
|
||||
- problems related to execution logic, such as correctly choosing the right code to execute in response to a given event.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>The embedded software industry is in the midst of a major revolution. Tremendous amount of new development lays ahead. This new software needs an actual @termref{architecture} that is _safer_, more extensible, and easier to understand than the usual "free-threading" approach of a traditional Real-Time Operating System (@termref{RTOS}).
|
||||
</p>
|
||||
This document describes the requirements of the QP/C software framework, which provides such a reusable software architecture for real-time embedded (RTE) systems. This architecture is based on event-driven, asynchronous, non-blocking, encapsulated @ref srs_ao "active objects".
|
||||
|
||||
|
||||
|
||||
@section srs_concepts Key Concepts
|
||||
This section introduces the key concepts related to this increasingly popular "reactive approach", and specifically how they apply to the QP/C active object framework. Please refer to the Section @ref srs_refs for more information about the concepts.
|
||||
|
||||
|
||||
|
||||
@subsection srs_ao Active Objects
|
||||
<strong>Active objects</strong> (a.k.a. **actors**) are event-driven, strictly encapsulated software objects running in their own threads of control that communicate with one another asynchronously by exchanging events. The @termref{UML} specification further proposes the UML variant of **hierarchical state machines** (UML state machines), with which to model the _behavior_ of event-driven active objects.
|
||||
|
||||
The Active Object design pattern inherently supports and automatically enforces the best practices of concurrent programming. Structuring applications as sets of collaborating active objects is valuable, because it dramatically improves the developers' ability to reason about concurrent code, gives them higher-level abstractions and idioms that raise the semantic level of their program, and lets them express their intent more directly and **safely** than working with "naked threads" of an @termref{RTOS} directly.
|
||||
|
||||
|
||||
|
||||
@subsection srs_framework Active Object (Actor) Frameworks
|
||||
Active objects (actors) are universally implemented by means of a @termref{framework} that provides, at a minimum, an execution context (thread) for each active object, queuing of events, and event-based timing services.
|
||||
|
||||
> **Inversion of Control** <br>The most important point to understand about a framework is how it differs from a toolkit, such as a traditional @termref{RTOS}. When you use an RTOS, <em>you</em> write the main body of each thread and <em>you</em> call the code from the (RT)OS (such as a semaphore, time delay, etc.) In contrast, when you use a framework, you reuse the whole architecture and write the code that <em>it</em> calls. This leads to <span class="label label-primary">inversion of control</span> compared to the traditional RTOS and is very characteristic to virtually all event-driven systems, such as Active Objects.
|
||||
|
||||
The inversion of control is the main reason for the **architectural-reuse** and enforcement of the best practices, as opposed to re-inventing them for each project at hand. This reuse leads to a much higher consistency and **conceptual integrity** of the final product and dramatic **improvement of developer's productivity**.
|
||||
|
||||
|
||||
@subsection srs_encapsulation True Encapsulation for Concurrency
|
||||
In a sense active objects are the most stringent form of object-oriented programming (OOP), because the asynchronous communication enables active objects to be truly <strong>encapsulated</strong>. In contrast, the traditional OOP encapsulation, as provided by C++, C# or Java, does not really encapsulate anything in terms of concurrency. Any operation on an object runs in the caller's thread and the attributes of the object are subject to the same race conditions as global data, not encapsulated at all. To become thread-safe, operations need to be explicitly protected by a mutual exclusion mechanism, such as a mutex or a monitor, but this <span title=""Sharing Is the Root of All Contention" by Herb Sutter, DDJ 2009"><a class="extern" target="_blank" href="http://www.drdobbs.com/architecture-and-design/sharing-is-the-root-of-all-contention/214100002">reduces parallelism dramatically, causes contention, and is a natural enemy of scalability</a></span>.
|
||||
|
||||
In contrast, all private attributes of an active object are truly encapsulated without any mutual exclusion mechanism, because they can be only accessed from the active object's own thread. Note that this <strong>encapsulation for concurrency</strong> is not a programming language feature, so it is no more difficult to achieve in C as in C++, but it requires a programming discipline to avoid sharing resources (<span title=""Shared nothing architecture", Wikipedia"><a class="extern" target="_blank" href="http://en.wikipedia.org/wiki/Shared_nothing_architecture">shared-nothing principle</a></span>). However, the event-based communication helps immensely, because instead of sharing a resource, a dedicated active object can become the manager of the resource and the rest of the system can access the resource only via events posted to this manager active object.
|
||||
|
||||
|
||||
|
||||
@subsection srs_asynch Asynchronous Communication
|
||||
Each active object has its own event queue and receives all events exclusively through this queue. Events are delivered <strong>asynchronously</strong>, meaning that an event producer merely posts an event to the event queue of the recipient active object but does <strong>not</strong> wait (<a href="#Blocking">block</a>) in line for the actual processing of the event. The event processing occurs always in the thread context of the recipient active object. The active object framework, such as QP, is responsible for delivering and queuing the events in a thread-safe and deterministic manner.
|
||||
|
||||
|
||||
|
||||
@subsection srs_rtc Run-to-Completion Event Processing
|
||||
<p>Each active object handles events in run-to-completion (RTC) fashion, which also is exactly the semantics universally assumed by all state machine formalisms, including <span title=""Run-to-completion execution model in UML State Machines" Wikipedia"><a class="extern" target="_blank" href="http://en.wikipedia.org/wiki/UML_state_machine#Run-to-completion_execution_model">UML statecharts</a></span>. RTC simply means that an active object handles one event at a time, that is, the active object must complete the processing of an event before it can start processing of the next event from its queue.
|
||||
|
||||
> **RTC versus Preemption** <br>In the case of active objects, where each object runs in its own thread, it is important to clearly distinguish the notion of RTC from the concept of <span title=""Preemption (computing)" Wikipedia"><a class="extern" target="_blank" href="http://en.wikipedia.org/wiki/Preemption_(computing)">thread preemption</a></span>. In particular, RTC does <strong>not</strong> mean that the active object thread has to monopolize the CPU until the RTC step is complete. Under a <em>preemptive</em> kernel, for example, an RTC step can be preempted by another thread executing on the same CPU. This is determined by the scheduling policy of the underlying kernel, not by the active object model. When the suspended thread is assigned CPU time again, it resumes from the point of preemption and, eventually, completes its event processing. As long as the preempting and the preempted threads don't not share any resources, there are <strong>no concurrency hazards</strong>.
|
||||
|
||||
|
||||
|
||||
@subsection srs_blocking No Blocking
|
||||
Most conventional RTOS kernels manage the tasks and all inter-task communication based on <strong>blocking</strong>, such as waiting on a semaphore. However, blocking is problematic, because while a task is blocked waiting for one type of event, the task is not doing any other work and is <strong>not responsive</strong> to other events. Such a task cannot be easily extended to handle new events.
|
||||
|
||||
In contrast, event-driven active objects don't need to block, because in event-driven systems the control is <a href="#Inversion">inverted</a> compared to traditional RTOS tasks. Instead of blocking to wait for an event, an active object simply finishes its RTC step and returns to the framework to be activated when the next event arrives. This arrangement allows active objects to remain <strong>responsive</strong> to events of all types, which is central to the unprecedented flexibility and extensibility of active object systems.
|
||||
|
||||
|
||||
|
||||
@subsection srs_hsm Hierarchical State Machines
|
||||
As suggested in the UML specification and similar as in <span title=""Real-Time Object-Oriented Modeling" Wikipedia"><a class="extern" target="_blank" href="https://en.wikipedia.org/wiki/Real-Time_Object-Oriented_Modeling">ROOM</a></span>, the behavior of each Active Object can be specified by means of a <span class="label label-primary">hierarchical state machine</span> (<span title=""UML state machine", Wikipedia"><a class="extern" target="_blank" href="http://en.wikipedia.org/wiki/UML_state_machine">UML statechart</a></span>), which is a very effective and elegant technique of describing event-driven behavior.
|
||||
|
||||
|
||||
|
||||
@section srs_purpose Purpose
|
||||
The purpose of the QP/C @termref{ao} @termref{framework} is to provide a reusable software @termref{architecture} and efficient implementation of the @termref{ao} model of computation for deeply embedded applications, such as single-chip microcontrollers.
|
||||
|
||||
@ -134,12 +78,6 @@ Requirement definitions use consistent terminology to indicate whether something
|
||||
@section srs_refs References
|
||||
|
||||
|
||||
@next{srs_descr}
|
||||
*/
|
||||
/*##########################################################################*/
|
||||
/*! @page srs_descr Overall Description
|
||||
|
||||
|
||||
@section srs_prod Product Perspective
|
||||
|
||||
|
||||
@ -149,6 +87,8 @@ Requirement definitions use consistent terminology to indicate whether something
|
||||
- @reqref{RQPC101}
|
||||
- @reqref{RQPC102}
|
||||
|
||||
- @reqref{RQPC201}
|
||||
- @reqref{RQPC202}
|
||||
|
||||
|
||||
@section srs_user User Characteristics
|
||||
@ -159,71 +99,85 @@ The main users of the QP/C framework are **embedded software engineers**, who de
|
||||
|
||||
@section srs_assume Assumptions and Dependencies
|
||||
|
||||
@next{srs}
|
||||
@next{srs_fun}
|
||||
*/
|
||||
/*##########################################################################*/
|
||||
/*! @page srs Requirements
|
||||
/*! @page srs_fun Functional Requirements
|
||||
|
||||
|
||||
|
||||
@section srs_fun Functional Requirements
|
||||
@section srs_qf Active Object Framework
|
||||
|
||||
|
||||
@subsection srs_qf Active Object Framework
|
||||
The software shall support hierarchical state nesting
|
||||
@section srs_qep State Machine Event Processor
|
||||
|
||||
@reqdef{RQPC101} The software shall support hierarchical state nesting
|
||||
|
||||
@subsection srs_qep State Machine Event Processor
|
||||
|
||||
|
||||
@reqdef{RQPC101, The software shall support hierarchical state nesting}
|
||||
@par Amplification
|
||||
@amplification
|
||||
State hierarchy is the primary mechanism of behavioral reuse in state machines.
|
||||
@par Rationale
|
||||
|
||||
@rationale
|
||||
This is a useful thing to have
|
||||
|
||||
@reqdef{RQPC102, The software shall support manual coding}
|
||||
@reqdef{RQPC102} The software shall support manual coding
|
||||
|
||||
@amplification
|
||||
The implementation must be traceable.
|
||||
|
||||
|
||||
@section srs_qv Cooperative Run-to-Completion Kernel
|
||||
|
||||
|
||||
|
||||
@subsection srs_qv Cooperative Run-to-Completion Kernel
|
||||
@section srs_qk Preemptive Run-to-Completion Kernel
|
||||
|
||||
|
||||
|
||||
@subsection srs_qk Preemptive Run-to-Completion Kernel
|
||||
@section srs_qxk Preemptive Blocking Kernel
|
||||
|
||||
|
||||
@next{srs_nf}
|
||||
*/
|
||||
/*##########################################################################*/
|
||||
/*! @page srs_nf Non-Functional Requirements
|
||||
|
||||
|
||||
@section srs_quality Software Quality Attributes
|
||||
|
||||
|
||||
|
||||
@subsection srs_qxk Preemptive Blocking Kernel
|
||||
@section srs_perform Performance Requirements
|
||||
|
||||
@reqdef{RQPC201} The software shall support hierarchical state nesting
|
||||
|
||||
@section srs_non-fun Non-functional Requirements
|
||||
@amplification
|
||||
State hierarchy is the primary mechanism of behavioral reuse in state machines.
|
||||
|
||||
@rationale
|
||||
This is a useful thing to have
|
||||
|
||||
@subsection srs_quality Software Quality Attributes
|
||||
@section srs_port Portability Requirements
|
||||
|
||||
@reqdef{RQPC202}
|
||||
The software shall support hierarchical state nesting
|
||||
|
||||
@par Amplification
|
||||
The implementation must be traceable.
|
||||
|
||||
|
||||
|
||||
@subsection srs_perform Performance Requirements
|
||||
@section srs_safe Safety Requirements
|
||||
|
||||
|
||||
|
||||
@subsection srs_port Portability Requirements
|
||||
|
||||
|
||||
|
||||
@subsection srs_safe Safety Requirements
|
||||
|
||||
|
||||
|
||||
@subsection srs_secure Security Requirements
|
||||
@section srs_secure Security Requirements
|
||||
|
||||
|
||||
|
||||
@section srs_constr Constraints
|
||||
|
||||
|
||||
@subsection srs_standards Compliance with Standards
|
||||
@section srs_standards Compliance with Standards
|
||||
|
||||
|
||||
@next{sas_toc}
|
||||
*/
|
||||
|
@ -69,35 +69,35 @@ The figure below shows the main classes comprising the QP/C framework and their
|
||||
|
||||
@image html qp_classes.gif "Main Classes in the QP Framework"
|
||||
|
||||
<ul class="tag">
|
||||
<li><span class="tag">0</span> The ::QEvt class represents events without parameters and serves as the base class for derivation of time events and any events with parameters. For example, application-level events `ObjectPosEvt` and `ObjectImageEvt` inherit ::QEvt and add to it some parameters (see [8]).
|
||||
</li>
|
||||
<dl class="tag">
|
||||
<dt>0</dt><dd> The ::QEvt class represents events without parameters and serves as the base class for derivation of time events and any events with parameters. For example, application-level events `ObjectPosEvt` and `ObjectImageEvt` inherit ::QEvt and add to it some parameters (see [8]).
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">1</span> The abstract ::QHsm class represents a Hierarchical State Machine (HSM) with full support for hierarchical nesting of states, entry/exit actions, initial transitions, and transitions to history in any composite state. This class is designed for ease of manual coding of HSMs in C, but it is also supported by the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>.
|
||||
<dt>1</dt><dd> The abstract ::QHsm class represents a Hierarchical State Machine (HSM) with full support for hierarchical nesting of states, entry/exit actions, initial transitions, and transitions to history in any composite state. This class is designed for ease of manual coding of HSMs in C, but it is also supported by the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>.
|
||||
::QHsm is also the base class for the ::QMsm state machine, which provides a superior efficiency, but requires the use of the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a> to generate code.
|
||||
</li>
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">2</span> The abstract ::QActive class represents an active object that uses the ::QHsm style implementation strategy for state machines. This strategy is tailored to manual coding, but it is also supported by the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>. The resulting code is slower than in the ::QMsm-style implementation strategy. The @ref game application provides an example of application-level classes deriving from ::QActive and ::QHsm (see [6] and [7]).
|
||||
</li>
|
||||
<dt>2</dt><dd> The abstract ::QActive class represents an active object that uses the ::QHsm style implementation strategy for state machines. This strategy is tailored to manual coding, but it is also supported by the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>. The resulting code is slower than in the ::QMsm-style implementation strategy. The @ref game application provides an example of application-level classes deriving from ::QActive and ::QHsm (see [6] and [7]).
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">3</span> The abstract ::QMsm class (QM State Machine) derives from ::QHsm and implements the fastest and the most efficient strategy for coding hierarchical state machines, but this strategy is not human-maintainable and requires the use of the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>. The class is abstract, meaning that it is not designed to be instantiated directly, but rather only for inheritance.
|
||||
</li>
|
||||
<dt>3</dt><dd> The abstract ::QMsm class (QM State Machine) derives from ::QHsm and implements the fastest and the most efficient strategy for coding hierarchical state machines, but this strategy is not human-maintainable and requires the use of the <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM modeling tool</a>. The class is abstract, meaning that it is not designed to be instantiated directly, but rather only for inheritance.
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">4</span> The abstract ::QMActive class represents an active object that uses the ::QMsm state machine implementation strategy. This strategy requires the use of the QM modeling tool to generate state machine code automatically, but the code is faster than in the ::QHsm style implementation strategy and needs less run-time support (smaller event-processor).
|
||||
</li>
|
||||
<dt>4</dt><dd>The abstract ::QMActive class represents an active object that uses the ::QMsm state machine implementation strategy. This strategy requires the use of the QM modeling tool to generate state machine code automatically, but the code is faster than in the ::QHsm style implementation strategy and needs less run-time support (smaller event-processor).
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">5</span> The ::QTimeEvt class represents time events in QP. **Time events** are special QP events equipped with the notion of time passage. The basic usage model of the time events is as follows. An active object allocates one or more ::QTimeEvt objects (provides the storage for them). When the active object needs to arrange for a timeout, it arms one of its time events to fire either just once (one-shot) or periodically. Each time event times out independently from the others, so a QP application can make multiple parallel timeout requests (from the same or different active objects). When QP detects that the appropriate moment has arrived, it inserts the time event directly into the recipient's event queue. The recipient then processes the time event just like any other event.
|
||||
</li>
|
||||
<dt>5</dt><dd> The ::QTimeEvt class represents time events in QP. **Time events** are special QP events equipped with the notion of time passage. The basic usage model of the time events is as follows. An active object allocates one or more ::QTimeEvt objects (provides the storage for them). When the active object needs to arrange for a timeout, it arms one of its time events to fire either just once (one-shot) or periodically. Each time event times out independently from the others, so a QP application can make multiple parallel timeout requests (from the same or different active objects). When QP detects that the appropriate moment has arrived, it inserts the time event directly into the recipient's event queue. The recipient then processes the time event just like any other event.
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">6</span> Active Objects in the application derive either from the ::QActive or ::QMActive base class.
|
||||
</li>
|
||||
<dt>6</dt><dd> Active Objects in the application derive either from the ::QActive or ::QMActive base class.
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">7</span> Applications can also use classes derived directly from the ::QHsm or ::QMsm base classes to represent "raw" state machines that are not active objects, because they don't have event queue and execution thread. Such "raw" state machines are typically used as "Orthogonal Components".
|
||||
</li>
|
||||
<dt>7</dt><dd> Applications can also use classes derived directly from the ::QHsm or ::QMsm base classes to represent "raw" state machines that are not active objects, because they don't have event queue and execution thread. Such "raw" state machines are typically used as "Orthogonal Components".
|
||||
</dd>
|
||||
|
||||
<li><span class="tag">8</span> Application-level events with parameters derive from the ::QEvt class.
|
||||
</li>
|
||||
</ul>
|
||||
<dt>8</dt><dd> Application-level events with parameters derive from the ::QEvt class.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
@section sm State Machines
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
* Product: DPP example, NUCLEO-L053R8 board, preemptive QXK kernel
|
||||
* Last updated for version 6.9.3
|
||||
* Last updated on 2021-03-03
|
||||
* Product: DPP example, STM32 NUCLEO-L053R8 board, preemptive QXK kernel
|
||||
* Last updated for version 6.9.4
|
||||
* Last updated on 2021-08-04
|
||||
*
|
||||
* Q u a n t u m L e a P s
|
||||
* ------------------------
|
||||
@ -55,6 +55,7 @@ static uint32_t l_rnd; /* random seed */
|
||||
|
||||
/* QSpy source IDs */
|
||||
static QSpyId const l_SysTick_Handler = { 0U };
|
||||
static QSpyId const l_EXTI0_1_IRQHandler = { 0U };
|
||||
|
||||
enum AppRecords { /* application-specific trace records */
|
||||
PHILO_STAT = QS_USER
|
||||
@ -118,7 +119,7 @@ void SysTick_Handler(void) { /* system clock tick ISR */
|
||||
void EXTI0_1_IRQHandler(void) {
|
||||
static QEvt const testEvt = { TEST_SIG, 0U, 0U };
|
||||
QXK_ISR_ENTRY(); /* inform QXK about entering an ISR */
|
||||
QXTHREAD_POST_X(XT_Test2, &testEvt, 0U, (void *)0);
|
||||
QXTHREAD_POST_X(XT_Test2, &testEvt, 0U, &l_EXTI0_1_IRQHandler);
|
||||
QXK_ISR_EXIT(); /* inform QXK about exiting an ISR */
|
||||
}
|
||||
/*..........................................................................*/
|
||||
@ -167,6 +168,7 @@ void BSP_init(void) {
|
||||
Q_ERROR();
|
||||
}
|
||||
QS_OBJ_DICTIONARY(&l_SysTick_Handler);
|
||||
QS_OBJ_DICTIONARY(&l_EXTI0_1_IRQHandler);
|
||||
QS_USR_DICTIONARY(PHILO_STAT);
|
||||
|
||||
/* setup the QS filters... */
|
||||
|
@ -3,14 +3,14 @@
|
||||
* Model: calc1_sub.qm
|
||||
* File: ${.::calc1_sub.c}
|
||||
*
|
||||
* This code has been generated by QM 5.1.0 <www.state-machine.com/qm/>.
|
||||
* This code has been generated by QM 5.1.3 <www.state-machine.com/qm/>.
|
||||
* DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
*
|
||||
* This code is covered by the following QP license:
|
||||
* License # : QPC-EVAL
|
||||
* Issued to : Institution or an individual evaluating the QP/C framework
|
||||
* Framework(s): qpc
|
||||
* Support ends: 2021-12-31
|
||||
* Support ends: 2022-12-31
|
||||
* Product(s) :
|
||||
* This license is available only for evaluation purposes and
|
||||
* the generated code is still licensed under the terms of GPL.
|
||||
@ -225,8 +225,8 @@ static QMState const Calc_operand_negated_s = {
|
||||
|
||||
/*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
|
||||
/*. Check for the minimum required QP version */
|
||||
#if (QP_VERSION < 680U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpc version 6.8.0 or higher required
|
||||
#if (QP_VERSION < 690U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
|
||||
#error qpc version 6.9.0 or higher required
|
||||
#endif
|
||||
/*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
|
||||
/*.$define${SMs::the_calc} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
|
||||
|
@ -3,14 +3,14 @@
|
||||
* Model: calc1_sub.qm
|
||||
* File: ${.::calc1_sub.h}
|
||||
*
|
||||
* This code has been generated by QM 5.1.0 <www.state-machine.com/qm/>.
|
||||
* This code has been generated by QM 5.1.3 <www.state-machine.com/qm/>.
|
||||
* DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
|
||||
*
|
||||
* This code is covered by the following QP license:
|
||||
* License # : QPC-EVAL
|
||||
* Issued to : Institution or an individual evaluating the QP/C framework
|
||||
* Framework(s): qpc
|
||||
* Support ends: 2021-12-31
|
||||
* Support ends: 2022-12-31
|
||||
* Product(s) :
|
||||
* This license is available only for evaluation purposes and
|
||||
* the generated code is still licensed under the terms of GPL.
|
||||
|
@ -4,8 +4,8 @@
|
||||
* @ingroup qep
|
||||
* @cond
|
||||
******************************************************************************
|
||||
* Last updated for version 6.9.3
|
||||
* Last updated on 2021-02-26
|
||||
* Last updated for version 6.9.4
|
||||
* Last updated on 2021-07-29
|
||||
*
|
||||
* Q u a n t u m L e a P s
|
||||
* ------------------------
|
||||
@ -45,16 +45,16 @@
|
||||
* major version number, Y is a 1-digit minor version number, and Z is
|
||||
* a 1-digit release number.
|
||||
*/
|
||||
#define QP_VERSION 693U
|
||||
#define QP_VERSION 694U
|
||||
|
||||
/*! The current QP version number string of the form XX.Y.Z, where XX is
|
||||
* a 2-digit major version number, Y is a 1-digit minor version number,
|
||||
* and Z is a 1-digit release number.
|
||||
*/
|
||||
#define QP_VERSION_STR "6.9.3"
|
||||
#define QP_VERSION_STR "6.9.4"
|
||||
|
||||
/*! Encrypted current QP release (6.9.3) and date (2021-04-12) */
|
||||
#define QP_RELEASE 0x8295AA8AU
|
||||
/*! Encrypted current QP release (6.9.4) and date (2021-07-31) */
|
||||
#define QP_RELEASE 0x8264FD99U
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
|