diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/Doxyfile | 285 | ||||
-rw-r--r-- | docs/ch.txt | 258 |
2 files changed, 543 insertions, 0 deletions
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 (<span class="t_nihongo_kanji" xml:lang="ja" lang="ja">ちび</span>OS/RT) \endhtmlonly
+ * means small Real Time Operating System.
+ * Source <a href="http://en.wikipedia.org/wiki/Chibi" target="_blank">Wikipedia</a>.
+ * @section ch_features Features
+ * <ul>
+ * <li>Free software, GPL3 licensed.</li>
+ * <li>Designed for realtime applications.</li>
+ * <li>Easily portable.</li>
+ * <li>Mixed programming model:</li>
+ * <ul>
+ * <li>Synchronous, using semaphores and/or messages.</li>
+ * <li>Asynchronous, using event sources.</li>
+ * <li>Mix of the above models, multiple threads listening to multiple event
+ * sources while serving message queues.</li>
+ * </ul>
+ * <li>PC simulator target included, the development can be done on the PC
+ * using MinGW or VS.
+ * Timers, I/O channels and other HW resources are simulated in a
+ * Win32 process and the application code does not need to be aware of it.
+ * MinGW and VS demos available and ready to go, use them as templates for
+ * your application.</li>
+ * <li>Unlimited number of threads.</li>
+ * <li>Unlimited number of virtual timers.</li>
+ * <li>Unlimited number of semaphores.</li>
+ * <li>Unlimited number of event sources.</li>
+ * <li>Unlimited number of messages in queue.</li>
+ * <li>Unlimited number of I/O queues.</li>
+ * <li>No static setup at compile time, there is no need to configure a maximum
+ * number of all the above resources.</li>
+ * <li>No *need* for a memory allocator, all the kernel structures are static
+ * and declaratively allocated. A memory allocator can be used in your
+ * application but it is not required by the ChibiOS/RT itself.</li>
+ * <li>Threads, Semaphores, Event Sources, Virtual Timers creation/deletion at
+ * runtime.</li>
+ * <li>Blocking and non blocking I/O channels with timeout and events generation
+ * capability.</li>
+ * <li>Pre-emptive scheduling.</li>
+ * <li>Minimal system requirements: about 8KiB ROM with all options enabled and
+ * speed optimizations on. The size can shrink under 2KiB by disabling the
+ * the unused subsystems and optimizing for size.</li>
+ * <li>Small memory footprint, unused subsystems can be excluded by the
+ * memory image.</li>
+ * <li>Almost totally written in C with little ASM code required for ports.</li>
+ * </ul>
+ */
+
+/**
+ * @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.
+ * <b>Operation mode</b><br><br>
+ * A semaphore is a threads synchronization object, some operations
+ * are defined on semaphores:<br>
+ * <ul>
+ * <li><b>Signal</b>: The semaphore counter is increased and if the result
+ * is non-positive then a waiting thread is removed from the semaphore
+ * queue and made ready for execution.</li>
+ * <li><b>Wait</b>: The semaphore counter is decreased and if the result
+ * becomes negative the thread is queued in the semaphore and suspended.
+ * </li>
+ * <li><b>Reset</b>: The semaphore counter is reset to a non-negative value
+ * and all the threads in the queue are released.</li>
+ * </ul>
+ * Semaphores are mainly used as guards for mutual exclusion code zones but
+ * also have other uses, queues guards and counters as example.<br>
+ * In order to use the Semaphores APIs the \p CH_USE_SEMAPHORES
+ * option must be specified in \p chconf.h.<br><br>
+ * <b>Realtime Semaphores</b><br><br>
+ * 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.<br>
+ * Another difference is that the threads are queued by priority when trying
+ * to acquire RT semaphores, normal semaphores use a FIFO strategy.<br>
+ * 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.<br>
+ * In order to use the RT Semaphores APIs the \p CH_USE_RT_SEMAPHORES
+ * option must be specified in \p chconf.h.<br>
+ * This mechanism is <b>experimental</b>.
+ * @file semaphores.h Semaphores macros and structures.
+ * @file chsem.c Semaphores code.
+ */
+/** @} */
+
+/**
+ * @defgroup Events Events
+ * @{
+ * Event Sources and Event Listeners.<br>
+ * <b>Operation mode</b><br><br>
+ * 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.<br>
+ * An unlimited number of Event Sources can exists in a system and each
+ * thread can listen on an unlimited number of them.<br>
+ * 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().<br>
+ * 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.<br>
+ * <b>Operation Mode</b><br><br>
+ * 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.<br>
+ * Messages are always processed in FIFO order.<br>
+ * 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).<br>
+ * 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).<br>
+ * There are several kind of queues:<br>
+ * <ul>
+ * <li><b>Input queue</b>, monodirectional queue where the writer is the
+ * lower side and the reader is the upper side.</li>
+ * <li><b>Output queue</b>, monodirectional queue where the writer is the
+ * upper side and the reader is the lower side.</li>
+ * <li><b>Half duplex queue</b>, bidirectional queue where the buffer is shared
+ * between a receive and a transmit queues. This means that concurrent
+ * buffered input and output operations are not possible, this is perfectly
+ * acceptable for a lot of applications however, as example an RS485 driver.
+ * <li><b>Full duplex queue</b>, bidirectional queue where read and write
+ * operations can happen at the same time. Full duplex queues
+ * are implemented by pairing an input queue and an output queue together.
+ * </ul>
+ * In order to use the I/O queues the \p CH_USE_QUEUES option must
+ * be specified in \p chconf.h.<br>
+ * 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.<br>
+ * In order to use the serial full duplex driver the
+ * \p CH_USE_SERIAL_FULLDUPLEX option must be specified in \p chconf.h.<br>
+ * 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.
+ */
+/** @} */
|