updated doxygen directory
This commit is contained in:
MMS 2021-11-04 15:08:54 -04:00
parent d904551008
commit 2274ae703b
9 changed files with 465 additions and 675 deletions

View File

@ -1,403 +1,403 @@
# Doxyfile 1.9.1 # Doxyfile 1.9.2
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QP/C" PROJECT_NAME = QP/C
PROJECT_NUMBER = "6.9.4" PROJECT_NUMBER = 6.9.4
PROJECT_BRIEF = "Real-Time Embedded Framework" PROJECT_BRIEF = "Real-Time Embedded Framework"
PROJECT_LOGO = images/logo_ql.png PROJECT_LOGO = images/logo_ql.png
OUTPUT_DIRECTORY = OUTPUT_DIRECTORY =
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
OUTPUT_TEXT_DIRECTION = None BRIEF_MEMBER_DESC = YES
BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES
REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \
ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \
"The $name widget" \ "The $name file" \
"The $name file" \ is \
is \ provides \
provides \ specifies \
specifies \ contains \
contains \ represents \
represents \ a \
a \ an \
an \ the
the ALWAYS_DETAILED_SEC = NO
ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO
INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO
FULL_PATH_NAMES = NO STRIP_FROM_PATH =
STRIP_FROM_PATH = STRIP_FROM_INC_PATH =
STRIP_FROM_INC_PATH = SHORT_NAMES = NO
SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO
JAVADOC_AUTOBRIEF = NO JAVADOC_BANNER = NO
JAVADOC_BANNER = NO QT_AUTOBRIEF = NO
QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO PYTHON_DOCSTRING = YES
PYTHON_DOCSTRING = YES INHERIT_DOCS = YES
INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO
SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 4
TAB_SIZE = 4 ALIASES = "next{1}=<hr><b>Next:</b> @ref \1</p>" \
ALIASES = "next{1}=<hr><b>Next:</b> @ref \1</p>" \ "description=@par Description" \
"description=@par Description" \ "amplification=@par Amplification" \
"amplification=@par Amplification" \ "rationale=@par Rationale" \
"rationale=@par Rationale" \ "caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \
"caption{1}=<div class=\"caption\" align=\"center\">\1</div>" \ "hint=@par Hint" \
"hint=@par Hint" \ "usage=@par Usage" \
"usage=@par Usage" \ "termref{2}=<a class=\"extern\" target=\"_blank\" href=\"https://www.state-machine.com/\1\">\2</a>" \
"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" \
"reqdef{1}=@anchor \1 @xrefitem reqdef \"Requirement\" \"Requirement Index\" @ref \1" \ "reqref{1}=@ref \1 \"\1\""
"reqref{1}=@ref \1 \"\1\"" OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO
OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_SLICE = NO
OPTIMIZE_OUTPUT_SLICE = NO EXTENSION_MAPPING = lnt=Objective-C
EXTENSION_MAPPING = lnt=Objective-C MARKDOWN_SUPPORT = YES
MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 4
TOC_INCLUDE_HEADINGS = 4 AUTOLINK_SUPPORT = YES
AUTOLINK_SUPPORT = YES BUILTIN_STL_SUPPORT = NO
BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO
CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO
SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES
IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO
DISTRIBUTE_GROUP_DOC = NO GROUP_NESTED_COMPOUNDS = NO
GROUP_NESTED_COMPOUNDS = NO SUBGROUPING = YES
SUBGROUPING = YES INLINE_GROUPED_CLASSES = YES
INLINE_GROUPED_CLASSES = YES INLINE_SIMPLE_STRUCTS = YES
INLINE_SIMPLE_STRUCTS = YES TYPEDEF_HIDES_STRUCT = YES
TYPEDEF_HIDES_STRUCT = YES LOOKUP_CACHE_SIZE = 0
LOOKUP_CACHE_SIZE = 0 NUM_PROC_THREADS = 1
NUM_PROC_THREADS = 1 #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Build related configuration options
# Build related configuration options #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- EXTRACT_ALL = YES
EXTRACT_ALL = YES EXTRACT_PRIVATE = YES
EXTRACT_PRIVATE = YES EXTRACT_PRIV_VIRTUAL = NO
EXTRACT_PRIV_VIRTUAL = NO EXTRACT_PACKAGE = YES
EXTRACT_PACKAGE = YES EXTRACT_STATIC = YES
EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO
EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO
EXTRACT_ANON_NSPACES = NO RESOLVE_UNNAMED_PARAMS = YES
RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO
HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO
HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO
INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO
CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = YES
HIDE_SCOPE_NAMES = YES HIDE_COMPOUND_REFERENCE= NO
HIDE_COMPOUND_REFERENCE= NO SHOW_HEADERFILE = YES
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = NO SORT_MEMBER_DOCS = NO
SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
SHOW_FILES = YES SHOW_FILES = YES
SHOW_NAMESPACES = YES SHOW_NAMESPACES = YES
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
LAYOUT_FILE = LAYOUT_FILE =
CITE_BIB_FILES = CITE_BIB_FILES =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to warning and progress messages # Configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
QUIET = NO QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO WARN_IF_INCOMPLETE_DOC = YES
WARN_AS_ERROR = NO WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text" WARN_AS_ERROR = NO
WARN_LOGFILE = WARN_FORMAT = "$file:$line: $text"
#--------------------------------------------------------------------------- WARN_LOGFILE =
# Configuration options related to the input files #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the input files
INPUT = main.dox \ #---------------------------------------------------------------------------
gs.dox \ INPUT = main.dox \
struct.dox \ gs.dox \
api.dox \ struct.dox \
exa.dox \ api.dox \
exa_apps.dox \ exa.dox \
exa_native.dox \ exa_apps.dox \
../../doxygen/exa_low-power.dox \ exa_native.dox \
exa_rtos.dox \ ../../ql-doxygen/exa_low-power.dox \
exa_os.dox \ exa_rtos.dox \
exa_qutest.dox \ exa_os.dox \
exa_mware.dox \ exa_qutest.dox \
ports.dox \ exa_mware.dox \
ports_native.dox \ ports.dox \
../../doxygen/ports_arm-cm.dox \ ports_native.dox \
ports_rtos.dox \ ../../ql-doxygen/ports_arm-cm.dox \
ports_os.dox \ ports_rtos.dox \
history.dox \ ports_os.dox \
macros.h \ history.dox \
metrics.dox \ macros.h \
modules.dox \ metrics.dox \
../include \ modules.dox \
../src \ ../include \
../ports/lint-plus \ ../src \
../../doxygen/help.dox ../ports/lint-plus \
INPUT_ENCODING = UTF-8 ../../ql-doxygen/help.dox
FILE_PATTERNS = *.dox \ INPUT_ENCODING = UTF-8
*.h \ FILE_PATTERNS = *.dox \
*.c \ *.h \
*.cpp \ *.c \
*.s \ *.cpp \
*.asm \ *.s \
*.lnt *.asm \
RECURSIVE = YES *.lnt
EXCLUDE = ../include/qs_dummy.h RECURSIVE = YES
EXCLUDE_SYMLINKS = NO EXCLUDE = ../include/qs_dummy.h
EXCLUDE_PATTERNS = EXCLUDE_SYMLINKS = NO
EXCLUDE_SYMBOLS = QP_IMPL EXCLUDE_PATTERNS =
EXAMPLE_PATH = snippets \ EXCLUDE_SYMBOLS = QP_IMPL
../include \ EXAMPLE_PATH = snippets \
../src \ ../include \
../ports \ ../src \
../examples ../ports \
EXAMPLE_PATTERNS = * ../examples
EXAMPLE_RECURSIVE = NO EXAMPLE_PATTERNS = *
IMAGE_PATH = images \ EXAMPLE_RECURSIVE = NO
../../doxygen/images IMAGE_PATH = images \
INPUT_FILTER = ../../ql-doxygen/images
FILTER_PATTERNS = INPUT_FILTER =
FILTER_SOURCE_FILES = NO FILTER_PATTERNS =
FILTER_SOURCE_PATTERNS = FILTER_SOURCE_FILES = NO
USE_MDFILE_AS_MAINPAGE = FILTER_SOURCE_PATTERNS =
#--------------------------------------------------------------------------- USE_MDFILE_AS_MAINPAGE =
# Configuration options related to source browsing #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to source browsing
SOURCE_BROWSER = YES #---------------------------------------------------------------------------
INLINE_SOURCES = NO SOURCE_BROWSER = YES
STRIP_CODE_COMMENTS = YES INLINE_SOURCES = NO
REFERENCED_BY_RELATION = NO STRIP_CODE_COMMENTS = YES
REFERENCES_RELATION = NO REFERENCED_BY_RELATION = NO
REFERENCES_LINK_SOURCE = YES REFERENCES_RELATION = NO
SOURCE_TOOLTIPS = YES REFERENCES_LINK_SOURCE = YES
USE_HTAGS = NO SOURCE_TOOLTIPS = YES
VERBATIM_HEADERS = YES USE_HTAGS = NO
CLANG_ASSISTED_PARSING = NO VERBATIM_HEADERS = YES
CLANG_ADD_INC_PATHS = YES CLANG_ASSISTED_PARSING = NO
CLANG_OPTIONS = CLANG_ADD_INC_PATHS = YES
CLANG_DATABASE_PATH = CLANG_OPTIONS =
#--------------------------------------------------------------------------- CLANG_DATABASE_PATH =
# Configuration options related to the alphabetical class index #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index
ALPHABETICAL_INDEX = YES #---------------------------------------------------------------------------
IGNORE_PREFIX = ALPHABETICAL_INDEX = YES
#--------------------------------------------------------------------------- IGNORE_PREFIX =
# Configuration options related to the HTML output #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the HTML output
GENERATE_HTML = YES #---------------------------------------------------------------------------
HTML_OUTPUT = ../html GENERATE_HTML = YES
HTML_FILE_EXTENSION = .html HTML_OUTPUT = ../html
HTML_HEADER = ../../doxygen/header-awesome.html HTML_FILE_EXTENSION = .html
HTML_FOOTER = ../../doxygen/footer-awesome.html HTML_HEADER = ../../ql-doxygen/header-awesome.html
HTML_STYLESHEET = HTML_FOOTER = ../../ql-doxygen/footer-awesome.html
HTML_EXTRA_STYLESHEET = ../../doxygen/doxygen-awesome.css \ HTML_STYLESHEET =
../../doxygen/ql-awesome.css HTML_EXTRA_STYLESHEET = ../../ql-doxygen/doxygen-awesome.css \
HTML_EXTRA_FILES = ../../doxygen/doxygen-awesome-darkmode-toggle.js ../../ql-doxygen/ql-awesome.css
HTML_COLORSTYLE_HUE = 209 HTML_EXTRA_FILES = ../../ql-doxygen/doxygen-awesome-darkmode-toggle.js
HTML_COLORSTYLE_SAT = 255 HTML_COLORSTYLE_HUE = 209
HTML_COLORSTYLE_GAMMA = 113 HTML_COLORSTYLE_SAT = 255
HTML_TIMESTAMP = NO HTML_COLORSTYLE_GAMMA = 113
HTML_DYNAMIC_MENUS = YES HTML_TIMESTAMP = NO
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_MENUS = YES
HTML_INDEX_NUM_ENTRIES = 100 HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = NO HTML_INDEX_NUM_ENTRIES = 100
DOCSET_FEEDNAME = "Doxygen generated docs" GENERATE_DOCSET = NO
DOCSET_BUNDLE_ID = com.state-machine.doc DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_PUBLISHER_ID = com.state-machine.doc DOCSET_BUNDLE_ID = com.state-machine.doc
DOCSET_PUBLISHER_NAME = QuantumLeaps DOCSET_PUBLISHER_ID = com.state-machine.doc
GENERATE_HTMLHELP = NO DOCSET_PUBLISHER_NAME = QuantumLeaps
CHM_FILE = ../qpc.chm GENERATE_HTMLHELP = NO
HHC_LOCATION = CHM_FILE = ../qpc.chm
GENERATE_CHI = NO HHC_LOCATION =
CHM_INDEX_ENCODING = GENERATE_CHI = NO
BINARY_TOC = YES CHM_INDEX_ENCODING =
TOC_EXPAND = NO BINARY_TOC = YES
GENERATE_QHP = NO TOC_EXPAND = NO
QCH_FILE = GENERATE_QHP = NO
QHP_NAMESPACE = com.state-machine.qp QCH_FILE =
QHP_VIRTUAL_FOLDER = doc QHP_NAMESPACE = com.state-machine.qp
QHP_CUST_FILTER_NAME = QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_ATTRS = QHP_CUST_FILTER_NAME =
QHP_SECT_FILTER_ATTRS = QHP_CUST_FILTER_ATTRS =
QHG_LOCATION = QHP_SECT_FILTER_ATTRS =
GENERATE_ECLIPSEHELP = NO QHG_LOCATION =
ECLIPSE_DOC_ID = com.state-machine.qp GENERATE_ECLIPSEHELP = NO
DISABLE_INDEX = YES ECLIPSE_DOC_ID = com.state-machine.qp
GENERATE_TREEVIEW = YES DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 300 FULL_SIDEBAR = NO
EXT_LINKS_IN_WINDOW = NO ENUM_VALUES_PER_LINE = 4
HTML_FORMULA_FORMAT = png TREEVIEW_WIDTH = 300
FORMULA_FONTSIZE = 10 EXT_LINKS_IN_WINDOW = NO
FORMULA_TRANSPARENT = YES HTML_FORMULA_FORMAT = png
FORMULA_MACROFILE = FORMULA_FONTSIZE = 10
USE_MATHJAX = NO FORMULA_TRANSPARENT = YES
MATHJAX_FORMAT = HTML-CSS FORMULA_MACROFILE =
MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 USE_MATHJAX = NO
MATHJAX_EXTENSIONS = MATHJAX_VERSION = MathJax_2
MATHJAX_CODEFILE = MATHJAX_FORMAT = HTML-CSS
SEARCHENGINE = YES MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2
SERVER_BASED_SEARCH = NO MATHJAX_EXTENSIONS =
EXTERNAL_SEARCH = NO MATHJAX_CODEFILE =
SEARCHENGINE_URL = SEARCHENGINE = YES
SEARCHDATA_FILE = searchdata.xml SERVER_BASED_SEARCH = NO
EXTERNAL_SEARCH_ID = EXTERNAL_SEARCH = NO
EXTRA_SEARCH_MAPPINGS = SEARCHENGINE_URL =
#--------------------------------------------------------------------------- SEARCHDATA_FILE = searchdata.xml
# Configuration options related to the LaTeX output EXTERNAL_SEARCH_ID =
#--------------------------------------------------------------------------- EXTRA_SEARCH_MAPPINGS =
GENERATE_LATEX = NO #---------------------------------------------------------------------------
LATEX_OUTPUT = latex # Configuration options related to the LaTeX output
LATEX_CMD_NAME = latex #---------------------------------------------------------------------------
MAKEINDEX_CMD_NAME = makeindex GENERATE_LATEX = NO
LATEX_MAKEINDEX_CMD = makeindex LATEX_OUTPUT = latex
COMPACT_LATEX = NO LATEX_CMD_NAME = latex
PAPER_TYPE = letter MAKEINDEX_CMD_NAME = makeindex
EXTRA_PACKAGES = LATEX_MAKEINDEX_CMD = makeindex
LATEX_HEADER = COMPACT_LATEX = NO
LATEX_FOOTER = PAPER_TYPE = letter
LATEX_EXTRA_STYLESHEET = EXTRA_PACKAGES =
LATEX_EXTRA_FILES = LATEX_HEADER =
PDF_HYPERLINKS = YES LATEX_FOOTER =
USE_PDFLATEX = YES LATEX_EXTRA_STYLESHEET =
LATEX_BATCHMODE = NO LATEX_EXTRA_FILES =
LATEX_HIDE_INDICES = NO PDF_HYPERLINKS = YES
LATEX_SOURCE_CODE = NO USE_PDFLATEX = YES
LATEX_BIB_STYLE = plain LATEX_BATCHMODE = NO
LATEX_TIMESTAMP = NO LATEX_HIDE_INDICES = NO
LATEX_EMOJI_DIRECTORY = LATEX_BIB_STYLE = plain
#--------------------------------------------------------------------------- LATEX_TIMESTAMP = NO
# Configuration options related to the RTF output LATEX_EMOJI_DIRECTORY =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = NO # Configuration options related to the RTF output
RTF_OUTPUT = rtf #---------------------------------------------------------------------------
COMPACT_RTF = NO GENERATE_RTF = NO
RTF_HYPERLINKS = NO RTF_OUTPUT = rtf
RTF_STYLESHEET_FILE = COMPACT_RTF = NO
RTF_EXTENSIONS_FILE = RTF_HYPERLINKS = NO
RTF_SOURCE_CODE = NO RTF_STYLESHEET_FILE =
#--------------------------------------------------------------------------- RTF_EXTENSIONS_FILE =
# Configuration options related to the man page output #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the man page output
GENERATE_MAN = NO #---------------------------------------------------------------------------
MAN_OUTPUT = man GENERATE_MAN = NO
MAN_EXTENSION = .3 MAN_OUTPUT = man
MAN_SUBDIR = MAN_EXTENSION = .3
MAN_LINKS = NO MAN_SUBDIR =
#--------------------------------------------------------------------------- MAN_LINKS = NO
# Configuration options related to the XML output #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the XML output
GENERATE_XML = NO #---------------------------------------------------------------------------
XML_OUTPUT = xml GENERATE_XML = NO
XML_PROGRAMLISTING = YES XML_OUTPUT = xml
XML_NS_MEMB_FILE_SCOPE = NO XML_PROGRAMLISTING = YES
#--------------------------------------------------------------------------- XML_NS_MEMB_FILE_SCOPE = NO
# Configuration options related to the DOCBOOK output #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # Configuration options related to the DOCBOOK output
GENERATE_DOCBOOK = NO #---------------------------------------------------------------------------
DOCBOOK_OUTPUT = docbook GENERATE_DOCBOOK = NO
DOCBOOK_PROGRAMLISTING = NO DOCBOOK_OUTPUT = docbook
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output # Configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the Perl module output # Configuration options related to the Perl module output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_PERLMOD = NO GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX = PERLMOD_MAKEVAR_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = Q_SPY \ PREDEFINED = Q_SPY \
QP_IMPL \ QP_IMPL \
Q_UTEST \ Q_UTEST \
QK_ON_CONTEXT_SW \ QK_ON_CONTEXT_SW \
QXK_ON_CONTEXT_SW \ QXK_ON_CONTEXT_SW \
QF_MAX_ACTIVE \ QF_MAX_ACTIVE \
QF_MAX_TICK_RATE \ QF_MAX_TICK_RATE \
QF_MAX_EPOOL \ QF_MAX_EPOOL \
QF_EVENT_SIZ_SIZE \ QF_EVENT_SIZ_SIZE \
QF_EQUEUE_CTR_SIZE \ QF_EQUEUE_CTR_SIZE \
QF_MPOOL_SIZ_SIZE \ QF_MPOOL_SIZ_SIZE \
QF_MPOOL_CTR_SIZE \ QF_MPOOL_CTR_SIZE \
QF_TIMEEVT_CTR_SIZE \ QF_TIMEEVT_CTR_SIZE \
QF_ACTIVE_STOP \ QF_ACTIVE_STOP \
QS_TIME_SIZE QS_TIME_SIZE
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to external references # Configuration options related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE =
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES EXTERNAL_PAGES = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
DIA_PATH = DIA_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES HAVE_DOT = YES
DOT_NUM_THREADS = 0 DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10 DOT_FONTSIZE = 10
DOT_FONTPATH = DOT_FONTPATH =
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES GROUP_GRAPHS = YES
UML_LOOK = YES UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 10 UML_LIMIT_NUM_FIELDS = 10
DOT_UML_DETAILS = NO DOT_UML_DETAILS = NO
DOT_WRAP_THRESHOLD = 17 DOT_WRAP_THRESHOLD = 17
TEMPLATE_RELATIONS = NO TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO CALL_GRAPH = NO
CALLER_GRAPH = NO CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO INTERACTIVE_SVG = NO
DOT_PATH = C:/tools/graphviz/bin DOT_PATH = C:/tools/graphviz/bin
DOTFILE_DIRS = DOTFILE_DIRS =
MSCFILE_DIRS = MSCFILE_DIRS =
DIAFILE_DIRS = DIAFILE_DIRS =
PLANTUML_JAR_PATH = PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE = PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH = PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50 DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0 MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES

View File

@ -1,13 +1,13 @@
# Doxyfile 1.9.0 # Doxyfile 1.9.0
@INCLUDE = Doxyfile @INCLUDE = Doxyfile
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the HTML output # Configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
HTML_OUTPUT = tmp HTML_OUTPUT = tmp
HTML_HEADER = ../../doxygen/header.html HTML_HEADER = ../../ql-doxygen/header.html
HTML_FOOTER = ../../doxygen/footer.html HTML_FOOTER = ../../ql-doxygen/footer.html
HTML_EXTRA_STYLESHEET = ../../doxygen/ql.css HTML_EXTRA_STYLESHEET = ../../ql-doxygen/ql.css
HTML_EXTRA_FILES = HTML_EXTRA_FILES =
GENERATE_HTMLHELP = YES GENERATE_HTMLHELP = YES

View File

@ -1,11 +1,10 @@
# Doxyfile 1.9.0 # Doxyfile 1.9.0
@INCLUDE = Doxyfile @INCLUDE = Doxyfile
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the input files # Configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = main.dox \ INPUT = main.dox \
srs.dox \ srs.dox \
modules.dox modules.dox
../../doxygen/help.dox

View File

@ -1,226 +0,0 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.8.18 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="interfaces" visible="yes" title="">
<tab type="interfacelist" visible="yes" title="" intro=""/>
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="yes" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="yes" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@ -19,21 +19,31 @@ lwIP example for Texas Instruments EK-LM3S6965 (Cortex-M3) with GNU-ARM and IAR-
@image html bd_EK-LM3S6965_lwip.jpg QP-lwIP on EK-LM3S6965 @image html bd_EK-LM3S6965_lwip.jpg QP-lwIP on EK-LM3S6965
@n@n @n@n
@image html under_construction.jpg
@section lwip_AN Application Note: QP and lwIP TCP/IP Stack
The [Application Note](https://www.state-machine.com/doc/AN_QP_and_lwIP.pdf) describes how to use the lightweight TCP/IP stack called lwIP with the QP real-time embedded frameworks.
[![Application Note: QP and lwIP TCP/IP](AN-QL.png)](https://www.state-machine.com/doc/AN_QP_and_lwIP.pdf)
@htmlonly
<div class="caption">
Application Note: QP and lwIP TCP/IP Stack
</div>
@endhtmlonly
@next{ exa_emwin}
*/ */
/*##########################################################################*/ /*##########################################################################*/
/*! @page exa_emwin emWin Embedded GUI /*! @page exa_emwin emWin Embedded GUI
<p>The <a href="https://www.state-machine.com/doc/AN_QP_emWin.pdf" target="_blank" class="extern"><strong>Application Note "QP and emWin Embedded GUI"</strong></a> describes how to use QP&trade; with the <a href="https://www.segger.com/emwin.html" target="_blank" class="extern">emWin&trade; Embedded GUI from SEGGER</a> and also <a href="https://www.micrium.com/rtos/gui/" target="_blank" class="extern">uC/GUI from Micrium</a>, which technically are the same products. <p>The <a href="https://www.state-machine.com/doc/AN_QP_emWin.pdf" target="_blank" class="extern"><strong>Application Note "QP and emWin Embedded GUI"</strong></a> describes how to use QP&trade; with the <a href="https://www.segger.com/emwin.html" target="_blank" class="extern">emWin&trade; Embedded GUI from SEGGER</a> and also <a href="https://www.micrium.com/rtos/gui/" target="_blank" class="extern">&micro;C/GUI from Micrium</a>, which technically are the same products.
</p> </p>
@image html emWin_demo.jpg QP-emWin demo (DPP) running on Windows @image html emWin_demo.jpg QP-emWin demo (DPP) running on Windows
To demonstrate the working examples, this Application Note uses the emWin Simulation on Windows, which is available for a <a href="https://www.segger.com/downloads/emwin" target="_blank" class="extern">free download from the SEGGER</a> (requires registration). You need only a Windows-based PC to execute the examples provided in this Application Note. Additionally, youd need Microsoft Visual Studio 2013 (could be the free Express Edition) or higher to re-build and debug the provided examples. To demonstrate the working examples, this Application Note uses the emWin Simulation on Windows, which is available for a <a href="https://www.segger.com/downloads/emwin" target="_blank" class="extern">free download from the SEGGER</a> (requires registration). You need only a Windows-based PC to execute the examples provided in this Application Note. Additionally, you'd need Microsoft Visual Studio 2013 (could be the free Express Edition) or higher to re-build and debug the provided examples.
@note @note
Although the QP-emWin (µC/GUI) integration runs on Windows, the application-level code uses exclusively the embedded emWin&trade; API and is designed to run without any modifications on embedded targets. Although the QP-emWin (&micro;C/GUI) integration runs on Windows, the application-level code uses exclusively the embedded emWin&trade; API and is designed to run without any modifications on embedded targets.
*/ */

View File

@ -1,6 +1,16 @@
/** /**
@page history Revision History @page history Revision History
@section qpc_6_9_4 Version 6.9.4, 2021-10-31
- removed unused `ARM_ARCH` symbol from Makefiles for GNU-ARM
- imoroved the Doxygen documentation for member functions of classes in C
- introudced new styling for the HTML documentation
- updated links in the documentation
@section qpc_6_9_3 Version 6.9.3, 2021-04-12 @section qpc_6_9_3 Version 6.9.3, 2021-04-12
__Feature Requests:__ __Feature Requests:__
@ -616,7 +626,7 @@ This release does not change any of the QP/C APIs.
@section qpc_6_0_1 Version 6.0.1, 2017-11-10 @section qpc_6_0_1 Version 6.0.1, 2017-11-10
The main focus of this release is to fix the remaining problems with transitions out of eXit-Points in sub-machines. Specifically, this release modifies the QMsm-based state machine implementation strategy (file src/qf/qep_msm.c to properly handle transitions from eXit-Points to Entry-Points and from eXit-Points to History connectors in sub-machines. These changes are part of fixing the following bugs reported for QM: The main focus of this release is to fix the remaining problems with transitions out of eXit-Points in sub-machines. Specifically, this release modifies the QMsm-based state machine implementation strategy (file src/qf/qep_msm.c to properly handle transitions from eXit-Points to Entry-Points and from eXit-Points to History connectors in sub-machines. These changes are part of fixing the following bugs reported for QM:
- [bug#190 "Exit-Point segment targeting History doesn't work](https://sourceforge.net/p/qpc/bugs/190/) - [bug#190 "Exit-Point segment targeting History doesn't work"](https://sourceforge.net/p/qpc/bugs/190/)
- [bug#189 "Exit-Point segment targeting an Entry-Point to sub-machine state doesn't work"](https://sourceforge.net/p/qpc/bugs/189/) - [bug#189 "Exit-Point segment targeting an Entry-Point to sub-machine state doesn't work"](https://sourceforge.net/p/qpc/bugs/189/)

BIN
doxygen/images/AN-QL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -29,10 +29,10 @@ The main goals of the QP/C&trade; framework are:
- to provide efficient and thread-safe asynchronous mechanisms for active objects to communicate, such as direct event passing and publish-subscribe. - to provide efficient and thread-safe asynchronous mechanisms for active objects to communicate, such as direct event passing and publish-subscribe.
- to provide event-driven timing services (time events). - to provide event-driven timing services (time events).
- to provide a selection of built-in real-time kernels to run the QP applications, such as the cooperative @ref qv "QV kernel", the preemptive non-blocking @ref qk "QK kernel", and the preemptive blocking @ref qxk "QXK kernel". - to provide a selection of built-in real-time kernels to run the QP applications, such as the cooperative @ref qv "QV kernel", the preemptive non-blocking @ref qk "QK kernel", and the preemptive blocking @ref qxk "QXK kernel".
- to provide testing support for applications based on software tracing (@ref qs "Q-Spy").
- to provide **unit testing** support for applications based on software tracing (<a href="https://www.state-machine.com/qtools/qutest.html"><strong>QUTest&trade;</strong></a>). - to provide **unit testing** support for applications based on software tracing (<a href="https://www.state-machine.com/qtools/qutest.html"><strong>QUTest&trade;</strong></a>).
- to provide portability layer and ready-to-use ports to @ref ports_rtos "3rd-party RTOSes" and desktop operating systems such as @ref posix "Linux" and @ref win32 "Windows". - to provide portability layer and ready-to-use ports to @ref ports_rtos "3rd-party RTOSes" and general purpose operating systems such as @ref posix "Linux" and @ref win32 "Windows".
- to provide a target for modeling and automatic code generation from the <a href="https://www.state-machine.com/qm" target="_blank" class="extern"><strong>QM&trade; modeling tool</strong></a>. - to provide a target for modeling and automatic code generation from the <a href="https://www.state-machine.com/products/qm" target="_blank" class="extern"><strong>QM&trade; modeling tool</strong></a>.
@section ab_special What's special about it? @section ab_special What's special about it?
@ -40,13 +40,13 @@ The main goals of the QP/C&trade; framework are:
The QP/C&trade; Real-Time Embedded Framework (RTEF) is a unique offering on the embedded software market. It provides a modern, reusable **architecture** of embedded applications, which combines object-orientation with the particular model of concurrency, known as <a class="extern" target="_blank" href="https://www.state-machine.com/active-object/"><strong>active objects</strong></a> (actors). This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the right abstractions to effectively apply modeling and code generation to deeply embedded systems. The QP/C&trade; Real-Time Embedded Framework (RTEF) is a unique offering on the embedded software market. It provides a modern, reusable **architecture** of embedded applications, which combines object-orientation with the particular model of concurrency, known as <a class="extern" target="_blank" href="https://www.state-machine.com/active-object/"><strong>active objects</strong></a> (actors). This architecture is generally **safer**, more responsive and easier to understand than "free threading" with a traditional Real-Time Operating System (RTOS). It also provides sufficiently high level of abstraction and the right abstractions to effectively apply modeling and code generation to deeply embedded systems.
@subsection oop Object Orientation @subsection oop Object Orientation
Even though it is written in @ref misra "MISRA-compliant" ANSI-C, QP/C&trade; is fundamentally an **object-oriented** framework, which means that the framework itself and your applications derived from the framework are fundamentally composed of <a href="https://en.wikipedia.org/wiki/Class_(computer_programming)" target="_blank" class="extern">classes</a> and only classes can have @ref sm "state machines" associated with them.<br> Even though it is written in @ref misra "MISRA-compliant" ISO-C, QP/C&trade; is fundamentally an **object-oriented** framework, which means that the framework itself and your applications derived from the framework are fundamentally composed of <a href="https://en.wikipedia.org/wiki/Class_(computer_programming)" target="_blank" class="extern">classes</a> and only classes can have @ref sm "state machines" associated with them.
@n
@note @note
If you program in C and object-oriented programming is new to you, please refer to the Application Note <a class="pdf" target="_blank" href="https://www.state-machine.com/doc/AN_OOP_in_C.pdf">"Object-Oriented Programming in C"</a>, which describes how you can implement the concepts of _classes_, _inheritance_, and _polymorphism_ to portable ANSI-C. If you program in C and object-oriented programming is new to you, please refer to the Application Note <a class="pdf" target="_blank" href="https://www.state-machine.com/doc/AN_OOP_in_C.pdf">"Object-Oriented Programming in C"</a>, which describes how you can implement the concepts of _classes_, _inheritance_, and _polymorphism_ to portable ANSI-C.
<br> @n
@htmlonly @htmlonly
<div class="image"> <div class="image">
<a target="_blank" href="https://www.state-machine.com/doc/AN_OOP_in_C.pdf"><img border="0" src="img/AN_OOP_in_C.gif" title="Download PDF"></a> <a target="_blank" href="https://www.state-machine.com/doc/AN_OOP_in_C.pdf"><img border="0" src="img/AN_OOP_in_C.gif" title="Download PDF"></a>
@ -57,18 +57,15 @@ Application Note: Object-Oriented Programming in C
@endhtmlonly @endhtmlonly
@subsection lightweight Lightweight @subsection lightweight Lightweight
The most unique characteristic of the QP/C&trade; framework is its very small footprint, especially in RAM. In this respect, QP/C&trade; requires less resources than even the smallest conventional Real-Time Operating System (RTOS) kernel. At the same time, QP gives you a much higher level of abstraction than a conventional RTOS. With QP, you work at the level of active objects, state machines and events, as opposed to "naked" threads of an RTOS. The most unique characteristic of the QP/C&trade; framework is its very small footprint, especially in RAM. In this respect, QP/C&trade; requires less resources than even the smallest conventional Real-Time Operating System (RTOS) kernel. At the same time, QP gives you a much higher level of abstraction than a conventional RTOS. With QP, you work at the level of active objects, state machines and events, as opposed to "naked" threads of an RTOS.
@subsection hsms Hierarchical State Machines @subsection hsms Hierarchical State Machines
The behavior of active objects is specified in QP by means of The behavior of active objects is specified in QP/C by means of <a class="extern" target="_blank" href="https://www.state-machine.com/fsm/#HSM">hierarchical state machines (UML statecharts)</a>. The framework supports @ref sm "manual coding of UML state machines in C" (or C++ in case of QP/C++) as well as fully **automatic code generation** by means of the free graphical <a class="extern" target="_blank" href="https://www.state-machine.com/products/qm">QM&trade; model-based design (MBD) tool</a>.
<a class="extern" target="_blank" href="https://www.state-machine.com/fsm/#HSM">hierarchical state machines (UML statecharts)</a>. The framework supports @ref sm "manual coding of UML state machines in C" (or C++ in case of QP/C++) as well as fully **automatic code generation** by means of the free graphical <a class="extern" target="_blank" href="https://www.state-machine.com/qm">QM&trade; model-based design (MBD) tool</a>.
@remarks @remarks
State machines can be an incredibly powerful technique, but they require an event-driven **infrastructure** (framework) that provides, at a minimum: a run-to-completion (RTC) execution context for each state machine, queuing of events, and event-based timing services. This is really the pivotal point. Without an event-driven framewok (like QP/C), state machines are like <a class="extern" target="_blank" href="https://www.state-machine.com/rtef/">cars without an infrastructure of roads</a>. State machines can be an incredibly powerful technique, but they require an event-driven **infrastructure** (framework) that provides, at a minimum: a run-to-completion (RTC) execution context for each state machine, queuing of events, and event-based timing services. This is really the pivotal point. Without an event-driven framework (like QP/C), state machines are like <a class="extern" target="_blank" href="https://www.state-machine.com/rtef/">cars without an infrastructure of roads</a>.
@subsection kernels Built-in Kernels @subsection kernels Built-in Kernels
@ -80,7 +77,7 @@ QP/C can also work with many traditional @ref exa_rtos "RTOSes" and @ref exa_rto
@subsection popular Popularity &amp; Maturity @subsection popular Popularity &amp; Maturity
With over 15 years of continuous development and <a class="extern" target="_blank" href="https://sourceforge.net/projects/qpc/files/stats/timeline?dates=2016-01-01+to+2016-12-31">60,000 downloads a year</a>, the QP&trade; RTEF family is the most mature and popular such solution on the embedded software market. The QP&trade; frameworks are used in <a href="https://www.state-machine.com/about/customers" target="_blank" class="extern">millions of products worldwide</a> in medical devices, consumer electronics, wired and wireless telecommunications, industrial automation, transportation, aerospace, robotics, and many more. With over 15 years of continuous development and <a class="extern" target="_blank" href="https://sourceforge.net/projects/qpc/files/stats/timeline?dates=2016-01-01+to+2016-12-31">60,000 downloads a year</a>, the QP&trade; RTEF family is the most mature and popular such solution on the embedded software market. The QP&trade; frameworks are used in <a href="https://www.state-machine.com/customers" target="_blank" class="extern">millions of products worldwide</a> in medical devices, consumer electronics, wired and wireless telecommunications, industrial automation, transportation, aerospace, robotics, and many more.
@subsection psicc2 Book @subsection psicc2 Book
@ -90,17 +87,17 @@ The book, <a class="extern" target="_blank" href="https://www.state-machine.com/
@section licensing How is it licensed? @section licensing How is it licensed?
QP/C is licensed under the increasingly popular <a class="extern" target="_blank" href="https://www.state-machine.com/licensing">dual licensing model</a>, in which both the open source software distribution mechanism and traditional closed source software distribution models are combined. QP/C is licensed under the sustainable <a class="extern" target="_blank" href="https://www.state-machine.com/licensing">dual licensing model</a>, 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.
@subsection open-source Open Source Projects @subsection open-source Open Source Projects
If you are developing and distributing open source applications under the GNU General Public License (GPL), as published by the Free Software Foundation, then you are free to use the Quantum Leaps software under the <a class="extern" target="_blank" href="http://www.gnu.org/copyleft/gpl.html">GPL version 3</a> of the License, or (at your option) any later version. Please note that GPL requires that all modifications to the original code as well as your application code (Derivative Works as defined in the Copyright Law) must also be released under the terms of the GPL open source license. If you are developing and distributing **open source** applications under the GNU General Public License (GPL), as published by the Free Software Foundation, then you are free to use the Quantum Leaps software under the <a class="extern" target="_blank" href="http://www.gnu.org/copyleft/gpl.html">GPL version 3</a> of the License, or (at your option) any later version. Please note that GPL requires that all modifications to the original code as well as your application code (Derivative Works as defined in the Copyright Law) must also be released under the terms of the GPL open source license.
@subsection closed-source Closed Source Projects @subsection closed-source Closed Source Projects
If you are developing and distributing traditional closed source applications, you can purchase one of <a class="extern" target="_blank" href="https://www.state-machine.com/licensing/#Commercial">Quantum Leaps commercial licenses</a>, which are specifically designed for users interested in retaining the proprietary status of their code. All Quantum Leaps commercial licenses expressly supersede the GPL open source license. This means that when you license Quantum Leaps software under a commercial license, you specifically do not use the software under the open source license and therefore you are not subject to any of its terms. If you are developing and distributing traditional **closed source** applications, you can purchase one of <a class="extern" target="_blank" href="https://www.state-machine.com/licensing/#Commercial">Quantum Leaps commercial licenses</a>, which are specifically designed for users interested in retaining the proprietary status of their code. All Quantum Leaps commercial licenses expressly supersede the GPL open source license. This means that when you license Quantum Leaps software under a commercial license, you specifically do not use the software under the open source license and therefore you are not subject to any of its terms.
@section support How to get help? @section support How to get help?
@ -115,7 +112,7 @@ Training and consulting services are also available from Quantum Leaps. Please r
- Quantum Leaps Web site: <a class="extern" target="_blank" href="https://www.state-machine.com">state-machine.com</a> - Quantum Leaps Web site: <a class="extern" target="_blank" href="https://www.state-machine.com">state-machine.com</a>
- Quantum Leaps licensing: <a class="extern" target="_blank" href="https://www.state-machine.com">state-machine.com/licensing</a> - Quantum Leaps licensing: <a class="extern" target="_blank" href="https://www.state-machine.com/licensing">state-machine.com/licensing</a>
- QP/QM on SourceForge.net: <a class="extern" target="_blank" href="https://sourceforge.net/projects/qpc">sourceforge.net/projects/qpc</a> - QP/QM on SourceForge.net: <a class="extern" target="_blank" href="https://sourceforge.net/projects/qpc">sourceforge.net/projects/qpc</a>

View File

@ -84,7 +84,7 @@ Requirement definitions use consistent terminology to indicate whether something
@section srs_qep State Machine Event Processor (QEP) @section srs_qep State Machine Event Processor (QEP)
The QP/C Event Processor (QEP) is a sub-component of the QP/C framework that implements processing of events according to state machine machine semantics. Specifically, according to that semantics each event is processed to completion (Run-to-Completion) before the processing of the next event can begin. The QP/C Event Processor (QEP) is a sub-component of the QP/C framework that implements processing of events according to state machine semantics. Specifically, according to that semantics each event is processed to completion (Run-to-Completion) before the processing of the next event can begin.
@reqdef{RQPC101} QEP shall process events according to the Run-To-Completion (RTC) semantics. @reqdef{RQPC101} QEP shall process events according to the Run-To-Completion (RTC) semantics.