From f47b068594141d91b272d6d2ff2d119782a5c944 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 18 Sep 2007 12:27:36 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- docs/Doxyfile | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ docs/ch.txt | 258 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 543 insertions(+) create mode 100644 docs/Doxyfile create mode 100644 docs/ch.txt diff --git a/docs/Doxyfile b/docs/Doxyfile new file mode 100644 index 000000000..041a49c26 --- /dev/null +++ b/docs/Doxyfile @@ -0,0 +1,285 @@ +# Doxyfile 1.5.1-p1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = ChibiOS/RT +PROJECT_NUMBER = "0.1.0 alpha" +OUTPUT_DIRECTORY = . +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = NO +REPEAT_BRIEF = YES +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 +STRIP_FROM_PATH = "C:/Documents and Settings/Administrator/" +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = NO +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 2 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# 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_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../src/include \ + ../src/templates \ + ../src \ + ../docs/ch.txt +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.ddf +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# 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 = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# 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 = __JUST_STUBS__ \ + __DOXIGEN__ \ + CH_USE_VIRTUAL_TIMERS \ + CH_USE_SYSTEMTIME \ + CH_USE_SLEEP \ + CH_USE_RESUME \ + CH_USE_TERMINATE \ + CH_USE_WAITEXIT \ + CH_USE_SEMAPHORES \ + CH_USE_RT_SEMAPHORES \ + CH_USE_EVENTS \ + CH_USE_EVENTS_TIMEOUT \ + CH_USE_EXIT_EVENT \ + CH_USE_QUEUES \ + CH_USE_QUEUES_TIMEOUT \ + CH_USE_QUEUES_HALFDUPLEX \ + CH_USE_SERIAL_FULLDUPLEX \ + CH_USE_SERIAL_HALFDUPLEX \ + CH_USE_MESSAGES \ + CH_USE_MESSAGES_TIMEOUT \ + CH_USE_MESSAGES_EVENT +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +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 +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/docs/ch.txt b/docs/ch.txt new file mode 100644 index 000000000..efa85be4f --- /dev/null +++ b/docs/ch.txt @@ -0,0 +1,258 @@ +/** + * @mainpage ChibiOS/RT + * @author Giovanni Di Sirio (gdisirio@chibios.sourceforge.net). + * @section Chibi Chibi ? + * It is the Japanese word for small as in small child. So ChibiOS/RT + * \htmlonly (ちびOS/RT) \endhtmlonly + * means small Real Time Operating System. + * Source Wikipedia. + * @section ch_features Features + * + */ + +/** + * @defgroup Kernel Kernel + * @{ + */ +/** @} */ + +/** + * @defgroup Config Configuration + * @{ + * In \p chconf.h are defined the required subsystems for your application. + * @ingroup Kernel + * @file chconf.h ChibiOS/RT configuration file. + */ +/** @} */ + +/** + * @defgroup Core Core + * @{ + * Non portable code. + * @ingroup Kernel + * @file chcore.c Non portable code. + */ +/** @} */ + +/** + * @defgroup Initialization Initialization + * @{ + * Initialization APIs and procedures. + * @ingroup Kernel + * @file ch.h ChibiOS/RT main include file, it includes everything else. + * @file chinit.c ChibiOS/RT Initialization code. + */ +/** @} */ + +/** + * @defgroup Scheduler Scheduler + * @{ + * ChibiOS/RT scheduler. + * @ingroup Kernel + * @file chschd.c Scheduler code. + * @file scheduler.h Scheduler macros and structures. + */ +/** @} */ + +/** + * @defgroup Threads Threads + * @{ + * Threads creation and termination APIs. + * @file threads.h Threads structures, macros and functions. + * @file chthreads.c Threads code. + */ +/** @} */ + +/** + * @defgroup VirtualTimers Virtual Timers + * @{ + * Virtual Timers APIs. + * In order to use the Virtual Timers the \p CH_USE_VIRTUAL_TIMERS option + * must be specified in \p chconf.h. + * @file src/chdelta.c Virtual Timers code. + * @file delta.h Virtual Timers macros and structures. + */ +/** @} */ + +/** + * @defgroup Time Time + * @{ + * Time related APIs. + * In order to use the Time APIs the \p CH_USE_SLEEP + * option must be specified in \p chconf.h. + * @file include/sleep.h Time macros and structures. + * @file chsleep.c Time functions. + */ +/** @} */ + +/** + * @defgroup Semaphores Semaphores + * @{ + * Semaphores and threads synchronization. + * Operation mode

+ * A semaphore is a threads synchronization object, some operations + * are defined on semaphores:
+ * + * Semaphores are mainly used as guards for mutual exclusion code zones but + * also have other uses, queues guards and counters as example.
+ * In order to use the Semaphores APIs the \p CH_USE_SEMAPHORES + * option must be specified in \p chconf.h.

+ * Realtime Semaphores

+ * The RT Semaphores work exactly like normal semaphores except that the + * thread gaining access to a mutex zone receives a priority boost, the + * priority is increased by \p MEPRIO and becomes higher than any thread that + * does not have the boost, note that all the boosted threads still keep their + * relative priorities.
+ * Another difference is that the threads are queued by priority when trying + * to acquire RT semaphores, normal semaphores use a FIFO strategy.
+ * The reason of this mechanism is to make the threads leave very critical + * guarded zones in a predictable time. Use this mechanism if your application + * has very strong realtime requirements.
+ * In order to use the RT Semaphores APIs the \p CH_USE_RT_SEMAPHORES + * option must be specified in \p chconf.h.
+ * This mechanism is experimental. + * @file semaphores.h Semaphores macros and structures. + * @file chsem.c Semaphores code. + */ +/** @} */ + +/** + * @defgroup Events Events + * @{ + * Event Sources and Event Listeners.
+ * Operation mode

+ * An Event Source is a special object that can be signaled by a thread or + * an interrupt service routine. Signaling an Event Source has the effect + * that all the threads registered on the Event Source will receive + * and serve the event.
+ * An unlimited number of Event Sources can exists in a system and each + * thread can listen on an unlimited number of them.
+ * Note that the events can be asynchronously generated but are synchronously + * served, a thread can serve event by calling the \p chEvtWait() + * API. If an event is generated while a listening thread is not ready to + * serve it then the event becomes "pending" and will be served as soon the + * thread invokes the \p chEvtWait().
+ * In order to use the Event APIs the \p CH_USE_EVENTS option must be + * specified in \p chconf.h. + * @file events.h Events macros and structures. + * @file chevents.c Events functions. + */ +/** @} */ + +/** + * @defgroup Messages Messages + * @{ + * Synchronous Messages.
+ * Operation Mode

+ * Messages are an easy to use and fast IPC mechanism, threads can both serve + * messages and send messages to other threads, the mechanism allows data to + * be carryed in both directions. Data is not copyed between the client and + * server threads but just a pointer passed so the exchange is very time + * efficient.
+ * Messages are always processed in FIFO order.
+ * Threads do not need to allocate space for message queues, the mechanism + * just requires two extra pointers in the \p Thread structure (the message + * queue header).
+ * In order to use the Messages APIs the \p CH_USE_MESSAGES option must be + * specified in \p chconf.h. + * @file messages.h Messages macros and structures. + * @file chmsg.c Messages functions. + */ +/** @} */ + +/** + * @defgroup IOQueues I/O Queues + * @{ + * ChibiOS/RT supports several kinds of queues. The queues are mostly used + * in serial-like device drivers. The device drivers are usually designed to + * have a lower side (lower driver, it is usually an interrupt service + * routine) and an upper side (upper driver, accessed by the application + * threads).
+ * There are several kind of queues:
+ * + * In order to use the I/O queues the \p CH_USE_QUEUES option must + * be specified in \p chconf.h.
+ * In order to use the half duplex queues the \p CH_USE_QUEUES_HALFDUPLEX + * option must be specified in \p chconf.h. + * @file queues.h I/O Queues macros and structures. + * @file chqueues.c I/O Queues code. + */ +/** @} */ + +/** + * @defgroup Serial Serial Drivers + * @{ + * This module implements a generic full duplex serial driver and a generic + * half duplex serial driver. It uses the I/O Queues for communication between + * the upper and the lower driver and events to notify the application about + * incoming data, outcoming data and other I/O events. + * The module also contains functions that make the implementation of the + * interrupt service routines much easier.
+ * In order to use the serial full duplex driver the + * \p CH_USE_SERIAL_FULLDUPLEX option must be specified in \p chconf.h.
+ * In order to use the serial half duplex driver the + * \p CH_USE_SERIAL_HALFDUPLEX option must be specified in \p chconf.h. + * @file serial.h Serial Drivers macros and structures. + * @file chserial.c Serial Drivers code. + */ +/** @} */ -- cgit v1.2.3