# HG changeset patch # User Florian Pose # Date 1145875623 0 # Node ID 5cff10efb927bf1e25ac31c2a74bdbf41810c5fd # Parent 9f83a343ae75aaab01cc0a3a11f3de7486e6a6cb MERGE trunk -r355:360 -> branches/stable-1.0 (Doxygen, INSTALL, and GPLv2) diff -r 9f83a343ae75 -r 5cff10efb927 Doxyfile --- a/Doxyfile Thu Apr 20 14:38:41 2006 +0000 +++ b/Doxyfile Mon Apr 24 10:47:03 2006 +0000 @@ -1,12 +1,4 @@ -#--------------------------------------------------------------------------- -# # Doxyfile 1.4.4 -# -# IgH EtherCAT-Treiber -# -# $Id$ -# -#--------------------------------------------------------------------------- # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -22,198 +14,198 @@ # Project related configuration options #--------------------------------------------------------------------------- -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = EtherCAT - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or +PROJECT_NAME = "IgH EtherCAT master" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 1.0 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would +OUTPUT_DIRECTORY = documentation + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. -OUTPUT_LANGUAGE = German - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the # path to strip. -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = YES -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = YES -# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member +# If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = YES -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. -TAB_SIZE = 3 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES @@ -222,326 +214,326 @@ # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES -# If the EXTRACT_STATIC tag is set to YES all static members of a file +# If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = YES -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = NO -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the +# Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = NO -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = NO -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= NO -# The ENABLED_SECTIONS tag can be used to enable conditional +# The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = NO -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is YES. SHOW_DIRECTORIES = YES -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the progam writes to standard output +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. -FILE_VERSION_FILTER = +FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated +# The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = YES -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of # documentation. -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written # to stderr. -WARN_LOGFILE = +WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = master include - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +INPUT = master include devices/ecdev.h + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = *.mod.c -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left # blank all files are included. -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see # the \image command). -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO @@ -550,46 +542,46 @@ # configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES -# Setting the INLINE_SOURCES tag to YES will include the body +# Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES @@ -598,133 +590,133 @@ # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. -IGNORE_PREFIX = +IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a # standard header. -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be # written to the html output directory. -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members +# The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO -# This tag can be used to set the number of enum values (range [1..20]) +# This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = YES -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 @@ -733,74 +725,74 @@ # configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO @@ -809,68 +801,68 @@ # configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. -RTF_EXTENSIONS_FILE = +RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man -# The MAN_EXTENSION tag determines the extension that is added to +# The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO @@ -879,33 +871,33 @@ # configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the # syntax of the XML files. -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the # syntax of the XML files. -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES @@ -914,10 +906,10 @@ # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO @@ -926,311 +918,311 @@ # configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by # the preprocessor. -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator # instead of the = operator. -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen +# If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES -# The PERL_PATH should be the absolute path and name of the perl script +# The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO -# If set to YES, the inheritance and collaboration graphs will show the +# If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png -# The tag DOT_PATH can be used to specify the path where the dot tool can be +# The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the # \dotfile command). -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO diff -r 9f83a343ae75 -r 5cff10efb927 INSTALL --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INSTALL Mon Apr 24 10:47:03 2006 +0000 @@ -0,0 +1,34 @@ +------------------------------------------------------------------------------- + +This is the INSTALL file of the IgH EtherCAT Master. + +$Id$ + +------------------------------------------------------------------------------- + +Building and installing +========================== + +1) Create a copy of the configuration template: + + $ cp ethercat.conf.tmpl ethercat.conf + +2) Adjust the variables in the configuration file to your needs. + +3) Build the EtherCAT master and network device driver modules: + + $ make + +4) Install the the EtherCAT master (as root): + + # make install + + This will create the following files and directories: + - /etc/sysconfig/ethercat (configuration file) + - /etc/init.d/ethercat (startup script) + - /usr/sbin/rcethercat (link to startup script) + + The modules will be placed in /lib/modules//kernel/drivers/net + (where is the Linux kernel version configured in ethercat.conf). + +------------------------------------------------------------------------------- diff -r 9f83a343ae75 -r 5cff10efb927 LICENSE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE Mon Apr 24 10:47:03 2006 +0000 @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff -r 9f83a343ae75 -r 5cff10efb927 Makefile --- a/Makefile Thu Apr 20 14:38:41 2006 +0000 +++ b/Makefile Mon Apr 24 10:47:03 2006 +0000 @@ -4,6 +4,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ ifneq ($(KERNELRELEASE),) diff -r 9f83a343ae75 -r 5cff10efb927 README --- a/README Thu Apr 20 14:38:41 2006 +0000 +++ b/README Mon Apr 24 10:47:03 2006 +0000 @@ -1,11 +1,20 @@ ------------------------------------------------------------------------------- +This is the README file of the IgH EtherCAT Master. + $Id$ +Contents: +1) General Information +2) Requirements +3) Building and installing +4) Realtime & Tuning +5) License + ------------------------------------------------------------------------------- -General Information -=================== +1) General Information +====================== This is an Open-Source EtherCAT master implementation for Linux 2.6. @@ -23,8 +32,8 @@ ------------------------------------------------------------------------------- -Requirements -============ +2) Requirements +=============== 1) Software requirements @@ -39,35 +48,15 @@ ------------------------------------------------------------------------------- -Building and installing -======================= +3) Building and installing +========================== -1) Create a copy of the configuration template: - - $ cp ethercat.conf.tmpl ethercat.conf - -2) Adjust the Variables in the configuration file to your needs. - -3) Build the EtherCAT master and network device driver modules: - - $ make - -4) Install the the EtherCAT master (as root): - - # make install - - This will create the following files and directories: - - /etc/sysconfig/ethercat (configuration file) - - /etc/init.d/ethercat (startup script) - - /usr/sbin/rcethercat (link to startup script) - - The modules will be placed in /lib/modules//kernel/drivers/net - (where is the Linux kernel version configured in ethercat.conf). +See the INSTALL file. ------------------------------------------------------------------------------- -Realtime & Tuning -================= +4) Realtime & Tuning +==================== Realtime patches for the Linux kernel are supported, but not required. The realtime processing has to be done by the calling module (see API @@ -78,3 +67,25 @@ recommented (hdparm -d0 ). ------------------------------------------------------------------------------- + +5) License +========== + +Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + +This file is part of the IgH EtherCAT Master. + +The IgH EtherCAT Master is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; version 2 of the License. + +The IgH EtherCAT Master is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the IgH EtherCAT Master; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +------------------------------------------------------------------------------- diff -r 9f83a343ae75 -r 5cff10efb927 devices/8139too.c --- a/devices/8139too.c Thu Apr 20 14:38:41 2006 +0000 +++ b/devices/8139too.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,26 +1,36 @@ /****************************************************************************** * - * 8 1 3 9 t o o . c + * $Id$ * - * EtherCAT driver for RTL8139-compatible NICs. + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH * - * Authors: Florian Pose - * Wilhelm Hagemeister + * This file is part of the IgH EtherCAT Master. * - * $Date$ - * $Author$ + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. * - * (C) Copyright IgH 2006 - * Ingenieurgemeinschaft IgH - * Heinz-Bäcker Str. 34 - * D-45356 Essen - * Tel.: +49 201/61 99 31 - * Fax.: +49 201/61 98 36 - * E-mail: sp@igh-essen.com + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - ******************************************************************************/ + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + *****************************************************************************/ + +/** + \file + EtherCAT driver for RTL8139-compatible NICs. +*/ + +/*****************************************************************************/ /* + Former documentation: + 8139too.c: A RealTek RTL-8139 Fast Ethernet driver for Linux. Maintained by Jeff Garzik diff -r 9f83a343ae75 -r 5cff10efb927 devices/Makefile --- a/devices/Makefile Thu Apr 20 14:38:41 2006 +0000 +++ b/devices/Makefile Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ ifneq ($(KERNELRELEASE),) diff -r 9f83a343ae75 -r 5cff10efb927 devices/ecdev.h --- a/devices/ecdev.h Thu Apr 20 14:38:41 2006 +0000 +++ b/devices/ecdev.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,11 +1,42 @@ /****************************************************************************** * - * EtherCAT interface for EtherCAT device drivers. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT interface for EtherCAT device drivers. +*/ + +/** + \defgroup DeviceInterface EtherCAT device interface + Master interface for EtherCAT-capable network device drivers. + Through the EtherCAT device interface, EtherCAT-capable network device + drivers are able to connect their device(s) to the master, pass received + frames and notify the master about status changes. The master on his part, + can send his frames through connected devices. +*/ + +/*****************************************************************************/ + #ifndef _ETHERCAT_DEVICE_H_ #define _ETHERCAT_DEVICE_H_ diff -r 9f83a343ae75 -r 5cff10efb927 ethercat.sh --- a/ethercat.sh Thu Apr 20 14:38:41 2006 +0000 +++ b/ethercat.sh Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ CONFIGFILE=/etc/sysconfig/ethercat diff -r 9f83a343ae75 -r 5cff10efb927 include/ecrt.h --- a/include/ecrt.h Thu Apr 20 14:38:41 2006 +0000 +++ b/include/ecrt.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,10 +1,40 @@ /****************************************************************************** * - * EtherCAT realtime interface. - * * $Id$ * - *****************************************************************************/ + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + *****************************************************************************/ + +/** + \file + EtherCAT realtime interface. +*/ + +/** + \defgroup RealtimeInterface EtherCAT realtime interface + EtherCAT interface for realtime modules. + This interface is designed for realtime modules that want to use EtherCAT. + There are functions to request a master, to map process data, to communicate + with slaves via CoE and to configure and activate the bus. +*/ + +/*****************************************************************************/ #ifndef __ECRT_H__ #define __ECRT_H__ @@ -28,26 +58,35 @@ struct ec_slave; typedef struct ec_slave ec_slave_t; +/** + Initialization type for field registrations. + This type is used as a parameter for the ec_domain_register_field_list() + function. +*/ + typedef struct { - void **data_ptr; - const char *slave_address; - const char *vendor_name; - const char *product_name; - const char *field_name; - unsigned int field_index; - unsigned int field_count; + void **data_ptr; /**< address of the process data pointer */ + const char *slave_address; /**< slave address string (see + ecrt_master_get_slave()) */ + const char *vendor_name; /**< vendor name */ + const char *product_name; /**< product name */ + const char *field_name; /**< data field name */ + unsigned int field_index; /**< index in data fields with same name */ + unsigned int field_count; /**< number of data fields with same name */ } ec_field_init_t; -/*****************************************************************************/ -// Master request functions +/****************************************************************************** + * Master request functions + *****************************************************************************/ ec_master_t *ecrt_request_master(unsigned int master_index); void ecrt_release_master(ec_master_t *master); -/*****************************************************************************/ -// Master methods +/****************************************************************************** + * Master methods + *****************************************************************************/ ec_domain_t *ecrt_master_create_domain(ec_master_t *master); @@ -68,8 +107,9 @@ ec_slave_t *ecrt_master_get_slave(const ec_master_t *, const char *); -/*****************************************************************************/ -// Domain Methods +/****************************************************************************** + * Domain Methods + *****************************************************************************/ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain, const char *address, @@ -86,8 +126,9 @@ int ecrt_domain_state(ec_domain_t *domain); -/*****************************************************************************/ -// Slave Methods +/****************************************************************************** + * Slave Methods + *****************************************************************************/ int ecrt_slave_sdo_read_exp8(ec_slave_t *slave, uint16_t sdo_index, uint8_t sdo_subindex, uint8_t *value); @@ -106,55 +147,152 @@ int ecrt_slave_write_alias(ec_slave_t *slave, uint16_t alias); +/****************************************************************************** + * Bitwise read/write macros + *****************************************************************************/ + +/** + Read a certain bit of an EtherCAT data byte. + \param DATA EtherCAT data pointer + \param POS bit position +*/ + +#define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01) + +/** + Write a certain bit of an EtherCAT data byte. + \param DATA EtherCAT data pointer + \param POS bit position + \param VAL new bit value +*/ + +#define EC_WRITE_BIT(DATA, POS, VAL) \ + do { \ + if (VAL) *((uint8_t *) (DATA)) |= (1 << (POS)); \ + else *((uint8_t *) (DATA)) &= ~(1 << (POS)); \ + } while (0) + +/****************************************************************************** + * Read macros + *****************************************************************************/ + +/** + Read an 8-bit unsigned value from EtherCAT data. + \return EtherCAT data value +*/ + +#define EC_READ_U8(DATA) \ + ((uint8_t) *((uint8_t *) (DATA))) + +/** + Read an 8-bit signed value from EtherCAT data. + \param DATA EtherCAT data pointer + \return EtherCAT data value +*/ + +#define EC_READ_S8(DATA) \ + ((int8_t) *((uint8_t *) (DATA))) + +/** + Read a 16-bit unsigned value from EtherCAT data. + \param DATA EtherCAT data pointer + \return EtherCAT data value +*/ + +#define EC_READ_U16(DATA) \ + ((uint16_t) le16_to_cpup((void *) (DATA))) + +/** + Read a 16-bit signed value from EtherCAT data. + \param DATA EtherCAT data pointer + \return EtherCAT data value +*/ + +#define EC_READ_S16(DATA) \ + ((int16_t) le16_to_cpup((void *) (DATA))) + +/** + Read a 32-bit unsigned value from EtherCAT data. + \param DATA EtherCAT data pointer + \return EtherCAT data value +*/ + +#define EC_READ_U32(DATA) \ + ((uint32_t) le32_to_cpup((void *) (DATA))) + +/** + Read a 32-bit signed value from EtherCAT data. + \param DATA EtherCAT data pointer + \return EtherCAT data value +*/ + +#define EC_READ_S32(DATA) \ + ((int32_t) le32_to_cpup((void *) (DATA))) + + +/****************************************************************************** + * Write macros + *****************************************************************************/ + +/** + Write an 8-bit unsigned value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_U8(DATA, VAL) \ + do { \ + *((uint8_t *)(DATA)) = ((uint8_t) (VAL)); \ + } while (0) + +/** + Write an 8-bit signed value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL) + +/** + Write a 16-bit unsigned value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_U16(DATA, VAL) \ + do { \ + *((uint16_t *) (DATA)) = (uint16_t) (VAL); \ + cpu_to_le16s(DATA); \ + } while (0) + +/** + Write a 16-bit signed value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL) + +/** + Write a 32-bit unsigned value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_U32(DATA, VAL) \ + do { \ + *((uint32_t *) (DATA)) = (uint32_t) (VAL); \ + cpu_to_le16s(DATA); \ + } while (0) + +/** + Write a 32-bit signed value to EtherCAT data. + \param DATA EtherCAT data pointer + \param VAL new value +*/ + +#define EC_WRITE_S32(DATA, VAL) EC_WRITE_U32(DATA, VAL) + /*****************************************************************************/ -// Bitwise read/write macros - -#define EC_READ_BIT(PD, CH) ((*((uint8_t *) (PD)) >> (CH)) & 0x01) - -#define EC_WRITE_BIT(PD, CH, VAL) \ - do { \ - if (VAL) *((uint8_t *) (PD)) |= (1 << (CH)); \ - else *((uint8_t *) (PD)) &= ~(1 << (CH)); \ - } while (0) - -/*****************************************************************************/ -// Read macros - -#define EC_READ_U8(PD) ((uint8_t) *((uint8_t *) (PD))) -#define EC_READ_S8(PD) ((int8_t) *((uint8_t *) (PD))) - -#define EC_READ_U16(PD) ((uint16_t) le16_to_cpup((void *) (PD))) -#define EC_READ_S16(PD) ((int16_t) le16_to_cpup((void *) (PD))) - -#define EC_READ_U32(PD) ((uint32_t) le32_to_cpup((void *) (PD))) -#define EC_READ_S32(PD) ((int32_t) le32_to_cpup((void *) (PD))) - -/*****************************************************************************/ -// Write macros - -#define EC_WRITE_U8(PD, VAL) \ - do { \ - *((uint8_t *)(PD)) = ((uint8_t) (VAL)); \ - } while (0) - -#define EC_WRITE_S8(PD, VAL) EC_WRITE_U8(PD, VAL) - -#define EC_WRITE_U16(PD, VAL) \ - do { \ - *((uint16_t *) (PD)) = (uint16_t) (VAL); \ - cpu_to_le16s(PD); \ - } while (0) - -#define EC_WRITE_S16(PD, VAL) EC_WRITE_U16(PD, VAL) - -#define EC_WRITE_U32(PD, VAL) \ - do { \ - *((uint32_t *) (PD)) = (uint32_t) (VAL); \ - cpu_to_le16s(PD); \ - } while (0) - -#define EC_WRITE_S32(PD, VAL) EC_WRITE_U32(PD, VAL) - -/*****************************************************************************/ #endif diff -r 9f83a343ae75 -r 5cff10efb927 install.sh --- a/install.sh Thu Apr 20 14:38:41 2006 +0000 +++ b/install.sh Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ CONFIGFILE=/etc/sysconfig/ethercat diff -r 9f83a343ae75 -r 5cff10efb927 master/Makefile --- a/master/Makefile Thu Apr 20 14:38:41 2006 +0000 +++ b/master/Makefile Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ ifneq ($(KERNELRELEASE),) diff -r 9f83a343ae75 -r 5cff10efb927 master/canopen.c --- a/master/canopen.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/canopen.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * c a n o p e n . c - * - * CANopen over EtherCAT - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Canopen-over-EtherCAT functions. +*/ + +/*****************************************************************************/ + #include #include #include @@ -30,7 +50,7 @@ /** Reads 32 bit of a CANopen SDO in expedited mode. \return 0 in case of success, else < 0 - */ +*/ int ec_slave_sdo_read_exp(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -79,13 +99,13 @@ /** Writes a CANopen SDO using expedited mode. \return 0 in case of success, else < 0 - */ +*/ int ec_slave_sdo_write_exp(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ uint8_t sdo_subindex, /**< SDO subindex */ const uint8_t *sdo_data, /**< new value */ - size_t size + size_t size /**< Data size in bytes (1 - 4) */ ) { uint8_t *data; @@ -138,9 +158,9 @@ /** Reads a CANopen SDO in normal mode. \return 0 in case of success, else < 0 - - \todo size - */ + \ingroup RealtimeInterface + \todo Make size non-pointer. +*/ int ecrt_slave_sdo_read(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -516,7 +536,8 @@ Reads an 8-bit SDO in expedited mode. See ec_slave_sdo_read_exp() \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_read_exp8(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -536,7 +557,8 @@ Reads a 16-bit SDO in expedited mode. See ec_slave_sdo_read_exp() \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_read_exp16(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -556,7 +578,8 @@ Reads a 32-bit SDO in expedited mode. See ec_slave_sdo_read_exp() \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_read_exp32(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -575,7 +598,8 @@ /** Writes an 8-bit SDO in expedited mode. \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_write_exp8(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -591,7 +615,8 @@ /** Writes a 16-bit SDO in expedited mode. \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_write_exp16(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -609,7 +634,8 @@ /** Writes a 32-bit SDO in expedited mode. \return 0 in case of success, else < 0 - */ + \ingroup RealtimeInterface +*/ int ecrt_slave_sdo_write_exp32(ec_slave_t *slave, /**< EtherCAT slave */ uint16_t sdo_index, /**< SDO index */ @@ -624,6 +650,8 @@ /*****************************************************************************/ +/** \cond */ + EXPORT_SYMBOL(ecrt_slave_sdo_read_exp8); EXPORT_SYMBOL(ecrt_slave_sdo_read_exp16); EXPORT_SYMBOL(ecrt_slave_sdo_read_exp32); @@ -632,4 +660,6 @@ EXPORT_SYMBOL(ecrt_slave_sdo_write_exp32); EXPORT_SYMBOL(ecrt_slave_sdo_read); -/*****************************************************************************/ +/** \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/command.c --- a/master/command.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/command.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * c o m m a n d . c - * - * Methods of an EtherCAT command. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Methods of an EtherCAT command. +*/ + +/*****************************************************************************/ + #include #include @@ -16,6 +36,8 @@ /*****************************************************************************/ +/** \cond */ + #define EC_FUNC_HEADER \ if (unlikely(ec_command_prealloc(command, data_size))) \ return -1; \ @@ -28,13 +50,15 @@ memset(command->data, 0x00, data_size); \ return 0; +/** \endcond */ + /*****************************************************************************/ /** Command constructor. */ -void ec_command_init(ec_command_t *command) +void ec_command_init(ec_command_t *command /**< EtherCAT command */) { command->type = EC_CMD_NONE; command->address.logical = 0x00000000; @@ -52,7 +76,7 @@ Command destructor. */ -void ec_command_clear(ec_command_t *command) +void ec_command_clear(ec_command_t *command /**< EtherCAT command */) { if (command->data) kfree(command->data); } @@ -61,10 +85,13 @@ /** Allocates command data memory. - \return 0 in case of success, else < 0 -*/ - -int ec_command_prealloc(ec_command_t *command, size_t size) + If the allocated memory is already larger than requested, nothing ist done. + \return 0 in case of success, else < 0 +*/ + +int ec_command_prealloc(ec_command_t *command, /**< EtherCAT command */ + size_t size /**< New size in bytes */ + ) { if (size <= command->mem_size) return 0; diff -r 9f83a343ae75 -r 5cff10efb927 master/command.h --- a/master/command.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/command.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * c o m m a n d . h - * - * EtherCAT command structure. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT command structure. +*/ + +/*****************************************************************************/ + #ifndef _EC_COMMAND_H_ #define _EC_COMMAND_H_ @@ -71,7 +91,7 @@ /*****************************************************************************/ /** - EtherCAT command + EtherCAT command. */ typedef struct diff -r 9f83a343ae75 -r 5cff10efb927 master/device.c --- a/master/device.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/device.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * d e v i c e . c - * - * EtherCAT device methods. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT device methods. +*/ + +/*****************************************************************************/ + #include #include #include @@ -168,6 +188,9 @@ /** Calls the interrupt service routine of the assigned net_device. + The master itself works without using interrupts. Therefore the processing + of received data and status changes of the network device has to be + done by the master calling the ISR "manually". */ void ec_device_call_isr(ec_device_t *device /**< EtherCAT device */) @@ -181,7 +204,9 @@ /** Accepts a received frame. - Forwards the received data to the master. + Forwards the received data to the master. The master will analyze the frame + and dispatch the received commands to the sending instances. + \ingroup DeviceInterface */ void ecdev_receive(ec_device_t *device, /**< EtherCAT device */ @@ -201,6 +226,9 @@ /** Sets a new link state. + If the device notifies the master about the link being down, the master + will not try to send frames using this device. + \ingroup DeviceInterface */ void ecdev_link_state(ec_device_t *device, /**< EtherCAT device */ @@ -220,7 +248,11 @@ /*****************************************************************************/ +/** \cond */ + EXPORT_SYMBOL(ecdev_receive); EXPORT_SYMBOL(ecdev_link_state); -/*****************************************************************************/ +/** \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/device.h --- a/master/device.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/device.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * d e v i c e . h - * - * EtherCAT device structure. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT device structure. +*/ + +/*****************************************************************************/ + #ifndef _EC_DEVICE_H_ #define _EC_DEVICE_H_ @@ -21,7 +41,6 @@ /** EtherCAT device. - An EtherCAT device is a network interface card, that is owned by an EtherCAT master to send and receive EtherCAT frames with. */ diff -r 9f83a343ae75 -r 5cff10efb927 master/domain.c --- a/master/domain.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/domain.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * d o m a i n . c - * - * EtherCAT domain methods. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT domain methods. +*/ + +/*****************************************************************************/ + #include "globals.h" #include "domain.h" #include "master.h" @@ -19,6 +39,8 @@ /*****************************************************************************/ +/** \cond */ + EC_SYSFS_READ_ATTR(data_size); static struct attribute *def_attrs[] = { @@ -37,6 +59,8 @@ .default_attrs = def_attrs }; +/** \endcond */ + /*****************************************************************************/ /** @@ -327,6 +351,7 @@ - If \a field_count is greater then 1, it is assumed that \a data_ptr is an array of the respective size. \return pointer to the slave on success, else NULL + \ingroup RealtimeInterface */ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain, @@ -418,6 +443,7 @@ Registeres a bunch of data fields. Caution! The list has to be terminated with a NULL structure ({})! \return 0 in case of success, else < 0 + \ingroup RealtimeInterface */ int ecrt_domain_register_field_list(ec_domain_t *domain, @@ -443,6 +469,7 @@ /** Places all process data commands in the masters command queue. + \ingroup RealtimeInterface */ void ecrt_domain_queue(ec_domain_t *domain /**< EtherCAT domain */) @@ -458,6 +485,7 @@ /** Processes received process data. + \ingroup RealtimeInterface */ void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */) @@ -481,6 +509,7 @@ /** Returns the state of a domain. \return 0 if all commands were received, else -1. + \ingroup RealtimeInterface */ int ecrt_domain_state(ec_domain_t *domain /**< EtherCAT domain */) @@ -496,10 +525,14 @@ /*****************************************************************************/ +/** \cond */ + EXPORT_SYMBOL(ecrt_domain_register_field); EXPORT_SYMBOL(ecrt_domain_register_field_list); EXPORT_SYMBOL(ecrt_domain_queue); EXPORT_SYMBOL(ecrt_domain_process); EXPORT_SYMBOL(ecrt_domain_state); -/*****************************************************************************/ +/** \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/domain.h --- a/master/domain.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/domain.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * d o m a i n . h - * - * EtherCAT domain structure. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT domain structure. +*/ + +/*****************************************************************************/ + #ifndef _EC_DOMAIN_H_ #define _EC_DOMAIN_H_ diff -r 9f83a343ae75 -r 5cff10efb927 master/doxygen.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/master/doxygen.c Mon Apr 24 10:47:03 2006 +0000 @@ -0,0 +1,74 @@ +/****************************************************************************** + * + * $Id$ + * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + *****************************************************************************/ + +/** + \file + Just for the doxygen mainpage. +*/ + +/*****************************************************************************/ + +/** + \mainpage The IgH EtherCAT master + + \section sec_docs Documentation + + You will find the code documentation in the modules section. + + There is an external API documentation for the realtime interface. + + For information how to build and install, see the README file. + + \section sec_contact Contact + + \verbatim + Florian Pose + Ingenieurgemeinschaft IgH + Heinz-Baecker-Str. 34 + D-45356 Essen + http://igh-essen.com + \endverbatim + + \section sec_license License + + \verbatim + Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + + This file is part of the IgH EtherCAT Master. + + The IgH EtherCAT Master is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; version 2 of the License. + + The IgH EtherCAT Master is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the IgH EtherCAT Master; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + \endverbatim +*/ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/ethernet.c --- a/master/ethernet.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/ethernet.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * e t h e r n e t . c - * - * Ethernet-over-EtherCAT (EoE) - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Ethernet-over-EtherCAT (EoE). +*/ + +/*****************************************************************************/ + #include "../include/ecrt.h" #include "globals.h" #include "master.h" @@ -17,6 +37,10 @@ /*****************************************************************************/ +/** + EoE constructor. +*/ + void ec_eoe_init(ec_eoe_t *eoe, ec_slave_t *slave) { eoe->slave = slave; @@ -25,12 +49,20 @@ /*****************************************************************************/ +/** + EoE destructor. +*/ + void ec_eoe_clear(ec_eoe_t *eoe) { } /*****************************************************************************/ +/** + Runs the EoE state machine. +*/ + void ec_eoe_run(ec_eoe_t *eoe) { uint8_t *data; @@ -110,6 +142,10 @@ /*****************************************************************************/ +/** + Prints EoE object information. +*/ + void ec_eoe_print(const ec_eoe_t *eoe) { EC_INFO(" EoE slave %i\n", eoe->slave->ring_position); diff -r 9f83a343ae75 -r 5cff10efb927 master/ethernet.h --- a/master/ethernet.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/ethernet.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * e t h e r n e t . h - * - * Ethernet-over-EtherCAT (EoE) - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Ethernet-over-EtherCAT (EoE) +*/ + +/*****************************************************************************/ + #include #include "../include/ecrt.h" @@ -17,21 +37,31 @@ /*****************************************************************************/ +/** + State of an EoE object. +*/ + typedef enum { - EC_EOE_IDLE, - EC_EOE_CHECKING, - EC_EOE_FETCHING + EC_EOE_IDLE, /**< Idle. The next step ist to check for data. */ + EC_EOE_CHECKING, /**< Checking frame was sent. */ + EC_EOE_FETCHING /**< There is new data. Fetching frame was sent. */ } ec_eoe_state_t; /*****************************************************************************/ +/** + Ethernet-over-EtherCAT (EoE) Object. + The master creates one of these objects for each slave that supports the + EoE protocol. +*/ + typedef struct { - struct list_head list; - ec_slave_t *slave; - ec_eoe_state_t rx_state; + struct list_head list; /**< list item */ + ec_slave_t *slave; /**< pointer to the corresponding slave */ + ec_eoe_state_t rx_state; /**< state of the state machine */ } ec_eoe_t; diff -r 9f83a343ae75 -r 5cff10efb927 master/globals.h --- a/master/globals.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/globals.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * g l o b a l s . h - * - * Global definitions and macros. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Global definitions and macros. +*/ + +/*****************************************************************************/ + #ifndef _EC_GLOBALS_ #define _EC_GLOBALS_ @@ -17,8 +37,13 @@ * EtherCAT master *****************************************************************************/ +/** master main version */ #define EC_MASTER_VERSION_MAIN 1 + +/** master sub version (after the dot) */ #define EC_MASTER_VERSION_SUB 0 + +/** master extra version (just a string) */ #define EC_MASTER_VERSION_EXTRA "stable" /** maximum number of FMMUs per slave */ @@ -31,7 +56,7 @@ /** maximum size of an EtherCAT frame (without header and CRC) */ #define EC_MAX_FRAME_SIZE 1500 -/** ... minimum size */ +/** minimum size of an EtherCAT frame (without header and CRC) */ #define EC_MIN_FRAME_SIZE 46 /** size of an EtherCAT frame header */ @@ -67,6 +92,10 @@ #define EC_LIT(X) #X #define EC_STR(X) EC_LIT(X) +/** + Convenience macro for defining SysFS attributes. +*/ + #define EC_SYSFS_READ_ATTR(NAME) \ static struct attribute attr_##NAME = { \ .name = EC_STR(NAME), .owner = THIS_MODULE, .mode = S_IRUGO \ diff -r 9f83a343ae75 -r 5cff10efb927 master/mailbox.c --- a/master/mailbox.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/mailbox.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * m a i l b o x . c - * - * Mailbox functionality. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Mailbox functionality. +*/ + +/*****************************************************************************/ + #include #include diff -r 9f83a343ae75 -r 5cff10efb927 master/mailbox.h --- a/master/mailbox.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/mailbox.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * m a i l b o x . h - * - * Mailbox functionality. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + Mailbox functionality. +*/ + +/*****************************************************************************/ + #ifndef _EC_MAILBOX_H_ #define _EC_MAILBOX_H_ diff -r 9f83a343ae75 -r 5cff10efb927 master/master.c --- a/master/master.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/master.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * m a s t e r . c - * - * EtherCAT master methods. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT master methods. +*/ + +/*****************************************************************************/ + #include #include #include @@ -31,6 +51,8 @@ /*****************************************************************************/ +/** \cond */ + EC_SYSFS_READ_ATTR(slave_count); EC_SYSFS_READ_ATTR(mode); @@ -51,6 +73,8 @@ .default_attrs = ec_def_attrs }; +/** \endcond */ + /*****************************************************************************/ /** @@ -678,113 +702,6 @@ /*****************************************************************************/ /** - Translates an ASCII coded bus-address to a slave pointer. - These are the valid addressing schemes: - - \a "X" = the X. slave on the bus, - - \a "X:Y" = the Y. slave after the X. branch (bus coupler), - - \a "#X" = the slave with alias X, - - \a "#X:Y" = the Y. slave after the branch (bus coupler) with alias X. - X and Y are zero-based indices and may be provided in hexadecimal or octal - notation (with respective prefix). - \return pointer to the slave on success, else NULL -*/ - -ec_slave_t *ecrt_master_get_slave(const ec_master_t *master, /**< Master */ - const char *address /**< address string */ - ) -{ - unsigned long first, second; - char *remainder, *remainder2; - unsigned int alias_requested, alias_found; - ec_slave_t *alias_slave = NULL, *slave; - - if (!address || address[0] == 0) return NULL; - - alias_requested = 0; - if (address[0] == '#') { - alias_requested = 1; - address++; - } - - first = simple_strtoul(address, &remainder, 0); - if (remainder == address) { - EC_ERR("Slave address \"%s\" - First number empty!\n", address); - return NULL; - } - - if (alias_requested) { - alias_found = 0; - list_for_each_entry(alias_slave, &master->slaves, list) { - if (alias_slave->sii_alias == first) { - alias_found = 1; - break; - } - } - if (!alias_found) { - EC_ERR("Slave address \"%s\" - Alias not found!\n", address); - return NULL; - } - } - - if (!remainder[0]) { // absolute position - if (alias_requested) { - return alias_slave; - } - else { - list_for_each_entry(slave, &master->slaves, list) { - if (slave->ring_position == first) return slave; - } - EC_ERR("Slave address \"%s\" - Absolute position invalid!\n", - address); - } - } - else if (remainder[0] == ':') { // field position - remainder++; - second = simple_strtoul(remainder, &remainder2, 0); - - if (remainder2 == remainder) { - EC_ERR("Slave address \"%s\" - Second number empty!\n", address); - return NULL; - } - - if (remainder2[0]) { - EC_ERR("Slave address \"%s\" - Invalid trailer!\n", address); - return NULL; - } - - if (alias_requested) { - if (!alias_slave->type || - alias_slave->type->special != EC_TYPE_BUS_COUPLER) { - EC_ERR("Slave address \"%s\": Alias slave must be bus coupler" - " in colon mode.\n", address); - return NULL; - } - list_for_each_entry(slave, &master->slaves, list) { - if (slave->coupler_index == alias_slave->coupler_index - && slave->coupler_subindex == second) - return slave; - } - EC_ERR("Slave address \"%s\" - Bus coupler %i has no %lu. slave" - " following!\n", address, alias_slave->ring_position, - second); - return NULL; - } - else { - list_for_each_entry(slave, &master->slaves, list) { - if (slave->coupler_index == first - && slave->coupler_subindex == second) return slave; - } - } - } - else - EC_ERR("Slave address \"%s\" - Invalid format!\n", address); - - return NULL; -} - -/*****************************************************************************/ - -/** Initializes a sync manager configuration page. The referenced memory (\a data) must be at least EC_SYNC_SIZE bytes. */ @@ -918,6 +835,21 @@ } } +/*****************************************************************************/ + +/** + Does the Ethernet-over-EtherCAT processing. +*/ + +void ec_master_run_eoe(ec_master_t *master /**< EtherCAT master */) +{ + ec_eoe_t *eoe; + + list_for_each_entry(eoe, &master->eoe_slaves, list) { + ec_eoe_run(eoe); + } +} + /****************************************************************************** * Realtime interface *****************************************************************************/ @@ -925,6 +857,7 @@ /** Creates a domain. \return pointer to new domain on success, else NULL + \ingroup RealtimeInterface */ ec_domain_t *ecrt_master_create_domain(ec_master_t *master /**< master */) @@ -970,6 +903,7 @@ managers and FMMUs, and does the appropriate transitions, until the slave is operational. \return 0 in case of success, else < 0 + \ingroup RealtimeInterface */ int ecrt_master_activate(ec_master_t *master /**< EtherCAT master */) @@ -1156,6 +1090,7 @@ /** Resets all slaves to INIT state. + \ingroup RealtimeInterface */ void ecrt_master_deactivate(ec_master_t *master /**< EtherCAT master */) @@ -1175,6 +1110,7 @@ Fetches the SDO dictionaries of all slaves. Slaves that do not support the CoE protocol are left out. \return 0 in case of success, else < 0 + \ingroup RealtimeInterface */ int ecrt_master_fetch_sdo_lists(ec_master_t *master /**< EtherCAT master */) @@ -1198,6 +1134,7 @@ /** Sends queued commands and waits for their reception. + \ingroup RealtimeInterface */ void ecrt_master_sync_io(ec_master_t *master /**< EtherCAT master */) @@ -1253,6 +1190,7 @@ /** Asynchronous sending of commands. + \ingroup RealtimeInterface */ void ecrt_master_async_send(ec_master_t *master /**< EtherCAT master */) @@ -1279,6 +1217,7 @@ /** Asynchronous receiving of commands. + \ingroup RealtimeInterface */ void ecrt_master_async_receive(ec_master_t *master /**< EtherCAT master */) @@ -1313,6 +1252,7 @@ Prepares synchronous IO. Queues all domain commands and sends them. Then waits a certain time, so that ecrt_master_sasync_receive() can be called securely. + \ingroup RealtimeInterface */ void ecrt_master_prepare_async_io(ec_master_t *master /**< EtherCAT master */) @@ -1340,6 +1280,7 @@ /** Does all cyclic master work. + \ingroup RealtimeInterface */ void ecrt_master_run(ec_master_t *master /**< EtherCAT master */) @@ -1358,10 +1299,119 @@ /*****************************************************************************/ /** + Translates an ASCII coded bus-address to a slave pointer. + These are the valid addressing schemes: + - \a "X" = the X. slave on the bus, + - \a "X:Y" = the Y. slave after the X. branch (bus coupler), + - \a "#X" = the slave with alias X, + - \a "#X:Y" = the Y. slave after the branch (bus coupler) with alias X. + X and Y are zero-based indices and may be provided in hexadecimal or octal + notation (with respective prefix). + \return pointer to the slave on success, else NULL + \ingroup RealtimeInterface +*/ + +ec_slave_t *ecrt_master_get_slave(const ec_master_t *master, /**< Master */ + const char *address /**< address string */ + ) +{ + unsigned long first, second; + char *remainder, *remainder2; + unsigned int alias_requested, alias_found; + ec_slave_t *alias_slave = NULL, *slave; + + if (!address || address[0] == 0) return NULL; + + alias_requested = 0; + if (address[0] == '#') { + alias_requested = 1; + address++; + } + + first = simple_strtoul(address, &remainder, 0); + if (remainder == address) { + EC_ERR("Slave address \"%s\" - First number empty!\n", address); + return NULL; + } + + if (alias_requested) { + alias_found = 0; + list_for_each_entry(alias_slave, &master->slaves, list) { + if (alias_slave->sii_alias == first) { + alias_found = 1; + break; + } + } + if (!alias_found) { + EC_ERR("Slave address \"%s\" - Alias not found!\n", address); + return NULL; + } + } + + if (!remainder[0]) { // absolute position + if (alias_requested) { + return alias_slave; + } + else { + list_for_each_entry(slave, &master->slaves, list) { + if (slave->ring_position == first) return slave; + } + EC_ERR("Slave address \"%s\" - Absolute position invalid!\n", + address); + } + } + else if (remainder[0] == ':') { // field position + remainder++; + second = simple_strtoul(remainder, &remainder2, 0); + + if (remainder2 == remainder) { + EC_ERR("Slave address \"%s\" - Second number empty!\n", address); + return NULL; + } + + if (remainder2[0]) { + EC_ERR("Slave address \"%s\" - Invalid trailer!\n", address); + return NULL; + } + + if (alias_requested) { + if (!alias_slave->type || + alias_slave->type->special != EC_TYPE_BUS_COUPLER) { + EC_ERR("Slave address \"%s\": Alias slave must be bus coupler" + " in colon mode.\n", address); + return NULL; + } + list_for_each_entry(slave, &master->slaves, list) { + if (slave->coupler_index == alias_slave->coupler_index + && slave->coupler_subindex == second) + return slave; + } + EC_ERR("Slave address \"%s\" - Bus coupler %i has no %lu. slave" + " following!\n", address, alias_slave->ring_position, + second); + return NULL; + } + else { + list_for_each_entry(slave, &master->slaves, list) { + if (slave->coupler_index == first + && slave->coupler_subindex == second) return slave; + } + } + } + else + EC_ERR("Slave address \"%s\" - Invalid format!\n", address); + + return NULL; +} + +/*****************************************************************************/ + +/** Sets the debug level of the master. The following levels are valid: - 1: only output positions marks and basic data - 2: additional frame data output + \ingroup RealtimeInterface */ void ecrt_master_debug(ec_master_t *master, /**< EtherCAT master */ @@ -1382,6 +1432,7 @@ - 0: Only slave types and positions - 1: with EEPROM contents - >1: with SDO dictionaries + \ingroup RealtimeInterface */ void ecrt_master_print(const ec_master_t *master, /**< EtherCAT master */ @@ -1408,20 +1459,7 @@ /*****************************************************************************/ -/** - Does the Ethernet-over-EtherCAT processing. -*/ - -void ec_master_run_eoe(ec_master_t *master /**< EtherCAT master */) -{ - ec_eoe_t *eoe; - - list_for_each_entry(eoe, &master->eoe_slaves, list) { - ec_eoe_run(eoe); - } -} - -/*****************************************************************************/ +/** \cond */ EXPORT_SYMBOL(ecrt_master_create_domain); EXPORT_SYMBOL(ecrt_master_activate); @@ -1436,4 +1474,6 @@ EXPORT_SYMBOL(ecrt_master_print); EXPORT_SYMBOL(ecrt_master_get_slave); -/*****************************************************************************/ +/** \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/master.h --- a/master/master.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/master.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * m a s t e r . h - * - * EtherCAT master structure. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT master structure. +*/ + +/*****************************************************************************/ + #ifndef _EC_MASTER_H_ #define _EC_MASTER_H_ @@ -35,7 +55,7 @@ /*****************************************************************************/ /** - Cyclic EtherCAT statistics. + Cyclic statistics. */ typedef struct @@ -52,7 +72,7 @@ /*****************************************************************************/ /** - EtherCAT-Master. + EtherCAT master. Manages slaves, domains and IO. */ @@ -100,7 +120,6 @@ int ec_master_bus_scan(ec_master_t *); // misc. -void ec_master_debug(const ec_master_t *); void ec_master_output_stats(ec_master_t *); void ec_master_run_eoe(ec_master_t *); diff -r 9f83a343ae75 -r 5cff10efb927 master/module.c --- a/master/module.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/module.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,23 +1,33 @@ /****************************************************************************** * - * m o d u l e . c - * - * EtherCAT master driver module. - * - * Author: Florian Pose - * * $Id$ * - * (C) Copyright IgH 2005 - * Ingenieurgemeinschaft IgH - * Heinz-Bäcker Str. 34 - * D-45356 Essen - * Tel.: +49 201/61 99 31 - * Fax.: +49 201/61 98 36 - * E-mail: sp@igh-essen.com + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ +/** + \file + EtherCAT master driver module. +*/ + +/*****************************************************************************/ + #include #include #include @@ -33,6 +43,10 @@ /*****************************************************************************/ +/** + Compile version info. +*/ + #define COMPILE_INFO EC_STR(EC_MASTER_VERSION_MAIN) \ "." EC_STR(EC_MASTER_VERSION_SUB) \ " (" EC_MASTER_VERSION_EXTRA ")" \ @@ -47,6 +61,8 @@ /*****************************************************************************/ +/** \cond */ + MODULE_AUTHOR ("Florian Pose "); MODULE_DESCRIPTION ("EtherCAT master driver module"); MODULE_LICENSE("GPL"); @@ -55,6 +71,8 @@ module_param(ec_master_count, int, 1); MODULE_PARM_DESC(ec_master_count, "number of EtherCAT masters to initialize"); +/** \endcond */ + /*****************************************************************************/ /** @@ -205,8 +223,12 @@ *****************************************************************************/ /** - Registeres an EtherCAT device for a certain master. + Connects an EtherCAT device to a certain master. + The master will use the device for sending and receiving frames. It is + required that no other instance (for example the kernel IP stack) uses + the device. \return 0 on success, else < 0 + \ingroup DeviceInterface */ ec_device_t *ecdev_register(unsigned int master_index, /**< master index */ @@ -257,7 +279,12 @@ /*****************************************************************************/ /** - Unregisteres an EtherCAT device. + Disconnect an EtherCAT device from the master. + The device is disconnected from the master and all device ressources + are freed. + \attention Before calling this function, the ecdev_stop() function has + to be called, to be sure that the master does not use the device any more. + \ingroup DeviceInterface */ void ecdev_unregister(unsigned int master_index, /**< master index */ @@ -282,6 +309,10 @@ /** Starts the master associated with the device. + This function has to be called by the network device driver to tell the + master that the device is ready to send and receive data. The master + will enter the free-run mode then. + \ingroup DeviceInterface */ int ecdev_start(unsigned int master_index /**< master index */) @@ -302,6 +333,9 @@ /** Stops the master associated with the device. + Tells the master to stop using the device for frame IO. Has to be called + before unregistering the device. + \ingroup DeviceInterface */ void ecdev_stop(unsigned int master_index /**< master index */) @@ -322,6 +356,7 @@ /** Reserves an EtherCAT master for realtime operation. \return pointer to reserved master, or NULL on error + \ingroup RealtimeInterface */ ec_master_t *ecrt_request_master(unsigned int master_index @@ -380,6 +415,7 @@ /** Releases a reserved EtherCAT master. + \ingroup RealtimeInterface */ void ecrt_release_master(ec_master_t *master /**< EtherCAT master */) @@ -405,6 +441,8 @@ /*****************************************************************************/ +/** \cond */ + module_init(ec_init_module); module_exit(ec_cleanup_module); @@ -415,4 +453,6 @@ EXPORT_SYMBOL(ecrt_request_master); EXPORT_SYMBOL(ecrt_release_master); -/*****************************************************************************/ +/** \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/slave.c --- a/master/slave.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/slave.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * s l a v e . c - * - * EtherCAT slave methods. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT slave methods. +*/ + +/*****************************************************************************/ + #include #include @@ -28,6 +48,8 @@ /*****************************************************************************/ +/** \cond */ + EC_SYSFS_READ_ATTR(ring_position); EC_SYSFS_READ_ATTR(coupler_address); EC_SYSFS_READ_ATTR(vendor_name); @@ -56,6 +78,8 @@ .default_attrs = def_attrs }; +/** \endcond */ + /*****************************************************************************/ const ec_code_msg_t al_status_messages[]; @@ -722,9 +746,13 @@ /** Searches the string list for an index and allocates a new string. \return 0 in case of success, else < 0 -*/ - -int ec_slave_locate_string(ec_slave_t *slave, unsigned int index, char **ptr) + \todo documentation +*/ + +int ec_slave_locate_string(ec_slave_t *slave, /**< EtherCAT slave */ + unsigned int index, /**< string index */ + char **ptr /**< Address of the string pointer */ + ) { ec_eeprom_string_t *string; char *err_string; @@ -822,7 +850,7 @@ /** Reads the AL status code of a slave and displays it. If the AL status code is not supported, or if no error occurred (both - resulting in code=0), nothing is displayed. + resulting in code = 0), nothing is displayed. */ void ec_slave_read_al_status_code(ec_slave_t *slave /**< EtherCAT slave */) @@ -1179,22 +1207,9 @@ /*****************************************************************************/ /** - Writes the "configured station alias" to the slave's EEPROM. - \return 0 in case of success, else < 0 -*/ - -int ecrt_slave_write_alias(ec_slave_t *slave, /** EtherCAT slave */ - uint16_t alias /** new alias */ - ) -{ - return ec_slave_sii_write16(slave, 0x0004, alias); -} - -/*****************************************************************************/ - -/** Formats attribute data for SysFS read access. \return number of bytes to read + \ingroup RealTimeInterface */ ssize_t ec_show_slave_attribute(struct kobject *kobj, /**< slave's kobject */ @@ -1237,6 +1252,10 @@ /*****************************************************************************/ +/** + Application layer status messages. +*/ + const ec_code_msg_t al_status_messages[] = { {0x0001, "Unspecified error"}, {0x0011, "Invalud requested state change"}, @@ -1257,8 +1276,29 @@ {} }; -/*****************************************************************************/ +/****************************************************************************** + * Realtime interface + *****************************************************************************/ + +/** + Writes the "configured station alias" to the slave's EEPROM. + \return 0 in case of success, else < 0 + \ingroup RealtimeInterface +*/ + +int ecrt_slave_write_alias(ec_slave_t *slave, /**< EtherCAT slave */ + uint16_t alias /**< new alias */ + ) +{ + return ec_slave_sii_write16(slave, 0x0004, alias); +} + +/*****************************************************************************/ + +/**< \cond */ EXPORT_SYMBOL(ecrt_slave_write_alias); -/*****************************************************************************/ +/**< \endcond */ + +/*****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 master/slave.h --- a/master/slave.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/slave.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * s l a v e . h - * - * EtherCAT stave structure. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT stave structure. +*/ + +/*****************************************************************************/ + #ifndef _EC_SLAVE_H_ #define _EC_SLAVE_H_ @@ -184,7 +204,7 @@ /*****************************************************************************/ /** - EtherCAT-Slave + EtherCAT slave. */ struct ec_slave diff -r 9f83a343ae75 -r 5cff10efb927 master/types.c --- a/master/types.c Thu Apr 20 14:38:41 2006 +0000 +++ b/master/types.c Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,34 @@ /****************************************************************************** * - * t y p e s . c - * - * EtherCAT slave descriptions. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT slave descriptions. + \cond +*/ + +/*****************************************************************************/ + #include #include "globals.h" @@ -190,6 +211,8 @@ {&trlinenc2_sm0, &trlinenc2_sm1, &trlinenc2_sm2, &trlinenc2_sm3, NULL} }; +/** \endcond */ + /*****************************************************************************/ /** diff -r 9f83a343ae75 -r 5cff10efb927 master/types.h --- a/master/types.h Thu Apr 20 14:38:41 2006 +0000 +++ b/master/types.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,13 +1,33 @@ /****************************************************************************** * - * t y p e s . h - * - * EtherCAT slave types. - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ +/** + \file + EtherCAT slave types. +*/ + +/*****************************************************************************/ + #ifndef _EC_TYPES_H_ #define _EC_TYPES_H_ @@ -50,7 +70,7 @@ /*****************************************************************************/ /** - Sync-Manager. + Sync manager. */ typedef struct diff -r 9f83a343ae75 -r 5cff10efb927 mini/Makefile --- a/mini/Makefile Thu Apr 20 14:38:41 2006 +0000 +++ b/mini/Makefile Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #---------------------------------------------------------------- ifneq ($(KERNELRELEASE),) diff -r 9f83a343ae75 -r 5cff10efb927 mini/mini.c --- a/mini/mini.c Thu Apr 20 14:38:41 2006 +0000 +++ b/mini/mini.c Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ #include diff -r 9f83a343ae75 -r 5cff10efb927 rt/Makefile --- a/rt/Makefile Thu Apr 20 14:38:41 2006 +0000 +++ b/rt/Makefile Mon Apr 24 10:47:03 2006 +0000 @@ -4,6 +4,23 @@ # # $Id$ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ ifneq ($(KERNELRELEASE),) diff -r 9f83a343ae75 -r 5cff10efb927 rt/install.sh --- a/rt/install.sh Thu Apr 20 14:38:41 2006 +0000 +++ b/rt/install.sh Mon Apr 24 10:47:03 2006 +0000 @@ -6,6 +6,23 @@ # # $Id: install.sh 5 2006-04-07 13:49:10Z fp $ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ # Fetch parameters diff -r 9f83a343ae75 -r 5cff10efb927 rt/msr_param.h --- a/rt/msr_param.h Thu Apr 20 14:38:41 2006 +0000 +++ b/rt/msr_param.h Mon Apr 24 10:47:03 2006 +0000 @@ -1,6 +1,23 @@ /****************************************************************************** * - * $Id$ + * $Id$ + * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ diff -r 9f83a343ae75 -r 5cff10efb927 rt/msr_rt.c --- a/rt/msr_rt.c Thu Apr 20 14:38:41 2006 +0000 +++ b/rt/msr_rt.c Mon Apr 24 10:47:03 2006 +0000 @@ -4,18 +4,25 @@ * * Kernelmodul für 2.6 Kernel zur Meßdatenerfassung, Steuerung und Regelung. * - * Autor: Wilhelm Hagemeister, Florian Pose - * - * (C) Copyright IgH 2002 - * Ingenieurgemeinschaft IgH - * Heinz-Bäcker Str. 34 - * D-45356 Essen - * Tel.: +49 201/61 99 31 - * Fax.: +49 201/61 98 36 - * E-mail: hm@igh-essen.com - * * $Id$ * + * Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 of the License. + * + * The IgH EtherCAT Master is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * *****************************************************************************/ // Linux diff -r 9f83a343ae75 -r 5cff10efb927 rt/msrserv.pl --- a/rt/msrserv.pl Thu Apr 20 14:38:41 2006 +0000 +++ b/rt/msrserv.pl Mon Apr 24 10:47:03 2006 +0000 @@ -1,30 +1,35 @@ #!/usr/bin/perl -w -#------------------------------------------------------------ -# -# (C) Copyright -# Ingenieurgemeinschaft IgH -# Heinz-Baecker-Strasse 34 -# D-45356 Essen -# Tel.: +49-201/61 99 31 -# Fax.: +49-201/61 98 36 -# WWW: http://www.igh-essen.com -# Email: msr@igh-essen.com -# -#------------------------------------------------------------ -# -# Multithreaded Server -# according to the example from "Programming Perl" -# this code is improved according to the example from -# perldoc perlipc, so now safely being usable under Perl 5.8 -# (see note (*)) -# -# works with read/write on a device-file -# -# $Revision: 1.1 $ -# $Date: 2004/10/01 16:00:42 $ -# $RCSfile: msrserv.pl,v $ -# -#------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# +# Copyright (C) 2006 Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#------------------------------------------------------------------------------ +# +# Multithreaded Server +# according to the example from "Programming Perl" +# this code is improved according to the example from +# perldoc perlipc, so now safely being usable under Perl 5.8 +# (see note (*)) +# +# works with read/write on a device-file +# +#------------------------------------------------------------------------------ require 5.002; use strict; diff -r 9f83a343ae75 -r 5cff10efb927 tools/ec_list.pl --- a/tools/ec_list.pl Thu Apr 20 14:38:41 2006 +0000 +++ b/tools/ec_list.pl Mon Apr 24 10:47:03 2006 +0000 @@ -8,6 +8,23 @@ # # $Id: slave.c 340 2006-04-11 10:17:30Z fp $ # +# Copyright (C) 2006 Florian Pose, Ingenieurgemeinschaft IgH +# +# This file is part of the IgH EtherCAT Master. +# +# The IgH EtherCAT Master is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 of the License. +# +# The IgH EtherCAT Master is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the IgH EtherCAT Master; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# #------------------------------------------------------------------------------ use strict;