diff options
22 files changed, 3138 insertions, 47 deletions
| diff --git a/Demos/Host/ClassDriver/PrinterHost/Doxygen.conf b/Demos/Host/ClassDriver/PrinterHost/Doxygen.conf new file mode 100644 index 000000000..ac6ed02ec --- /dev/null +++ b/Demos/Host/ClassDriver/PrinterHost/Doxygen.conf @@ -0,0 +1,1485 @@ +# Doxyfile 1.5.7.1
 +
 +# This file describes the settings to be used by the documentation system
 +# doxygen (www.doxygen.org) for a project
 +#
 +# All text after a hash (#) is considered a comment and will be ignored
 +# The format is:
 +#       TAG = value [value, ...]
 +# For lists items can also be appended using:
 +#       TAG += value [value, ...]
 +# Values that contain spaces should be placed between quotes (" ")
 +
 +#---------------------------------------------------------------------------
 +# Project related configuration options
 +#---------------------------------------------------------------------------
 +
 +# This tag specifies the encoding used for all characters in the config file 
 +# that follow. The default is UTF-8 which is also the encoding used for all 
 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
 +# iconv built into libc) for the transcoding. See 
 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
 +
 +DOXYFILE_ENCODING      = UTF-8
 +
 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
 +# by quotes) that should identify the project.
 +
 +PROJECT_NAME           = "LUFA Library - Printer Host Demo"
 +
 +# 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         = 0.0.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 
 +# where doxygen was started. If left blank the current directory will be used.
 +
 +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: 
 +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
 +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
 +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
 +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
 +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
 +# Spanish, Swedish, and Ukrainian.
 +
 +OUTPUT_LANGUAGE        = English
 +
 +# 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 
 +# 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" 
 +# "represents" "a" "an" "the"
 +
 +ABBREVIATE_BRIEF       = "The $name class" \
 +                         "The $name widget" \
 +                         "The $name file" \
 +                         is \
 +                         provides \
 +                         specifies \
 +                         contains \
 +                         represents \
 +                         a \
 +                         an \
 +                         the
 +
 +# 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 
 +# 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 
 +# to NO the shortest path that makes the file name unique will be used.
 +
 +FULL_PATH_NAMES        = YES
 +
 +# 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 
 +# 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 
 +# doesn't support long names like on DOS, Mac, or CD-ROM.
 +
 +SHORT_NAMES            = YES
 +
 +# 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 regular Qt-style comments 
 +# (thus requiring an explicit @brief command for a brief description.)
 +
 +JAVADOC_AUTOBRIEF      = NO
 +
 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
 +# interpret the first line (until the first dot) of a Qt-style 
 +# comment as the brief description. If set to NO, the comments 
 +# will behave just like regular Qt-style comments (thus requiring 
 +# an explicit \brief command for a brief description.)
 +
 +QT_AUTOBRIEF           = NO
 +
 +# 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 = NO
 +
 +# 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 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. 
 +# Doxygen uses this value to replace tabs by spaces in code fragments.
 +
 +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 
 +# 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 will look different, etc.
 +
 +OPTIMIZE_OUTPUT_JAVA   = NO
 +
 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
 +# sources only. Doxygen will then generate output that is more tailored for 
 +# Fortran.
 +
 +OPTIMIZE_FOR_FORTRAN   = NO
 +
 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
 +# sources. Doxygen will then generate output that is tailored for 
 +# VHDL.
 +
 +OPTIMIZE_OUTPUT_VHDL   = NO
 +
 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
 +# to include (a tag file for) the STL sources as input, then you should 
 +# set this tag to YES in order to let doxygen match functions declarations and 
 +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
 +# func(std::string) {}). This also make the inheritance and collaboration 
 +# diagrams that involve STL classes more complete and accurate.
 +
 +BUILTIN_STL_SUPPORT    = NO
 +
 +# If you use Microsoft's C++/CLI language, you should set this option to YES to
 +# enable parsing support.
 +
 +CPP_CLI_SUPPORT        = NO
 +
 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
 +# Doxygen will parse them like normal C++ but will assume all classes use public 
 +# instead of private inheritance when no explicit protection keyword is present.
 +
 +SIP_SUPPORT            = NO
 +
 +# For Microsoft's IDL there are propget and propput attributes to indicate getter 
 +# and setter methods for a property. Setting this option to YES (the default) 
 +# will make doxygen to replace the get and set methods by a property in the 
 +# documentation. This will only work if the methods are indeed getting or 
 +# setting a simple type. If this is not the case, or you want to show the 
 +# methods anyway, you should set this option to NO.
 +
 +IDL_PROPERTY_SUPPORT   = 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 
 +# all members of a group must be documented explicitly.
 +
 +DISTRIBUTE_GROUP_DOC   = 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 
 +# the \nosubgrouping command.
 +
 +SUBGROUPING            = YES
 +
 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
 +# is documented as struct, union, or enum with the name of the typedef. So 
 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
 +# with name TypeT. When disabled the typedef will appear as a member of a file, 
 +# namespace, or class. And the struct will be named TypeS. This can typically 
 +# be useful for C code in case the coding convention dictates that all compound 
 +# types are typedef'ed and only the typedef is referenced, never the tag name.
 +
 +TYPEDEF_HIDES_STRUCT   = NO
 +
 +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
 +# determine which symbols to keep in memory and which to flush to disk.
 +# When the cache is full, less often used symbols will be written to disk.
 +# For small to medium size projects (<1000 input files) the default value is 
 +# probably good enough. For larger projects a too small cache size can cause 
 +# doxygen to be busy swapping symbols to and from disk most of the time 
 +# causing a significant performance penality. 
 +# If the system has enough physical memory increasing the cache will improve the 
 +# performance by keeping more symbols in memory. Note that the value works on 
 +# a logarithmic scale so increasing the size by one will rougly double the 
 +# memory usage. The cache size is given by this formula: 
 +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
 +# corresponding to a cache size of 2^16 = 65536 symbols
 +
 +SYMBOL_CACHE_SIZE      = 0
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# 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 
 +# will be included in the documentation.
 +
 +EXTRACT_PRIVATE        = YES
 +
 +# 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 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. 
 +# If set to NO (the default) only methods in the interface are included.
 +
 +EXTRACT_LOCAL_METHODS  = NO
 +
 +# If this flag is set to YES, the members of anonymous namespaces will be 
 +# extracted and appear in the documentation as a namespace called 
 +# 'anonymous_namespace{file}', where file will be replaced with the base 
 +# name of the file that contains the anonymous namespace. By default 
 +# anonymous namespace are hidden.
 +
 +EXTRACT_ANON_NSPACES   = NO
 +
 +# 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     = 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     = 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 
 +# 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. 
 +# 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 
 +# and Mac users are advised to set this option to NO.
 +
 +CASE_SENSE_NAMES       = NO
 +
 +# 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 
 +# of that file.
 +
 +SHOW_INCLUDE_FILES     = YES
 +
 +# 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 
 +# declaration order.
 +
 +SORT_MEMBER_DOCS       = YES
 +
 +# 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_GROUP_NAMES tag is set to YES then doxygen will sort the 
 +# hierarchy of group names into alphabetical order. If set to NO (the default) 
 +# the group names will appear in their defined order.
 +
 +SORT_GROUP_NAMES       = 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. 
 +# 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 
 +# 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 
 +# commands in the documentation.
 +
 +GENERATE_TODOLIST      = NO
 +
 +# 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 
 +# 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 
 +# \deprecated commands in the documentation.
 +
 +GENERATE_DEPRECATEDLIST= YES
 +
 +# 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 
 +# 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 
 +# list will mention the files that were used to generate the documentation.
 +
 +SHOW_USED_FILES        = YES
 +
 +# 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 NO.
 +
 +SHOW_DIRECTORIES       = YES
 +
 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
 +# This will remove the Files entry from the Quick Index and from the 
 +# Folder Tree View (if specified). The default is YES.
 +
 +SHOW_FILES             = YES
 +
 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
 +# Namespaces page.  This will remove the Namespaces entry from the Quick Index
 +# and from the Folder Tree View (if specified). The default is YES.
 +
 +SHOW_NAMESPACES        = 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 <command> <input-file>, where <command> is the value of 
 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
 +# provided by doxygen. Whatever the program writes to standard output 
 +# is used as the file version. See the manual for examples.
 +
 +FILE_VERSION_FILTER    = 
 +
 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
 +# doxygen. The layout file controls the global structure of the generated output files 
 +# in an output format independent way. The create the layout file that represents 
 +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
 +# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
 +# of the layout file.
 +
 +LAYOUT_FILE            = 
 +
 +#---------------------------------------------------------------------------
 +# configuration options related to warning and progress messages
 +#---------------------------------------------------------------------------
 +
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# documentation.
 +
 +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 
 +# to stderr.
 +
 +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 
 +# with spaces.
 +
 +INPUT                  = ./
 +
 +# This tag can be used to specify the character encoding of the source files 
 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
 +# also the default input encoding. Doxygen uses libiconv (or the iconv built 
 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
 +# the list of possible encodings.
 +
 +INPUT_ENCODING         = UTF-8
 +
 +# 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 *.py *.f90
 +
 +FILE_PATTERNS          = *.h \
 +                         *.c \
 +						 *.txt
 +
 +# 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              = YES
 +
 +# 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                = Documentation/
 +
 +# 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 
 +# for example use the pattern */test/*
 +
 +EXCLUDE_PATTERNS       = */LowLevel/USBMode.h
 +
 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
 +# (namespaces, classes, functions, etc.) that should be excluded from the 
 +# output. The symbol name can be a fully qualified name, a word, or if the 
 +# wildcard * is used, a substring. Examples: ANamespace, AClass, 
 +# AClass::ANamespace, ANamespace::*Test
 +
 +EXCLUDE_SYMBOLS        = __*
 +
 +# 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 
 +# 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. 
 +# 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 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 <filter> <input-file>, where <filter> 
 +# is the value of the INPUT_FILTER tag, and <input-file> 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 
 +# 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 
 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
 +
 +FILTER_SOURCE_FILES    = NO
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# VERBATIM_HEADERS is set to NO.
 +
 +SOURCE_BROWSER         = NO
 +
 +# 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 
 +# fragments. Normal C and C++ comments will always remain visible.
 +
 +STRIP_CODE_COMMENTS    = YES
 +
 +# If the REFERENCED_BY_RELATION tag is set to YES 
 +# 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 
 +# then for each documented function all documented entities 
 +# called/used by that function will be listed.
 +
 +REFERENCES_RELATION    = NO
 +
 +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
 +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
 +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
 +# link to the source code.  Otherwise they will link to the documentstion.
 +
 +REFERENCES_LINK_SOURCE = 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 
 +# 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 
 +# which an include is specified. Set to NO to disable this.
 +
 +VERBATIM_HEADERS       = NO
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# contains a lot of classes, structs, unions or interfaces.
 +
 +ALPHABETICAL_INDEX     = YES
 +
 +# 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 
 +# should be ignored while generating the index headers.
 +
 +IGNORE_PREFIX          = 
 +
 +#---------------------------------------------------------------------------
 +# configuration options related to the HTML output
 +#---------------------------------------------------------------------------
 +
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# NO a bullet list will be used.
 +
 +HTML_ALIGN_MEMBERS     = YES
 +
 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
 +# documentation will contain sections that can be hidden and shown after the 
 +# page has loaded. For this to work a browser that supports 
 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
 +
 +HTML_DYNAMIC_SECTIONS  = YES
 +
 +# If the GENERATE_DOCSET tag is set to YES, additional index files 
 +# will be generated that can be used as input for Apple's Xcode 3 
 +# integrated development environment, introduced with OSX 10.5 (Leopard). 
 +# To create a documentation set, doxygen will generate a Makefile in the 
 +# HTML output directory. Running make will produce the docset in that 
 +# directory and running "make install" will install the docset in 
 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
 +# it at startup. 
 +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
 +
 +GENERATE_DOCSET        = NO
 +
 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
 +# feed. A documentation feed provides an umbrella under which multiple 
 +# documentation sets from a single provider (such as a company or product suite) 
 +# can be grouped.
 +
 +DOCSET_FEEDNAME        = "Doxygen generated docs"
 +
 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
 +# should uniquely identify the documentation set bundle. This should be a 
 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
 +# will append .docset to the name.
 +
 +DOCSET_BUNDLE_ID       = org.doxygen.Project
 +
 +# 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 compiled 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 
 +# 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 
 +# 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 
 +# it should be included in the master .chm file (NO).
 +
 +GENERATE_CHI           = NO
 +
 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
 +# is used to encode HtmlHelp index (hhk), content (hhc) and project file
 +# content.
 +
 +CHM_INDEX_ENCODING     = 
 +
 +# 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 
 +# to the contents of the HTML help documentation and to the tree view.
 +
 +TOC_EXPAND             = YES
 +
 +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
 +# are set, an additional index file will be generated that can be used as input for 
 +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
 +# HTML documentation.
 +
 +GENERATE_QHP           = NO
 +
 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
 +# be used to specify the file name of the resulting .qch file. 
 +# The path specified is relative to the HTML output folder.
 +
 +QCH_FILE               = 
 +
 +# The QHP_NAMESPACE tag specifies the namespace to use when generating 
 +# Qt Help Project output. For more information please see 
 +# <a href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
 +
 +QHP_NAMESPACE          = org.doxygen.Project
 +
 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
 +# Qt Help Project output. For more information please see 
 +# <a href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
 +
 +QHP_VIRTUAL_FOLDER     = doc
 +
 +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
 +# be used to specify the location of Qt's qhelpgenerator. 
 +# If non-empty doxygen will try to run qhelpgenerator on the generated 
 +# .qhp file .
 +
 +QHG_LOCATION           = 
 +
 +# 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]) 
 +# that doxygen will group on one line in the generated HTML documentation.
 +
 +ENUM_VALUES_PER_LINE   = 1
 +
 +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
 +# structure should be generated to display hierarchical information.
 +# If the tag value is set to FRAME, 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 
 +# probably better off using the HTML help feature. Other possible values 
 +# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
 +# and Class Hierarchy pages using a tree view instead of an ordered list;
 +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
 +# disables this behavior completely. For backwards compatibility with previous
 +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
 +# respectively.
 +
 +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 
 +# is shown.
 +
 +TREEVIEW_WIDTH         = 250
 +
 +# Use this tag to change the font size of Latex formulas included 
 +# as images in the HTML documentation. The default is 10. Note that 
 +# when you change the font size after a successful doxygen run you need 
 +# to manually remove any form_*.png images from the HTML output directory 
 +# to force them to be regenerated.
 +
 +FORMULA_FONTSIZE       = 10
 +
 +#---------------------------------------------------------------------------
 +# configuration options related to the LaTeX output
 +#---------------------------------------------------------------------------
 +
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# This makes the output suitable for online browsing using a pdf viewer.
 +
 +PDF_HYPERLINKS         = YES
 +
 +# 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           = 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.) 
 +# in the output.
 +
 +LATEX_HIDE_INDICES     = NO
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# 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 
 +# 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 
 +# 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. 
 +# 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 
 +# replacements, missing definitions are set to their default value.
 +
 +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    = 
 +
 +#---------------------------------------------------------------------------
 +# configuration options related to the man page output
 +#---------------------------------------------------------------------------
 +
 +# 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 
 +# 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 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 
 +# would be unable to find the correct page. The default is NO.
 +
 +MAN_LINKS              = NO
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# enabling this will significantly increase the size of the XML output.
 +
 +XML_PROGRAMLISTING     = YES
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# and incomplete at the moment.
 +
 +GENERATE_AUTOGEN_DEF   = NO
 +
 +#---------------------------------------------------------------------------
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# way by setting EXPAND_ONLY_PREDEF to YES.
 +
 +MACRO_EXPANSION        = YES
 +
 +# 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_DEFINED tags.
 +
 +EXPAND_ONLY_PREDEF     = YES
 +
 +# 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 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 
 +# 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 
 +# instead of the = operator.
 +
 +PREDEFINED             = __DOXYGEN__
 +
 +# 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      = BUTTLOADTAG
 +
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# 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 
 +# be listed.
 +
 +EXTERNAL_GROUPS        = YES
 +
 +# 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 
 +# powerful graphs.
 +
 +CLASS_DIAGRAMS         = NO
 +
 +# You can define message sequence charts within doxygen comments using the \msc 
 +# command. Doxygen will then run the mscgen tool (see 
 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
 +# the mscgen tool resides. If left empty the tool is assumed to be found in the 
 +# default search path.
 +
 +MSCGEN_PATH            = 
 +
 +# 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 
 +# have no effect if this option is set to NO (the default)
 +
 +HAVE_DOT               = NO
 +
 +# By default doxygen will write a font called FreeSans.ttf to the output 
 +# directory and reference it in all dot files that doxygen generates. This 
 +# font does not include all possible unicode characters however, so when you need 
 +# these (or just want a differently looking font) you can specify the font name 
 +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 +# which can be done by putting it in a standard location or by setting the 
 +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 +# containing the font.
 +
 +DOT_FONTNAME           = FreeSans
 +
 +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 +# The default size is 10pt.
 +
 +DOT_FONTSIZE           = 10
 +
 +# By default doxygen will tell dot to use the output directory to look for the 
 +# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
 +# different font using DOT_FONTNAME you can set the path where dot 
 +# can find it using this tag.
 +
 +DOT_FONTPATH           = 
 +
 +# 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            = NO
 +
 +# 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    = NO
 +
 +# 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           = NO
 +
 +# 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 
 +# relations between templates and their instances.
 +
 +TEMPLATE_RELATIONS     = NO
 +
 +# 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          = NO
 +
 +# 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      = NO
 +
 +# If the CALL_GRAPH and HAVE_DOT options 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 CALLER_GRAPH and HAVE_DOT tags are set to YES then 
 +# doxygen will generate a caller 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 caller 
 +# graphs for selected functions only using the \callergraph command.
 +
 +CALLER_GRAPH           = NO
 +
 +# 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    = NO
 +
 +# 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        = NO
 +
 +# 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 
 +# 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 
 +# \dotfile command).
 +
 +DOTFILE_DIRS           = 
 +
 +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
 +# nodes that will be shown in the graph. If the number of nodes in a graph 
 +# becomes larger than this value, doxygen will truncate the graph, which is 
 +# visualized by representing a node as a red box. Note that doxygen if the 
 +# number of direct children of the root node in a graph is already larger than 
 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 +
 +DOT_GRAPH_MAX_NODES    = 15
 +
 +# 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 the size of a graph can be further restricted by 
 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
 +
 +MAX_DOT_GRAPH_DEPTH    = 2
 +
 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 +# background. This is disabled by default, because dot on Windows does not 
 +# seem to support this out of the box. 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        = YES
 +
 +# 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 
 +# 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 
 +# 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 
 +# used. If set to NO the values of all tags below this one will be ignored.
 +
 +SEARCHENGINE           = NO
 diff --git a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.c b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.c new file mode 100644 index 000000000..f854e1bf7 --- /dev/null +++ b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.c @@ -0,0 +1,217 @@ +/*
 +             LUFA Library
 +     Copyright (C) Dean Camera, 2009.
 +              
 +  dean [at] fourwalledcubicle [dot] com
 +      www.fourwalledcubicle.com
 +*/
 +
 +/*
 +  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 +
 +  Permission to use, copy, modify, and distribute this software
 +  and its documentation for any purpose and without fee is hereby
 +  granted, provided that the above copyright notice appear in all
 +  copies and that both that the copyright notice and this
 +  permission notice and warranty disclaimer appear in supporting
 +  documentation, and that the name of the author not be used in
 +  advertising or publicity pertaining to distribution of the
 +  software without specific, written prior permission.
 +
 +  The author disclaim all warranties with regard to this
 +  software, including all implied warranties of merchantability
 +  and fitness.  In no event shall the author be liable for any
 +  special, indirect or consequential damages or any damages
 +  whatsoever resulting from loss of use, data or profits, whether
 +  in an action of contract, negligence or other tortious action,
 +  arising out of or in connection with the use or performance of
 +  this software.
 +*/
 +
 +/** \file
 + *
 + *  Main source file for the PrinterHost demo. This file contains the main tasks of
 + *  the demo and is responsible for the initial application hardware configuration.
 + */
 + 
 +#include "PrinterHost.h"
 +
 +/** LUFA Printer Class driver interface configuration and state information. This structure is
 + *  passed to all Printer Class driver functions, so that multiple instances of the same class
 + *  within a device can be differentiated from one another.
 + */
 +USB_ClassInfo_PRNT_Host_t Printer_PRNT_Interface =
 +	{
 +		.Config =
 +			{
 +				.DataINPipeNumber       = 1,
 +				.DataOUTPipeNumber      = 2,
 +			},
 +	};
 +
 +/** Main program entry point. This routine configures the hardware required by the application, then
 + *  enters a loop to run the application tasks in sequence.
 + */
 +int main(void)
 +{
 +	SetupHardware();
 +
 +	puts_P(PSTR(ESC_FG_CYAN "Printer Host Demo running.\r\n" ESC_FG_WHITE));
 +
 +	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
 +
 +	for (;;)
 +	{
 +		switch (USB_HostState)
 +		{
 +			case HOST_STATE_Addressed:
 +				LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
 +			
 +				uint16_t ConfigDescriptorSize;
 +				uint8_t  ConfigDescriptorData[512];
 +
 +				if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,
 +				                                  sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)
 +				{
 +					printf("Error Retrieving Configuration Descriptor.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +
 +				if (PRNT_Host_ConfigurePipes(&Printer_PRNT_Interface,
 +				                             ConfigDescriptorSize, ConfigDescriptorData) != PRNT_ENUMERROR_NoError)
 +				{
 +					printf("Attached Device Not a Valid Printer Class Device.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +				
 +				if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful)
 +				{
 +					printf("Error Setting Device Configuration.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +				
 +				if (PRNT_Host_SetBidirectionalMode(&Printer_PRNT_Interface) != HOST_SENDCONTROL_Successful)
 +				{
 +					printf("Error Setting Bidirectional Mode.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +				
 +				printf("Printer Device Enumerated.\r\n");
 +				USB_HostState = HOST_STATE_Configured;
 +				break;
 +			case HOST_STATE_Configured:
 +				LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
 +				
 +				printf("Retrieving Device ID...\r\n");
 +				
 +				char DeviceIDString[300];
 +				if (PRNT_Host_GetDeviceID(&Printer_PRNT_Interface, DeviceIDString,
 +				                          sizeof(DeviceIDString)) != HOST_SENDCONTROL_Successful)
 +				{
 +					printf("Error Getting Device ID.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +				
 +				printf("Device ID: %s.\r\n", DeviceIDString);
 +				
 +				char  TestPageData[]    = "\033%-12345X\033E" "LUFA PCL Test Page" "\033E\033%-12345X";
 +				uint16_t TestPageLength = strlen(TestPageData);
 +			
 +				printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), TestPageLength);
 +
 +				if (PRNT_Host_SendData(&Printer_PRNT_Interface, &TestPageData, TestPageLength) != PIPE_RWSTREAM_NoError)
 +				{
 +					printf("Error Sending Page Data.\r\n");
 +					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +					break;
 +				}
 +
 +				puts_P(PSTR("Test Page Sent.\r\n"));
 +
 +				LEDs_SetAllLEDs(LEDMASK_USB_READY);
 +				USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 +				break;
 +		}
 +	
 +		PRNT_Host_USBTask(&Printer_PRNT_Interface);
 +		USB_USBTask();
 +	}
 +}
 +
 +/** Configures the board hardware and chip peripherals for the demo's functionality. */
 +void SetupHardware(void)
 +{
 +	/* Disable watchdog if enabled by bootloader/fuses */
 +	MCUSR &= ~(1 << WDRF);
 +	wdt_disable();
 +
 +	/* Disable clock division */
 +	clock_prescale_set(clock_div_1);
 +
 +	/* Hardware Initialization */
 +	SerialStream_Init(9600, false);
 +	LEDs_Init();
 +	USB_Init();
 +}
 +
 +/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
 + *  starts the library USB task to begin the enumeration and USB management process.
 + */
 +void EVENT_USB_Host_DeviceAttached(void)
 +{
 +	puts_P(PSTR("Device Attached.\r\n"));
 +	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
 +}
 +
 +/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
 + *  stops the library USB task management process.
 + */
 +void EVENT_USB_Host_DeviceUnattached(void)
 +{
 +	puts_P(PSTR("\r\nDevice Unattached.\r\n"));
 +	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
 +}
 +
 +/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
 + *  enumerated by the host and is now ready to be used by the application.
 + */
 +void EVENT_USB_Host_DeviceEnumerationComplete(void)
 +{
 +	LEDs_SetAllLEDs(LEDMASK_USB_READY);
 +}
 +
 +/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
 +void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
 +{
 +	USB_ShutDown();
 +
 +	printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"
 +	                         " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
 +
 +	LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +	for(;;);
 +}
 +
 +/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
 + *  enumerating an attached USB device.
 + */
 +void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode)
 +{
 +	printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
 +	                         " -- Error Code %d\r\n"
 +	                         " -- Sub Error Code %d\r\n"
 +	                         " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);
 +	
 +	LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 +}
 diff --git a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h new file mode 100644 index 000000000..24e42ebca --- /dev/null +++ b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h @@ -0,0 +1,78 @@ +/*
 +             LUFA Library
 +     Copyright (C) Dean Camera, 2009.
 +              
 +  dean [at] fourwalledcubicle [dot] com
 +      www.fourwalledcubicle.com
 +*/
 +
 +/*
 +  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 +
 +  Permission to use, copy, modify, and distribute this software
 +  and its documentation for any purpose and without fee is hereby
 +  granted, provided that the above copyright notice appear in all
 +  copies and that both that the copyright notice and this
 +  permission notice and warranty disclaimer appear in supporting
 +  documentation, and that the name of the author not be used in
 +  advertising or publicity pertaining to distribution of the
 +  software without specific, written prior permission.
 +
 +  The author disclaim all warranties with regard to this
 +  software, including all implied warranties of merchantability
 +  and fitness.  In no event shall the author be liable for any
 +  special, indirect or consequential damages or any damages
 +  whatsoever resulting from loss of use, data or profits, whether
 +  in an action of contract, negligence or other tortious action,
 +  arising out of or in connection with the use or performance of
 +  this software.
 +*/
 +
 +/** \file
 + *
 + *  Header file for PrinterHost.c.
 + */
 +
 +#ifndef _PRINTER_HOST_H_
 +#define _PRINTER_HOST_H_
 +
 +	/* Includes: */
 +		#include <avr/io.h>
 +		#include <avr/wdt.h>
 +		#include <avr/pgmspace.h>
 +		#include <avr/power.h>
 +		#include <stdio.h>
 +
 +		#include <LUFA/Version.h>
 +		#include <LUFA/Drivers/Misc/TerminalCodes.h>
 +		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 +		#include <LUFA/Drivers/Board/LEDs.h>
 +		#include <LUFA/Drivers/USB/USB.h>
 +		#include <LUFA/Drivers/USB/Class/Printer.h>
 +		
 +	/* Macros: */
 +		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 +		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 +
 +		/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
 +		#define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)
 +
 +		/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
 +		#define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)
 +
 +		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 +		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 +		
 +		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 +		#define LEDMASK_USB_BUSY         (LEDS_LED2)
 +
 +	/* Function Prototypes: */
 +		void SetupHardware(void);
 +	
 +		void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
 +		void EVENT_USB_Host_DeviceAttached(void);
 +		void EVENT_USB_Host_DeviceUnattached(void);
 +		void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);
 +		void EVENT_USB_Host_DeviceEnumerationComplete(void);
 +		
 +#endif
 diff --git a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.txt b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.txt new file mode 100644 index 000000000..484241df2 --- /dev/null +++ b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.txt @@ -0,0 +1,63 @@ +/** \file
 + *
 + *  This file contains special DoxyGen information for the generation of the main page and other special
 + *  documentation pages. It is not a project source file.
 + */
 + 
 +/** \mainpage Printer Host Demo
 + *
 + *  \section SSec_Compat Demo Compatibility:
 + *
 + *  The following list indicates what microcontrollers are compatible with this demo.
 + *
 + *  - Series 7 USB AVRs
 + *
 + *  \section SSec_Info USB Information:
 + *
 + *  The following table gives a rundown of the USB utilization of this demo.
 + *
 + *  <table>
 + *   <tr>
 + *    <td><b>USB Mode:</b></td>
 + *    <td>Host</td>
 + *   </tr>
 + *   <tr>
 + *    <td><b>USB Class:</b></td>
 + *    <td>Printer Device</td>
 + *   </tr>
 + *   <tr> 
 + *    <td><b>USB Subclass:</b></td>
 + *    <td>Bidirectional Protocol</td>
 + *   </tr>
 + *   <tr>
 + *    <td><b>Relevant Standards:</b></td>
 + *    <td>USBIF Printer Class Specification, PCL Language Specification</td>
 + *   </tr>
 + *   <tr>
 + *    <td><b>Usable Speeds:</b></td>
 + *    <td>Low Speed Mode, Full Speed Mode</td>
 + *   </tr>
 + *  </table>
 + *
 + *  \section SSec_Description Project Description: 
 + *
 + *  Printer host demonstration application. This gives a simple reference
 + *  application for implementing a USB Printer host, for USB printers using
 + *  the bidirectional data encapsulation protocol and PCL language.
 + *  
 + *  Upon connection of a compatible printer, the printer's device ID is sent
 + *  to the AVR's serial port, and a simple test page is printed using the PCL
 + *  printer language.
 + *  
 + *  \section SSec_Options Project Options
 + *
 + *  The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
 + *
 + *  <table>
 + *   <tr>
 + *    <td>
 + *     None
 + *    </td>
 + *   </tr>
 + *  </table>
 + */
\ No newline at end of file diff --git a/Demos/Host/ClassDriver/PrinterHost/makefile b/Demos/Host/ClassDriver/PrinterHost/makefile new file mode 100644 index 000000000..f0cacffad --- /dev/null +++ b/Demos/Host/ClassDriver/PrinterHost/makefile @@ -0,0 +1,735 @@ +# Hey Emacs, this is a -*- makefile -*-
 +#----------------------------------------------------------------------------
 +# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
 +#  >> Modified for use with the LUFA project. <<
 +#
 +# Released to the Public Domain
 +#
 +# Additional material for this makefile was written by:
 +# Peter Fleury
 +# Tim Henigan
 +# Colin O'Flynn
 +# Reiner Patommel
 +# Markus Pfaff
 +# Sander Pool
 +# Frederik Rouleau
 +# Carlos Lamas
 +# Dean Camera
 +# Opendous Inc.
 +# Denver Gingerich
 +#
 +#----------------------------------------------------------------------------
 +# On command line:
 +#
 +# make all = Make software.
 +#
 +# make clean = Clean out built project files.
 +#
 +# make coff = Convert ELF to AVR COFF.
 +#
 +# make extcoff = Convert ELF to AVR Extended COFF.
 +#
 +# make program = Download the hex file to the device, using avrdude.
 +#                Please customize the avrdude settings below first!
 +#
 +# make dfu = Download the hex file to the device, using dfu-programmer (must
 +#            have dfu-programmer installed).
 +#
 +# make flip = Download the hex file to the device, using Atmel FLIP (must
 +#             have Atmel FLIP installed).
 +#
 +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
 +#               (must have dfu-programmer installed).
 +#
 +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
 +#                (must have Atmel FLIP installed).
 +#
 +# make doxygen = Generate DoxyGen documentation for the project (must have
 +#                DoxyGen installed)
 +#
 +# make debug = Start either simulavr or avarice as specified for debugging, 
 +#              with avr-gdb or avr-insight as the front end for debugging.
 +#
 +# make filename.s = Just compile filename.c into the assembler code only.
 +#
 +# make filename.i = Create a preprocessed source file for use in submitting
 +#                   bug reports to the GCC project.
 +#
 +# To rebuild project do "make clean" then "make all".
 +#----------------------------------------------------------------------------
 +
 +
 +# MCU name
 +MCU = at90usb1287
 +
 +
 +# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 +# LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 +# "Board" inside the application directory.
 +BOARD  = USBKEY
 +
 +
 +# Processor frequency.
 +#     This will define a symbol, F_CPU, in all source code files equal to the 
 +#     processor frequency in Hz. You can then use this symbol in your source code to 
 +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
 +#     automatically to create a 32-bit value in your source code.
 +#
 +#     This will be an integer division of F_CLOCK below, as it is sourced by
 +#     F_CLOCK after it has run through any CPU prescalers. Note that this value
 +#     does not *change* the processor frequency - it should merely be updated to
 +#     reflect the processor speed set externally so that the code can use accurate
 +#     software delays.
 +F_CPU = 8000000
 +
 +
 +# Input clock frequency.
 +#     This will define a symbol, F_CLOCK, in all source code files equal to the 
 +#     input clock frequency (before any prescaling is performed) in Hz. This value may
 +#     differ from F_CPU if prescaling is used on the latter, and is required as the
 +#     raw input clock is fed directly to the PLL sections of the AVR for high speed
 +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
 +#     at the end, this will be done automatically to create a 32-bit value in your
 +#     source code.
 +#
 +#     If no clock division is performed on the input clock inside the AVR (via the
 +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
 +F_CLOCK = $(F_CPU)
 +
 +
 +# Output format. (can be srec, ihex, binary)
 +FORMAT = ihex
 +
 +
 +# Target file name (without extension).
 +TARGET = PrinterHost
 +
 +
 +# Object files directory
 +#     To put object files in current directory, use a dot (.), do NOT make
 +#     this an empty or blank macro!
 +OBJDIR = .
 +
 +
 +# Path to the LUFA library
 +LUFA_PATH = ../../../..
 +
 +
 +# LUFA library compile-time options
 +LUFA_OPTS += -D USB_HOST_ONLY
 +LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 +
 +
 +# List C source files here. (C dependencies are automatically generated.)
 +SRC = $(TARGET).c                                                 \
 +	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 +	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
 + 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c  \
 +	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/Printer.c          \
 +	  
 +
 +# List C++ source files here. (C dependencies are automatically generated.)
 +CPPSRC = 
 +
 +
 +# List Assembler source files here.
 +#     Make them always end in a capital .S.  Files ending in a lowercase .s
 +#     will not be considered source files but generated files (assembler
 +#     output from the compiler), and will be deleted upon "make clean"!
 +#     Even though the DOS/Win* filesystem matches both .s and .S the same,
 +#     it will preserve the spelling of the filenames, and gcc itself does
 +#     care about how the name is spelled on its command-line.
 +ASRC =
 +
 +
 +# Optimization level, can be [0, 1, 2, 3, s]. 
 +#     0 = turn off optimization. s = optimize for size.
 +#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
 +OPT = s
 +
 +
 +# Debugging format.
 +#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
 +#     AVR Studio 4.10 requires dwarf-2.
 +#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
 +DEBUG = dwarf-2
 +
 +
 +# List any extra directories to look for include files here.
 +#     Each directory must be seperated by a space.
 +#     Use forward slashes for directory separators.
 +#     For a directory that has spaces, enclose it in quotes.
 +EXTRAINCDIRS = $(LUFA_PATH)/
 +
 +
 +# Compiler flag to set the C Standard level.
 +#     c89   = "ANSI" C
 +#     gnu89 = c89 plus GCC extensions
 +#     c99   = ISO C99 standard (not yet fully implemented)
 +#     gnu99 = c99 plus GCC extensions
 +CSTANDARD = -std=gnu99
 +
 +
 +# Place -D or -U options here for C sources
 +CDEFS  = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD) $(LUFA_OPTS)
 +
 +
 +# Place -D or -U options here for ASM sources
 +ADEFS = -DF_CPU=$(F_CPU)
 +
 +
 +# Place -D or -U options here for C++ sources
 +CPPDEFS = -DF_CPU=$(F_CPU)UL
 +#CPPDEFS += -D__STDC_LIMIT_MACROS
 +#CPPDEFS += -D__STDC_CONSTANT_MACROS
 +
 +
 +
 +#---------------- Compiler Options C ----------------
 +#  -g*:          generate debugging information
 +#  -O*:          optimization level
 +#  -f...:        tuning, see GCC manual and avr-libc documentation
 +#  -Wall...:     warning level
 +#  -Wa,...:      tell GCC to pass this to the assembler.
 +#    -adhlns...: create assembler listing
 +CFLAGS = -g$(DEBUG)
 +CFLAGS += $(CDEFS)
 +CFLAGS += -O$(OPT)
 +CFLAGS += -funsigned-char
 +CFLAGS += -funsigned-bitfields
 +CFLAGS += -ffunction-sections
 +CFLAGS += -fno-inline-small-functions
 +CFLAGS += -fpack-struct
 +CFLAGS += -fshort-enums
 +CFLAGS += -Wall
 +CFLAGS += -Wstrict-prototypes
 +CFLAGS += -Wundef
 +#CFLAGS += -fno-unit-at-a-time
 +#CFLAGS += -Wunreachable-code
 +#CFLAGS += -Wsign-compare
 +CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
 +CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
 +CFLAGS += $(CSTANDARD)
 +
 +
 +#---------------- Compiler Options C++ ----------------
 +#  -g*:          generate debugging information
 +#  -O*:          optimization level
 +#  -f...:        tuning, see GCC manual and avr-libc documentation
 +#  -Wall...:     warning level
 +#  -Wa,...:      tell GCC to pass this to the assembler.
 +#    -adhlns...: create assembler listing
 +CPPFLAGS = -g$(DEBUG)
 +CPPFLAGS += $(CPPDEFS)
 +CPPFLAGS += -O$(OPT)
 +CPPFLAGS += -funsigned-char
 +CPPFLAGS += -funsigned-bitfields
 +CPPFLAGS += -fpack-struct
 +CPPFLAGS += -fshort-enums
 +CPPFLAGS += -fno-exceptions
 +CPPFLAGS += -Wall
 +CFLAGS += -Wundef
 +#CPPFLAGS += -mshort-calls
 +#CPPFLAGS += -fno-unit-at-a-time
 +#CPPFLAGS += -Wstrict-prototypes
 +#CPPFLAGS += -Wunreachable-code
 +#CPPFLAGS += -Wsign-compare
 +CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
 +CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
 +#CPPFLAGS += $(CSTANDARD)
 +
 +
 +#---------------- Assembler Options ----------------
 +#  -Wa,...:   tell GCC to pass this to the assembler.
 +#  -adhlns:   create listing
 +#  -gstabs:   have the assembler create line number information; note that
 +#             for use in COFF files, additional information about filenames
 +#             and function names needs to be present in the assembler source
 +#             files -- see avr-libc docs [FIXME: not yet described there]
 +#  -listing-cont-lines: Sets the maximum number of continuation lines of hex 
 +#       dump that will be displayed for a given single line of source input.
 +ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
 +
 +
 +#---------------- Library Options ----------------
 +# Minimalistic printf version
 +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
 +
 +# Floating point printf version (requires MATH_LIB = -lm below)
 +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
 +
 +# If this is left blank, then it will use the Standard printf version.
 +PRINTF_LIB = 
 +#PRINTF_LIB = $(PRINTF_LIB_MIN)
 +#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
 +
 +
 +# Minimalistic scanf version
 +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
 +
 +# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
 +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
 +
 +# If this is left blank, then it will use the Standard scanf version.
 +SCANF_LIB = 
 +#SCANF_LIB = $(SCANF_LIB_MIN)
 +#SCANF_LIB = $(SCANF_LIB_FLOAT)
 +
 +
 +MATH_LIB = -lm
 +
 +
 +# List any extra directories to look for libraries here.
 +#     Each directory must be seperated by a space.
 +#     Use forward slashes for directory separators.
 +#     For a directory that has spaces, enclose it in quotes.
 +EXTRALIBDIRS = 
 +
 +
 +
 +#---------------- External Memory Options ----------------
 +
 +# 64 KB of external RAM, starting after internal RAM (ATmega128!),
 +# used for variables (.data/.bss) and heap (malloc()).
 +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
 +
 +# 64 KB of external RAM, starting after internal RAM (ATmega128!),
 +# only used for heap (malloc()).
 +#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
 +
 +EXTMEMOPTS =
 +
 +
 +
 +#---------------- Linker Options ----------------
 +#  -Wl,...:     tell GCC to pass this to linker.
 +#    -Map:      create map file
 +#    --cref:    add cross reference to  map file
 +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
 +LDFLAGS += -Wl,--relax 
 +LDFLAGS += -Wl,--gc-sections
 +LDFLAGS += $(EXTMEMOPTS)
 +LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
 +LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
 +#LDFLAGS += -T linker_script.x
 +
 +
 +
 +#---------------- Programming Options (avrdude) ----------------
 +
 +# Programming hardware: alf avr910 avrisp bascom bsd 
 +# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
 +#
 +# Type: avrdude -c ?
 +# to get a full listing.
 +#
 +AVRDUDE_PROGRAMMER = jtagmkII
 +
 +# com1 = serial port. Use lpt1 to connect to parallel port.
 +AVRDUDE_PORT = usb
 +
 +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
 +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 +
 +
 +# Uncomment the following if you want avrdude's erase cycle counter.
 +# Note that this counter needs to be initialized first using -Yn,
 +# see avrdude manual.
 +#AVRDUDE_ERASE_COUNTER = -y
 +
 +# Uncomment the following if you do /not/ wish a verification to be
 +# performed after programming the device.
 +#AVRDUDE_NO_VERIFY = -V
 +
 +# Increase verbosity level.  Please use this when submitting bug
 +# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> 
 +# to submit bug reports.
 +#AVRDUDE_VERBOSE = -v -v
 +
 +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
 +AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
 +AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
 +AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
 +
 +
 +
 +#---------------- Debugging Options ----------------
 +
 +# For simulavr only - target MCU frequency.
 +DEBUG_MFREQ = $(F_CPU)
 +
 +# Set the DEBUG_UI to either gdb or insight.
 +# DEBUG_UI = gdb
 +DEBUG_UI = insight
 +
 +# Set the debugging back-end to either avarice, simulavr.
 +DEBUG_BACKEND = avarice
 +#DEBUG_BACKEND = simulavr
 +
 +# GDB Init Filename.
 +GDBINIT_FILE = __avr_gdbinit
 +
 +# When using avarice settings for the JTAG
 +JTAG_DEV = /dev/com1
 +
 +# Debugging port used to communicate between GDB / avarice / simulavr.
 +DEBUG_PORT = 4242
 +
 +# Debugging host used to communicate between GDB / avarice / simulavr, normally
 +#     just set to localhost unless doing some sort of crazy debugging when 
 +#     avarice is running on a different computer.
 +DEBUG_HOST = localhost
 +
 +
 +
 +#============================================================================
 +
 +
 +# Define programs and commands.
 +SHELL = sh
 +CC = avr-gcc
 +OBJCOPY = avr-objcopy
 +OBJDUMP = avr-objdump
 +SIZE = avr-size
 +AR = avr-ar rcs
 +NM = avr-nm
 +AVRDUDE = avrdude
 +REMOVE = rm -f
 +REMOVEDIR = rm -rf
 +COPY = cp
 +WINSHELL = cmd
 +
 +# Define Messages
 +# English
 +MSG_ERRORS_NONE = Errors: none
 +MSG_BEGIN = -------- begin --------
 +MSG_END = --------  end  --------
 +MSG_SIZE_BEFORE = Size before: 
 +MSG_SIZE_AFTER = Size after:
 +MSG_COFF = Converting to AVR COFF:
 +MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
 +MSG_FLASH = Creating load file for Flash:
 +MSG_EEPROM = Creating load file for EEPROM:
 +MSG_EXTENDED_LISTING = Creating Extended Listing:
 +MSG_SYMBOL_TABLE = Creating Symbol Table:
 +MSG_LINKING = Linking:
 +MSG_COMPILING = Compiling C:
 +MSG_COMPILING_CPP = Compiling C++:
 +MSG_ASSEMBLING = Assembling:
 +MSG_CLEANING = Cleaning project:
 +MSG_CREATING_LIBRARY = Creating library:
 +
 +
 +
 +
 +# Define all object files.
 +OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) 
 +
 +# Define all listing files.
 +LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) 
 +
 +
 +# Compiler flags to generate dependency files.
 +GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
 +
 +
 +# Combine all necessary flags and optional flags.
 +# Add target processor to flags.
 +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
 +ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
 +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
 +
 +
 +
 +
 +
 +# Default target.
 +all: begin gccversion sizebefore build checkinvalidevents showliboptions showtarget sizeafter end
 +
 +# Change the build target to build a HEX file or a library.
 +build: elf hex eep lss sym
 +#build: lib
 +
 +
 +elf: $(TARGET).elf
 +hex: $(TARGET).hex
 +eep: $(TARGET).eep
 +lss: $(TARGET).lss
 +sym: $(TARGET).sym
 +LIBNAME=lib$(TARGET).a
 +lib: $(LIBNAME)
 +
 +
 +
 +# Eye candy.
 +# AVR Studio 3.x does not check make's exit code but relies on
 +# the following magic strings to be generated by the compile job.
 +begin:
 +	@echo
 +	@echo $(MSG_BEGIN)
 +
 +end:
 +	@echo $(MSG_END)
 +	@echo
 +
 +
 +# Display size of file.
 +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
 +ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
 +MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
 +FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
 +
 +sizebefore:
 +	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
 +	2>/dev/null; echo; fi
 +
 +sizeafter:
 +	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
 +	2>/dev/null; echo; fi
 +
 +$(LUFA_PATH)/LUFA/LUFA_Events.lst:
 +	@make -C $(LUFA_PATH)/LUFA/ LUFA_Events.lst
 +
 +checkinvalidevents: $(LUFA_PATH)/LUFA/LUFA_Events.lst
 +	@echo
 +	@echo Checking for invalid events...
 +	@$(shell) avr-nm $(OBJ) | sed -n -e 's/^.*EVENT_/EVENT_/p' | \
 +	                 grep -F -v --file=$(LUFA_PATH)/LUFA/LUFA_Events.lst > InvalidEvents.tmp || true
 +	@sed -n -e 's/^/  WARNING - INVALID EVENT NAME: /p' InvalidEvents.tmp
 +	@if test -s InvalidEvents.tmp; then exit 1; fi
 +	
 +showliboptions:
 +	@echo
 +	@echo ---- Compile Time Library Options ----
 +	@for i in $(LUFA_OPTS:-D%=%); do \
 +		echo $$i; \
 +	done
 +	@echo --------------------------------------
 +
 +showtarget:
 +	@echo
 +	@echo --------- Target Information ---------
 +	@echo AVR Model: $(MCU)
 +	@echo Board:     $(BOARD)
 +	@echo Clock:     $(F_CPU)Hz CPU, $(F_CLOCK)Hz Master
 +	@echo --------------------------------------
 +	
 +
 +# Display compiler version information.
 +gccversion : 
 +	@$(CC) --version
 +
 +
 +# Program the device.  
 +program: $(TARGET).hex $(TARGET).eep
 +	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 +
 +flip: $(TARGET).hex
 +	batchisp -hardware usb -device $(MCU) -operation erase f
 +	batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program
 +	batchisp -hardware usb -device $(MCU) -operation start reset 0
 +
 +dfu: $(TARGET).hex
 +	dfu-programmer $(MCU) erase
 +	dfu-programmer $(MCU) flash --debug 1 $(TARGET).hex
 +	dfu-programmer $(MCU) reset
 +
 +flip-ee: $(TARGET).hex $(TARGET).eep
 +	$(COPY) $(TARGET).eep $(TARGET)eep.hex
 +	batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase
 +	batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
 +	batchisp -hardware usb -device $(MCU) -operation start reset 0
 +	$(REMOVE) $(TARGET)eep.hex
 +
 +dfu-ee: $(TARGET).hex $(TARGET).eep
 +	dfu-programmer $(MCU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep
 +	dfu-programmer $(MCU) reset
 +
 +
 +# Generate avr-gdb config/init file which does the following:
 +#     define the reset signal, load the target file, connect to target, and set 
 +#     a breakpoint at main().
 +gdb-config: 
 +	@$(REMOVE) $(GDBINIT_FILE)
 +	@echo define reset >> $(GDBINIT_FILE)
 +	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
 +	@echo end >> $(GDBINIT_FILE)
 +	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
 +	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
 +ifeq ($(DEBUG_BACKEND),simulavr)
 +	@echo load  >> $(GDBINIT_FILE)
 +endif
 +	@echo break main >> $(GDBINIT_FILE)
 +
 +debug: gdb-config $(TARGET).elf
 +ifeq ($(DEBUG_BACKEND), avarice)
 +	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
 +	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
 +	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
 +	@$(WINSHELL) /c pause
 +
 +else
 +	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
 +	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
 +endif
 +	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
 +
 +
 +
 +
 +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
 +COFFCONVERT = $(OBJCOPY) --debugging
 +COFFCONVERT += --change-section-address .data-0x800000
 +COFFCONVERT += --change-section-address .bss-0x800000
 +COFFCONVERT += --change-section-address .noinit-0x800000
 +COFFCONVERT += --change-section-address .eeprom-0x810000
 +
 +
 +
 +coff: $(TARGET).elf
 +	@echo
 +	@echo $(MSG_COFF) $(TARGET).cof
 +	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
 +
 +
 +extcoff: $(TARGET).elf
 +	@echo
 +	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
 +	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
 +
 +
 +
 +# Create final output files (.hex, .eep) from ELF output file.
 +%.hex: %.elf
 +	@echo
 +	@echo $(MSG_FLASH) $@
 +	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
 +
 +%.eep: %.elf
 +	@echo
 +	@echo $(MSG_EEPROM) $@
 +	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
 +	--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
 +
 +# Create extended listing file from ELF output file.
 +%.lss: %.elf
 +	@echo
 +	@echo $(MSG_EXTENDED_LISTING) $@
 +	$(OBJDUMP) -h -z -S $< > $@
 +
 +# Create a symbol table from ELF output file.
 +%.sym: %.elf
 +	@echo
 +	@echo $(MSG_SYMBOL_TABLE) $@
 +	$(NM) -n $< > $@
 +
 +
 +
 +# Create library from object files.
 +.SECONDARY : $(TARGET).a
 +.PRECIOUS : $(OBJ)
 +%.a: $(OBJ)
 +	@echo
 +	@echo $(MSG_CREATING_LIBRARY) $@
 +	$(AR) $@ $(OBJ)
 +
 +
 +# Link: create ELF output file from object files.
 +.SECONDARY : $(TARGET).elf
 +.PRECIOUS : $(OBJ)
 +%.elf: $(OBJ)
 +	@echo
 +	@echo $(MSG_LINKING) $@
 +	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
 +
 +
 +# Compile: create object files from C source files.
 +$(OBJDIR)/%.o : %.c
 +	@echo
 +	@echo $(MSG_COMPILING) $<
 +	$(CC) -c $(ALL_CFLAGS) $< -o $@ 
 +
 +
 +# Compile: create object files from C++ source files.
 +$(OBJDIR)/%.o : %.cpp
 +	@echo
 +	@echo $(MSG_COMPILING_CPP) $<
 +	$(CC) -c $(ALL_CPPFLAGS) $< -o $@ 
 +
 +
 +# Compile: create assembler files from C source files.
 +%.s : %.c
 +	$(CC) -S $(ALL_CFLAGS) $< -o $@
 +
 +
 +# Compile: create assembler files from C++ source files.
 +%.s : %.cpp
 +	$(CC) -S $(ALL_CPPFLAGS) $< -o $@
 +
 +
 +# Assemble: create object files from assembler source files.
 +$(OBJDIR)/%.o : %.S
 +	@echo
 +	@echo $(MSG_ASSEMBLING) $<
 +	$(CC) -c $(ALL_ASFLAGS) $< -o $@
 +
 +
 +# Create preprocessed source for use in sending a bug report.
 +%.i : %.c
 +	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ 
 +	
 +
 +# Target: clean project.
 +clean: begin clean_list clean_binary end
 +
 +clean_binary:
 +	$(REMOVE) $(TARGET).hex
 +	
 +clean_list:
 +	@echo $(MSG_CLEANING)
 +	$(REMOVE) $(TARGET).eep
 +	$(REMOVE) $(TARGET)eep.hex
 +	$(REMOVE) $(TARGET).cof
 +	$(REMOVE) $(TARGET).elf
 +	$(REMOVE) $(TARGET).map
 +	$(REMOVE) $(TARGET).sym
 +	$(REMOVE) $(TARGET).lss
 +	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
 +	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
 +	$(REMOVE) $(SRC:.c=.s)
 +	$(REMOVE) $(SRC:.c=.d)
 +	$(REMOVE) $(SRC:.c=.i)
 +	$(REMOVE) InvalidEvents.tmp
 +	$(REMOVEDIR) .dep
 +
 +doxygen:
 +	@echo Generating Project Documentation...
 +	@doxygen Doxygen.conf
 +	@echo Documentation Generation Complete.
 +
 +clean_doxygen:
 +	rm -rf Documentation
 +
 +# Create object files directory
 +$(shell mkdir $(OBJDIR) 2>/dev/null)
 +
 +
 +# Include the dependency files.
 +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
 +
 +
 +# Listing of phony targets.
 +.PHONY : all checkinvalidevents showliboptions    \
 +showtarget begin finish end sizebefore sizeafter  \
 +gccversion build elf hex eep lss sym coff extcoff \
 +program dfu flip flip-ee dfu-ee clean debug       \
 +clean_list clean_binary gdb-config doxygen
\ No newline at end of file diff --git a/Demos/Host/ClassDriver/makefile b/Demos/Host/ClassDriver/makefile index d84761f3a..675ddfdc7 100644 --- a/Demos/Host/ClassDriver/makefile +++ b/Demos/Host/ClassDriver/makefile @@ -38,6 +38,9 @@ all:  	make -C MassStorageHost clean  	make -C MassStorageHost all +	make -C PrinterHost clean +	make -C PrinterHost all +  	make -C StillImageHost clean  	make -C StillImageHost all @@ -49,4 +52,5 @@ all:  	make -C MouseHost $@  	make -C MouseHostWithParser $@  	make -C MassStorageHost $@ +	make -C PrinterHost $@  	make -C StillImageHost $@ diff --git a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c index c75b7f910..a9f41ba64 100644 --- a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c +++ b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c @@ -82,7 +82,7 @@ uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize)  	USB_ControlRequest = (USB_Request_Header_t)
  		{
  			bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 -			bRequest:      GET_DEVICE_ID,
 +			bRequest:      REQ_GetDeviceID,
  			wValue:        0,
  			wIndex:        0,
  			wLength:       sizeof(DeviceIDStringLength),
 @@ -129,7 +129,7 @@ uint8_t Printer_GetPortStatus(uint8_t* PortStatus)  	USB_ControlRequest = (USB_Request_Header_t)
  		{
  			bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 -			bRequest:      GET_PORT_STATUS,
 +			bRequest:      REQ_GetPortStatus,
  			wValue:        0,
  			wIndex:        0,
  			wLength:       sizeof(uint8_t),
 @@ -150,7 +150,7 @@ uint8_t Printer_SoftReset(void)  	USB_ControlRequest = (USB_Request_Header_t)
  		{
  			bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
 -			bRequest:      SOFT_RESET,
 +			bRequest:      REQ_SoftReset,
  			wValue:        0,
  			wIndex:        0,
  			wLength:       0,
 diff --git a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h index cb8f04618..c8c1b137b 100644 --- a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h +++ b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h @@ -44,13 +44,13 @@  	/* Macros: */
  		/** Printer class-specific request to retrieve the printer's ID string */
 -		#define GET_DEVICE_ID                0
 +		#define REQ_GetDeviceID              0
  		/** Printer class-specific request to retrieve the printer's virtual port status flags */
 -		#define GET_PORT_STATUS              1
 +		#define REQ_GetPortStatus            1
  		/** Printer class-specific request to soft-reset the device */
 -		#define SOFT_RESET                   2
 +		#define REQ_SoftReset                2
  		/** Pipe number of the Printer data IN pipe */
  		#define PRINTER_DATA_IN_PIPE         1
 diff --git a/LUFA.pnproj b/LUFA.pnproj index ce9db9d95..dab161a72 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ -<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="CDCMouse"><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.c"></File><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.h"></File><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.txt"></File><File path="Demos\Device\ClassDriver\CDCMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDCMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDCMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDCMouse\LUFA CDCMouse.inf"></File><File path="Demos\Device\ClassDriver\CDCMouse\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\Licence.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Projects"><Folder name="AVRISP"><Folder name="Lib"><File path="Projects\AVRISP\Lib\V2Protocol.c"></File><File path="Projects\AVRISP\Lib\V2Protocol.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP\Lib\V2ProtocolParams.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolTarget.c"></File><File path="Projects\AVRISP\Lib\V2ProtocolTarget.h"></File></Folder><File path="Projects\AVRISP\AVRISP.c"></File><File path="Projects\AVRISP\AVRISP.h"></File><File path="Projects\AVRISP\AVRISP.txt"></File><File path="Projects\AVRISP\Descriptors.c"></File><File path="Projects\AVRISP\Descriptors.h"></File><File path="Projects\AVRISP\Doxygen.conf"></File><File path="Projects\AVRISP\makefile"></File></Folder><Folder name="Benito"><Folder name="Board"><File path="Projects\Benito\Board\LEDs.h"></File></Folder><Folder name="Lib"><File path="Projects\Benito\Lib\RingBuff.c"></File><File path="Projects\Benito\Lib\RingBuff.h"></File></Folder><File path="Projects\Benito\Benito.c"></File><File path="Projects\Benito\Benito.h"></File><File path="Projects\Benito\Descriptors.c"></File><File path="Projects\Benito\Descriptors.h"></File><File path="Projects\Benito\Doxygen.conf"></File><File path="Projects\Benito\makefile"></File><File path="Projects\Benito\Benito.txt"></File><File path="Projects\Benito\Benito Programmer.inf"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\RingBuff.c"></File><File path="Projects\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Projects\USBtoSerial\Descriptors.c"></File><File path="Projects\USBtoSerial\Descriptors.h"></File><File path="Projects\USBtoSerial\Doxygen.conf"></File><File path="Projects\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Projects\USBtoSerial\makefile"></File><File path="Projects\USBtoSerial\USBtoSerial.c"></File><File path="Projects\USBtoSerial\USBtoSerial.h"></File><File path="Projects\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><Folder name="Incomplete"><Folder name="MIDI"><Folder name="JavaHost"><File path="Bootloaders\Incomplete\MIDI\JavaHost\BIN2BOOT.java"></File><File path="Bootloaders\Incomplete\MIDI\JavaHost\MIDIMessageReceiver.java"></File></Folder><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.c"></File><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.h"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.c"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.h"></File><File path="Bootloaders\Incomplete\MIDI\Doxygen.conf"></File><File path="Bootloaders\Incomplete\MIDI\makefile"></File><File path="Bootloaders\Incomplete\MIDI\MIDI.c"></File></Folder></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file +<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="CDCMouse"><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.c"></File><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.h"></File><File path="Demos\Device\ClassDriver\CDCMouse\CDCMouse.txt"></File><File path="Demos\Device\ClassDriver\CDCMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDCMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDCMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDCMouse\LUFA CDCMouse.inf"></File><File path="Demos\Device\ClassDriver\CDCMouse\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="PrinterHost"><File path="Demos\Host\ClassDriver\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\PrinterHost\makefile"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.c"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Common\Printer.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Printer.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\Licence.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Projects"><Folder name="AVRISP"><Folder name="Lib"><File path="Projects\AVRISP\Lib\V2Protocol.c"></File><File path="Projects\AVRISP\Lib\V2Protocol.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP\Lib\V2ProtocolParams.h"></File><File path="Projects\AVRISP\Lib\V2ProtocolTarget.c"></File><File path="Projects\AVRISP\Lib\V2ProtocolTarget.h"></File></Folder><File path="Projects\AVRISP\AVRISP.c"></File><File path="Projects\AVRISP\AVRISP.h"></File><File path="Projects\AVRISP\AVRISP.txt"></File><File path="Projects\AVRISP\Descriptors.c"></File><File path="Projects\AVRISP\Descriptors.h"></File><File path="Projects\AVRISP\Doxygen.conf"></File><File path="Projects\AVRISP\makefile"></File></Folder><Folder name="Benito"><Folder name="Board"><File path="Projects\Benito\Board\LEDs.h"></File></Folder><Folder name="Lib"><File path="Projects\Benito\Lib\RingBuff.c"></File><File path="Projects\Benito\Lib\RingBuff.h"></File></Folder><File path="Projects\Benito\Benito.c"></File><File path="Projects\Benito\Benito.h"></File><File path="Projects\Benito\Descriptors.c"></File><File path="Projects\Benito\Descriptors.h"></File><File path="Projects\Benito\Doxygen.conf"></File><File path="Projects\Benito\makefile"></File><File path="Projects\Benito\Benito.txt"></File><File path="Projects\Benito\Benito Programmer.inf"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\RingBuff.c"></File><File path="Projects\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Projects\USBtoSerial\Descriptors.c"></File><File path="Projects\USBtoSerial\Descriptors.h"></File><File path="Projects\USBtoSerial\Doxygen.conf"></File><File path="Projects\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Projects\USBtoSerial\makefile"></File><File path="Projects\USBtoSerial\USBtoSerial.c"></File><File path="Projects\USBtoSerial\USBtoSerial.h"></File><File path="Projects\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><Folder name="Incomplete"><Folder name="MIDI"><Folder name="JavaHost"><File path="Bootloaders\Incomplete\MIDI\JavaHost\BIN2BOOT.java"></File><File path="Bootloaders\Incomplete\MIDI\JavaHost\MIDIMessageReceiver.java"></File></Folder><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.c"></File><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.h"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.c"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.h"></File><File path="Bootloaders\Incomplete\MIDI\Doxygen.conf"></File><File path="Bootloaders\Incomplete\MIDI\makefile"></File><File path="Bootloaders\Incomplete\MIDI\MIDI.c"></File></Folder></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file diff --git a/LUFA/Drivers/USB/Class/Host/CDC.h b/LUFA/Drivers/USB/Class/Host/CDC.h index 51b00da3b..4132d882c 100644 --- a/LUFA/Drivers/USB/Class/Host/CDC.h +++ b/LUFA/Drivers/USB/Class/Host/CDC.h @@ -72,7 +72,7 @@  				struct
  				{
  					bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid
 -					                *   after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the
 +					                *   after \ref CDC_Host_ConfigurePipes() is called and the Host state machine is in the
  					                *   Configured state
  					                */
  					uint8_t ControlInterfaceNumber; /**< Interface index of the CDC-ACM control interface within the attached device */
 diff --git a/LUFA/Drivers/USB/Class/Host/HIDParser.c b/LUFA/Drivers/USB/Class/Host/HIDParser.c index 3090774ec..81062b1c8 100644 --- a/LUFA/Drivers/USB/Class/Host/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Host/HIDParser.c @@ -39,8 +39,8 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID  	HID_StateTable_t*     CurrStateTable          = &StateTable[0];
  	HID_CollectionPath_t* CurrCollectionPath      = NULL;
  	HID_ReportSizeInfo_t* CurrReportIDInfo        = &ParserData->ReportIDSizes[0];			
 -	uint16_t              UsageStack[HID_USAGE_STACK_DEPTH];
 -	uint8_t               UsageStackSize          = 0;
 +	uint16_t              UsageList[HID_USAGE_STACK_DEPTH];
 +	uint8_t               UsageListSize          = 0;
  	memset(ParserData,       0x00, sizeof(HID_ReportInfo_t));
  	memset(CurrStateTable,   0x00, sizeof(HID_StateTable_t));
 @@ -138,23 +138,23 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID  					if (CurrReportIDInfo == NULL)
  					{
 -						if (ParserData->TotalDeviceReports++ > HID_MAX_REPORT_IDS)
 +						if (ParserData->TotalDeviceReports == HID_MAX_REPORT_IDS)
  						  return HID_PARSE_InsufficientReportIDItems;
 -						CurrReportIDInfo = &ParserData->ReportIDSizes[ParserData->TotalDeviceReports - 1];
 +						CurrReportIDInfo = &ParserData->ReportIDSizes[ParserData->TotalDeviceReports++];
  						memset(CurrReportIDInfo, 0x00, sizeof(HID_ReportSizeInfo_t));
  					}
  				}
  				ParserData->UsingReportIDs = true;				
 -				CurrReportIDInfo->ReportID     = CurrStateTable->ReportID;
 +				CurrReportIDInfo->ReportID = CurrStateTable->ReportID;
  				break;
  			case (TYPE_LOCAL | TAG_LOCAL_USAGE):
 -				if (UsageStackSize == HID_USAGE_STACK_DEPTH)
 -				  return HID_PARSE_UsageStackOverflow;
 +				if (UsageListSize == HID_USAGE_STACK_DEPTH)
 +				  return HID_PARSE_UsageListOverflow;
 -				UsageStack[UsageStackSize++] = ReportItemData;
 +				UsageList[UsageListSize++] = ReportItemData;
  				break;
  			case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
  				CurrStateTable->Attributes.Usage.MinMax.Minimum = ReportItemData;
 @@ -187,14 +187,14 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID  				CurrCollectionPath->Type = ReportItemData;
  				CurrCollectionPath->Usage.Page = CurrStateTable->Attributes.Usage.Page;
 -				if (UsageStackSize)
 +				if (UsageListSize)
  				{
 -					CurrCollectionPath->Usage.Usage = UsageStack[0];
 +					CurrCollectionPath->Usage.Usage = UsageList[0];
 -					for (uint8_t i = 0; i < UsageStackSize; i++)
 -					  UsageStack[i] = UsageStack[i + 1];
 +					for (uint8_t i = 0; i < UsageListSize; i++)
 +					  UsageList[i] = UsageList[i + 1];
 -					UsageStackSize--;
 +					UsageListSize--;
  				}
  				break;
 @@ -219,28 +219,24 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID  					NewReportItem.CollectionPath = CurrCollectionPath;
  					NewReportItem.ReportID       = CurrStateTable->ReportID;
 -					if (UsageStackSize)
 +					if (UsageListSize)
  					{
 -						NewReportItem.Attributes.Usage.Usage = UsageStack[0];
 +						NewReportItem.Attributes.Usage.Usage = UsageList[0];
 -						for (uint8_t i = 0; i < UsageStackSize; i++)
 -						  UsageStack[i] = UsageStack[i + 1];
 +						for (uint8_t i = 0; i < UsageListSize; i++)
 +						  UsageList[i] = UsageList[i + 1];
 -						UsageStackSize--;
 +						UsageListSize--;
  					}
 -					switch (HIDReportItem & TAG_MASK)
 -					{
 -						case TAG_MAIN_INPUT:
 -							NewReportItem.ItemType  = REPORT_ITEM_TYPE_In;
 -							break;
 -						case TAG_MAIN_OUTPUT:
 -							NewReportItem.ItemType  = REPORT_ITEM_TYPE_Out;
 -							break;
 -						case TAG_MAIN_FEATURE:
 -							NewReportItem.ItemType  = REPORT_ITEM_TYPE_Feature;						
 -							break;
 -					}
 +					uint8_t ItemTag = (HIDReportItem & TAG_MASK);
 +
 +					if (ItemTag == TAG_MAIN_INPUT)
 +					  NewReportItem.ItemType = REPORT_ITEM_TYPE_In;
 +					else if (ItemTag == TAG_MAIN_OUTPUT)
 +					  NewReportItem.ItemType = REPORT_ITEM_TYPE_Out;
 +					else
 +					  NewReportItem.ItemType = REPORT_ITEM_TYPE_Feature;
  					NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType];
 @@ -268,7 +264,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID  		{
  			CurrStateTable->Attributes.Usage.MinMax.Minimum = 0;
  			CurrStateTable->Attributes.Usage.MinMax.Maximum = 0;
 -			UsageStackSize = 0;
 +			UsageListSize = 0;
  		}
  	}
 diff --git a/LUFA/Drivers/USB/Class/Host/HIDParser.h b/LUFA/Drivers/USB/Class/Host/HIDParser.h index 7a1563a3a..751e40e0e 100644 --- a/LUFA/Drivers/USB/Class/Host/HIDParser.h +++ b/LUFA/Drivers/USB/Class/Host/HIDParser.h @@ -142,7 +142,7 @@  				HID_PARSE_InsufficientReportItems     = 3, /**< More than \ref HID_MAX_REPORTITEMS report items in the report. */
  				HID_PARSE_UnexpectedEndCollection     = 4, /**< An END COLLECTION item found without matching COLLECTION item. */
  				HID_PARSE_InsufficientCollectionPaths = 5, /**< More than \ref HID_MAX_COLLECTIONS collections in the report. */
 -				HID_PARSE_UsageStackOverflow          = 6, /**< More than \ref HID_USAGE_STACK_DEPTH usages listed in a row. */
 +				HID_PARSE_UsageListOverflow           = 6, /**< More than \ref HID_USAGE_STACK_DEPTH usages listed in a row. */
  				HID_PARSE_InsufficientReportIDItems   = 7, /**< More than \ref HID_MAX_REPORT_IDS report IDs in the device. */
  				HID_PARSE_NoUnfilteredReportItems     = 8, /**< All report items from the device were filtered by the filtering callback routine. */
  			};
 diff --git a/LUFA/Drivers/USB/Class/Host/MIDI.h b/LUFA/Drivers/USB/Class/Host/MIDI.h index b86699e2a..35671f902 100644 --- a/LUFA/Drivers/USB/Class/Host/MIDI.h +++ b/LUFA/Drivers/USB/Class/Host/MIDI.h @@ -71,7 +71,7 @@  				struct
  				{
  					bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid
 -					                *   after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the
 +					                *   after \ref MIDI_Host_ConfigurePipes() is called and the Host state machine is in the
  					                *   Configured state
  					                */
 diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.h b/LUFA/Drivers/USB/Class/Host/MassStorage.h index 192e478dc..a651a88f8 100644 --- a/LUFA/Drivers/USB/Class/Host/MassStorage.h +++ b/LUFA/Drivers/USB/Class/Host/MassStorage.h @@ -60,8 +60,8 @@  		/* Type Defines: */
  			/** Class state structure. An instance of this structure should be made within the user application,
 -			 *  and passed to each of the HID class driver functions as the HIDInterfaceInfo parameter. This
 -			 *  stores each HID interface's configuration and state information.
 +			 *  and passed to each of the Mass Storage class driver functions as the MSInterfaceInfo parameter. This
 +			 *  stores each Mass Storage interface's configuration and state information.
  			 */
  			typedef struct
  			{
 @@ -75,10 +75,10 @@  				struct
  				{
  					bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid
 -					                *   after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the
 +					                *   after \ref MS_Host_ConfigurePipes() is called and the Host state machine is in the
  					                *   Configured state
  					                */
 -					uint8_t InterfaceNumber; /**< Interface index of the HID interface within the attached device */
 +					uint8_t InterfaceNumber; /**< Interface index of the Mass Storage interface within the attached device */
  					uint16_t DataINPipeSize; /**< Size in bytes of the MS interface's IN data pipe */
  					uint16_t DataOUTPipeSize;  /**< Size in bytes of the MS interface's OUT data pipe */
 diff --git a/LUFA/Drivers/USB/Class/Host/Printer.c b/LUFA/Drivers/USB/Class/Host/Printer.c new file mode 100644 index 000000000..bc8fba85f --- /dev/null +++ b/LUFA/Drivers/USB/Class/Host/Printer.c @@ -0,0 +1,250 @@ +/*
 +             LUFA Library
 +     Copyright (C) Dean Camera, 2009.
 +              
 +  dean [at] fourwalledcubicle [dot] com
 +      www.fourwalledcubicle.com
 +*/
 +
 +/*
 +  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 +
 +  Permission to use, copy, modify, and distribute this software
 +  and its documentation for any purpose and without fee is hereby
 +  granted, provided that the above copyright notice appear in all
 +  copies and that both that the copyright notice and this
 +  permission notice and warranty disclaimer appear in supporting
 +  documentation, and that the name of the author not be used in
 +  advertising or publicity pertaining to distribution of the
 +  software without specific, written prior permission.
 +
 +  The author disclaim all warranties with regard to this
 +  software, including all implied warranties of merchantability
 +  and fitness.  In no event shall the author be liable for any
 +  special, indirect or consequential damages or any damages
 +  whatsoever resulting from loss of use, data or profits, whether
 +  in an action of contract, negligence or other tortious action,
 +  arising out of or in connection with the use or performance of
 +  this software.
 +*/
 +
 +#include "../../HighLevel/USBMode.h"
 +#if defined(USB_CAN_BE_HOST)
 +
 +#define INCLUDE_FROM_PRINTER_CLASS_HOST_C
 +#include "Printer.h"
 +
 +uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint16_t ConfigDescriptorSize,
 +							     uint8_t* DeviceConfigDescriptor)
 +{
 +	uint8_t FoundEndpoints = 0;
 +	
 +	memset(&PRNTInterfaceInfo->State, 0x00, sizeof(PRNTInterfaceInfo->State));
 +
 +	if (DESCRIPTOR_TYPE(DeviceConfigDescriptor) != DTYPE_Configuration)
 +	  return PRNT_ENUMERROR_InvalidConfigDescriptor;
 +	
 +	if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &DeviceConfigDescriptor,
 +	                              DComp_NextPRNTInterface) != DESCRIPTOR_SEARCH_COMP_Found)
 +	{
 +		return PRNT_ENUMERROR_NoPrinterInterfaceFound;
 +	}
 +
 +	USB_Descriptor_Interface_t* PrinterInterface = DESCRIPTOR_PCAST(DeviceConfigDescriptor, USB_Descriptor_Interface_t);
 +
 +	PRNTInterfaceInfo->State.InterfaceNumber  = PrinterInterface->InterfaceNumber;
 +	PRNTInterfaceInfo->State.AlternateSetting = PrinterInterface->AlternateSetting;
 +	
 +	while (FoundEndpoints != (PRNT_FOUND_DATAPIPE_IN | PRNT_FOUND_DATAPIPE_OUT))
 +	{
 +		if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &DeviceConfigDescriptor,
 +		                              DComp_NextPRNTInterfaceEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
 +		{
 +			return PRNT_ENUMERROR_EndpointsNotFound;
 +		}
 +		
 +		USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(DeviceConfigDescriptor, USB_Descriptor_Endpoint_t);
 +
 +		if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
 +		{
 +			Pipe_ConfigurePipe(PRNTInterfaceInfo->Config.DataINPipeNumber, EP_TYPE_BULK, PIPE_TOKEN_IN,
 +			                   EndpointData->EndpointAddress, EndpointData->EndpointSize,
 +			                   PIPE_BANK_DOUBLE);
 +			PRNTInterfaceInfo->State.DataINPipeSize = EndpointData->EndpointSize;
 +
 +			FoundEndpoints |= PRNT_FOUND_DATAPIPE_IN;
 +		}
 +		else
 +		{
 +			Pipe_ConfigurePipe(PRNTInterfaceInfo->Config.DataOUTPipeNumber, EP_TYPE_BULK, PIPE_TOKEN_OUT,
 +			                   EndpointData->EndpointAddress, EndpointData->EndpointSize,
 +			                   PIPE_BANK_DOUBLE);
 +			PRNTInterfaceInfo->State.DataOUTPipeSize = EndpointData->EndpointSize;
 +
 +			FoundEndpoints |= PRNT_FOUND_DATAPIPE_OUT;
 +		}		
 +	}
 +
 +	PRNTInterfaceInfo->State.IsActive = true;
 +	return PRNT_ENUMERROR_NoError;
 +}
 +
 +static uint8_t DComp_NextPRNTInterface(void* CurrentDescriptor)
 +{
 +	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
 +	{
 +		if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == PRINTER_CLASS)    &&
 +		    (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == PRINTER_SUBCLASS) &&
 +			(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == PRINTER_PROTOCOL))
 +		{
 +			return DESCRIPTOR_SEARCH_Found;
 +		}
 +	}
 +	
 +	return DESCRIPTOR_SEARCH_NotFound;
 +}
 +
 +static uint8_t DComp_NextPRNTInterfaceEndpoint(void* CurrentDescriptor)
 +{
 +	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
 +	{
 +		uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,
 +		                                        USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);
 +
 +		if (EndpointType == EP_TYPE_BULK)
 +		  return DESCRIPTOR_SEARCH_Found;
 +	}
 +	else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
 +	{
 +		return DESCRIPTOR_SEARCH_Fail;
 +	}
 +
 +	return DESCRIPTOR_SEARCH_NotFound;
 +}
 +
 +void PRNT_Host_USBTask(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 +{
 +	
 +}
 +
 +uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 +{
 +	if (PRNTInterfaceInfo->State.AlternateSetting)
 +	{
 +		uint8_t ErrorCode;
 +	
 +		USB_ControlRequest = (USB_Request_Header_t)
 +			{
 +				bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE),
 +				bRequest:      REQ_SetInterface,
 +				wValue:        PRNTInterfaceInfo->State.AlternateSetting,
 +				wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,
 +				wLength:       0,
 +			};
 +		
 +		Pipe_SelectPipe(PIPE_CONTROLPIPE);
 +		
 +		if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
 +		  return ErrorCode;
 +	}
 +	
 +	return HOST_SENDCONTROL_Successful;
 +}
 +
 +uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint8_t* const PortStatus)
 +{
 +	USB_ControlRequest = (USB_Request_Header_t)
 +		{
 +			bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 +			bRequest:      REQ_GetPortStatus,
 +			wValue:        0,
 +			wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,
 +			wLength:       sizeof(uint8_t),
 +		};
 +
 +	Pipe_SelectPipe(PIPE_CONTROLPIPE);
 +
 +	return USB_Host_SendControlRequest(PortStatus);
 +}
 +
 +uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 +{
 +	USB_ControlRequest = (USB_Request_Header_t)
 +		{
 +			bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
 +			bRequest:      REQ_SoftReset,
 +			wValue:        0,
 +			wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,
 +			wLength:       0,
 +		};
 +
 +	Pipe_SelectPipe(PIPE_CONTROLPIPE);
 +
 +	return USB_Host_SendControlRequest(NULL);
 +}
 +
 +uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, void* PrinterCommands, uint16_t CommandSize)
 +{
 +	uint8_t ErrorCode;
 +
 +	Pipe_SelectPipe(PRNTInterfaceInfo->Config.DataOUTPipeNumber);
 +	Pipe_Unfreeze();
 +	
 +	if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands, CommandSize, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
 +	  return ErrorCode;
 +
 +	Pipe_ClearOUT();
 +	while (!(Pipe_IsOUTReady()))
 +	{
 +		if (USB_HostState == HOST_STATE_Unattached)
 +		  return PIPE_RWSTREAM_DeviceDisconnected;
 +	}
 +	
 +	Pipe_Freeze();
 +
 +	return PIPE_RWSTREAM_NoError;
 +}
 +
 +uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, char* DeviceIDString, uint16_t BufferSize)
 +{
 +	uint8_t  ErrorCode = HOST_SENDCONTROL_Successful;
 +	uint16_t DeviceIDStringLength = 0;
 +
 +	USB_ControlRequest = (USB_Request_Header_t)
 +		{
 +			bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 +			bRequest:      REQ_GetDeviceID,
 +			wValue:        0,
 +			wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,
 +			wLength:       sizeof(DeviceIDStringLength),
 +		};
 +		
 +	Pipe_SelectPipe(PIPE_CONTROLPIPE);
 +
 +	if ((ErrorCode = USB_Host_SendControlRequest(&DeviceIDStringLength)) != HOST_SENDCONTROL_Successful)
 +	  return ErrorCode;
 +	  
 +	if (!(DeviceIDStringLength))
 +	{
 +		DeviceIDString[0] = 0x00;
 +		return HOST_SENDCONTROL_Successful;
 +	}
 +	
 +	DeviceIDStringLength = SwapEndian_16(DeviceIDStringLength);
 +
 +	if (DeviceIDStringLength > BufferSize)
 +	  DeviceIDStringLength = BufferSize;
 +
 +	USB_ControlRequest.wLength = DeviceIDStringLength;
 +	
 +	if ((ErrorCode = USB_Host_SendControlRequest(DeviceIDString)) != HOST_SENDCONTROL_Successful)
 +	  return ErrorCode;
 +	  
 +	memmove(&DeviceIDString[0], &DeviceIDString[2], DeviceIDStringLength - 2);
 +
 +	DeviceIDString[DeviceIDStringLength - 2] = 0x00;
 +	
 +	return HOST_SENDCONTROL_Successful;
 +}
 +
 +#endif
 diff --git a/LUFA/Drivers/USB/Class/Host/Printer.h b/LUFA/Drivers/USB/Class/Host/Printer.h new file mode 100644 index 000000000..d61eb4a71 --- /dev/null +++ b/LUFA/Drivers/USB/Class/Host/Printer.h @@ -0,0 +1,209 @@ +/*
 +             LUFA Library
 +     Copyright (C) Dean Camera, 2009.
 +              
 +  dean [at] fourwalledcubicle [dot] com
 +      www.fourwalledcubicle.com
 +*/
 +
 +/*
 +  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 +
 +  Permission to use, copy, modify, and distribute this software
 +  and its documentation for any purpose and without fee is hereby
 +  granted, provided that the above copyright notice appear in all
 +  copies and that both that the copyright notice and this
 +  permission notice and warranty disclaimer appear in supporting
 +  documentation, and that the name of the author not be used in
 +  advertising or publicity pertaining to distribution of the
 +  software without specific, written prior permission.
 +
 +  The author disclaim all warranties with regard to this
 +  software, including all implied warranties of merchantability
 +  and fitness.  In no event shall the author be liable for any
 +  special, indirect or consequential damages or any damages
 +  whatsoever resulting from loss of use, data or profits, whether
 +  in an action of contract, negligence or other tortious action,
 +  arising out of or in connection with the use or performance of
 +  this software.
 +*/
 +
 +/** \ingroup Group_USBClassPrinter
 + *  @defgroup Group_USBClassPrinterHost Printer Class Host Mode Driver
 + *
 + *  \section Sec_Dependencies Module Source Dependencies
 + *  The following files must be built with any user project that uses this module:
 + *    - LUFA/Drivers/USB/Class/Host/Printer.c
 + *
 + *  \section Module Description
 + *  Host Mode USB Class driver framework interface, for the Printer USB Class driver.
 + *
 + *  @{
 + */
 +
 +#ifndef __PRINTER_CLASS_HOST_H__
 +#define __PRINTER_CLASS_HOST_H__
 +
 +	/* Includes: */
 +		#include "../../USB.h"
 +		#include "../Common/Printer.h"
 +		
 +	/* Enable C linkage for C++ Compilers: */
 +		#if defined(__cplusplus)
 +			extern "C" {
 +		#endif
 +
 +	/* Public Interface - May be used in end-application: */
 +		/* Macros: */
 +	
 +		/* Type Defines: */
 +			/** Class state structure. An instance of this structure should be made within the user application,
 +			 *  and passed to each of the Printer class driver functions as the PRNTInterfaceInfo parameter. This
 +			 *  stores each Printer interface's configuration and state information.
 +			 */
 +			typedef struct
 +			{
 +				const struct
 +				{
 +					uint8_t  DataINPipeNumber; /**< Pipe number of the Printer interface's IN data pipe */
 +					uint8_t  DataOUTPipeNumber; /**< Pipe number of the Printer interface's OUT data pipe */
 +				} Config; /**< Config data for the USB class interface within the device. All elements in this section
 +				           *   <b>must</b> be set or the interface will fail to enumerate and operate correctly.
 +				           */
 +				struct
 +				{
 +					bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid
 +					                *   after \ref PRNT_Host_ConfigurePipes() is called and the Host state machine is in the
 +					                *   Configured state
 +					                */
 +					uint8_t InterfaceNumber; /**< Interface index of the Printer interface within the attached device */
 +					uint8_t AlternateSetting; /**< Alternate setting within the Printer Interface in the attached device */
 +
 +					uint16_t DataINPipeSize; /**< Size in bytes of the Printer interface's IN data pipe */
 +					uint16_t DataOUTPipeSize;  /**< Size in bytes of the Printer interface's OUT data pipe */
 +				} State; /**< State data for the USB class interface within the device. All elements in this section
 +						  *   <b>may</b> be set to initial values, but may also be ignored to default to sane values when
 +						  *   the interface is enumerated.
 +						  */
 +			} USB_ClassInfo_PRNT_Host_t;
 +
 +		/* Enums: */
 +			enum PRNTHost_EnumerationFailure_ErrorCodes_t
 +			{
 +				PRNT_ENUMERROR_NoError                    = 0, /**< Configuration Descriptor was processed successfully */
 +				PRNT_ENUMERROR_InvalidConfigDescriptor    = 1, /**< The device returned an invalid Configuration Descriptor */
 +				PRNT_ENUMERROR_NoPrinterInterfaceFound    = 2, /**< A compatible Printer interface was not found in the device's Configuration Descriptor */
 +				PRNT_ENUMERROR_EndpointsNotFound          = 3, /**< Compatible Printer endpoints were not found in the device's interfaces */
 +			};
 +	
 +		/* Function Prototypes: */
 +			/** General management task for a given Printer host class interface, required for the correct operation of
 +			 *  the interface. This should be called frequently in the main program loop, before the master USB management task
 +			 *  \ref USB_USBTask().
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 */
 +			void PRNT_Host_USBTask(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 +			
 +
 +			/** Host interface configuration routine, to configure a given Printer host interface instance using the
 +			 *  Configuration Descriptor read from an attached USB device. This function automatically updates the given Printer
 +			 *  instance's state values and configures the pipes required to communicate with the interface if it is found within
 +			 *  the device. This should be called once after the stack has enumerated the attached device, while the host state
 +			 *  machine is in the Addressed state.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *  \param[in] ConfigDescriptorSize  Length of the attached device's Configuration Descriptor
 +			 *  \param[in] DeviceConfigDescriptor  Pointer to a buffer containing the attached device's Configuration Descriptor
 +			 *
 +			 *  \return A value from the \ref PRNTHost_EnumerationFailure_ErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint16_t ConfigDescriptorSize,
 +			                                 uint8_t* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1, 3);
 +			
 +			/** Configures the printer to enable Bidirectional mode, if it is not already in this mode. This should be called
 +			 *  once the connected device's configuration has been set, to ensure the printer is ready to accept commands.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *
 +			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 +			
 +			/** Retrieves the status of the virtual Printer port's inbound status lines. The result can then be masked against the
 +			 *  PRNT_PORTSTATUS_* macros to determine the printer port's status.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *  \param[out]  PortStatus  Location where the retrieved port status should be stored
 +			 *
 +			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint8_t* const PortStatus)
 +			                                ATTR_NON_NULL_PTR_ARG(1, 2);
 +
 +			/** Soft-resets the attached printer, readying it for new commands.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *
 +			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 +
 +			/** Sends the given raw data stream to the attached printer's input endpoint. This should contain commands that the
 +			 *  printer is able to understand - for example, PCL data. Not all printers accept all printer languages; see
 +			 *  \ref PRNT_Host_GetDeviceID() for details on determining acceptable languages for an attached printer.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *  \param[in] PrinterCommands  Pointer to a buffer containing the raw command stream to send to the printer
 +			 *  \param[in] CommandSize  Size in bytes of the command stream to be sent
 +			 *
 +			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, void* PrinterCommands, 
 +			                           uint16_t CommandSize) ATTR_NON_NULL_PTR_ARG(1, 2);
 +
 +			/** Retrieves the attached printer device's ID string, formatted according to IEEE 1284. This string is sent as a
 +			 *  Unicode string from the device and is automatically converted to an ASCII encoded C string by this function, thus
 +			 *  the maximum reportable string length is two less than the size given (to accomodate the Unicode string length
 +			 *  bytes which are removed).
 +			 *
 +			 *  This string, when supported, contains the model, manufacturer and acceptable printer languages for the attached device.
 +			 *
 +			 *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state
 +			 *  \param[out] DeviceIDString  Pointer to a buffer where the Device ID string should be stored, in ASCII format
 +			 *  \param[in] BufferSize  Size in bytes of the buffer allocated for the Device ID string
 +			 *
 +			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum
 +			 */
 +			uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, char* DeviceIDString,
 +			                              uint16_t BufferSize) ATTR_NON_NULL_PTR_ARG(1);
 +
 +	/* Private Interface - For use in library only: */
 +	#if !defined(__DOXYGEN__)
 +		/* Macros: */
 +			#define PRINTER_CLASS                  0x07
 +			#define PRINTER_SUBCLASS               0x01
 +			#define PRINTER_PROTOCOL               0x02
 +
 +			#define REQ_GetDeviceID                0
 +			#define REQ_GetPortStatus              1
 +			#define REQ_SoftReset                  2
 +		
 +			#define PRNT_FOUND_DATAPIPE_IN         (1 << 0)
 +			#define PRNT_FOUND_DATAPIPE_OUT        (1 << 1)
 +			
 +		/* Function Prototypes: */
 +			#if defined(INCLUDE_FROM_PRINTER_CLASS_HOST_C)		
 +				static uint8_t DComp_NextPRNTInterface(void* const CurrentDescriptor);
 +				static uint8_t DComp_NextPRNTInterfaceEndpoint(void* const CurrentDescriptor);
 +			#endif
 +	#endif
 +	
 +	/* Disable C linkage for C++ Compilers: */
 +		#if defined(__cplusplus)
 +			}
 +		#endif
 +
 +#endif
 +
 +/** @} */
 diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h index 8a8552dab..4f7f7fad8 100644 --- a/LUFA/Drivers/USB/Class/Host/StillImage.h +++ b/LUFA/Drivers/USB/Class/Host/StillImage.h @@ -72,7 +72,7 @@  				struct
  				{
  					bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid
 -					                *   after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the
 +					                *   after \ref SI_Host_ConfigurePipes() is called and the Host state machine is in the
  					                *   Configured state
  					                */
 diff --git a/LUFA/Drivers/USB/Class/MassStorage.h b/LUFA/Drivers/USB/Class/MassStorage.h index 495a704ab..d2ad7dc09 100644 --- a/LUFA/Drivers/USB/Class/MassStorage.h +++ b/LUFA/Drivers/USB/Class/MassStorage.h @@ -37,7 +37,7 @@   *    - LUFA/Drivers/USB/Class/Host/MassStorage.c
   *
   *  \section Module Description
 - *  Mass Storage Class Driver module. This module contains an internal implementation of the USB Audio Class, for both
 + *  Mass Storage Class Driver module. This module contains an internal implementation of the USB Mass Storage Class, for both
   *  Device and Host USB modes. User applications can use this class driver instead of implementing the Mass Storage class
   *  manually via the low-level LUFA APIs.
   *
 diff --git a/LUFA/Drivers/USB/USB.h b/LUFA/Drivers/USB/USB.h index bac110c10..86b286eaf 100644 --- a/LUFA/Drivers/USB/USB.h +++ b/LUFA/Drivers/USB/USB.h @@ -68,6 +68,56 @@   *  Multiple device mode class drivers can be used within a project, including multiple instances of the
   *  same class driver. In this way, USB Hosts and Devices can be made quickly using the internal class drivers
   *  so that more time and effort can be put into the end application instead of the USB protocol.
 + *
 + *  The available class drivers and their modes are listed below.
 + *
 + *  <table>
 + *  <tr>
 + *   <th width="100px">USB Class</th> 
 + *   <th width="80px">Device</th> 
 + *   <th width="80px">Host</th> 
 + *  </tr>
 + *  <tr>
 + *   <td>Audio</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *   <td bgcolor="#EE0000">No</td>
 + *  </tr>
 + *  <tr>
 + *   <td>CDC</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>HID</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>MIDI</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>Mass Storage</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>Printer</td>
 + *   <td bgcolor="#EE0000">No</td>
 +*    <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>RNDIS</td>
 + *   <td bgcolor="#EE0000">No</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  <tr>
 + *   <td>Still Image</td>
 + *   <td bgcolor="#EE0000">No</td>
 + *   <td bgcolor="#00EE00">Yes</td>
 + *  </tr>
 + *  </table>
   */
  #ifndef __USB_H__
 diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 38e6e8916..52f01fac7 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -16,6 +16,8 @@    *  - Added stdio.h stream examples for the virtual CDC UART in the CDC host demos
    *  - Added new CDC/Mouse ClassDriver device demo
    *  - Added new Joystick Host ClassDriver and LowLevel demos
 +  *  - Added new Printer Host mode Class driver
 +  *  - Added new Printer Host mode ClassDriver demo
    *
    *  <b>Changed:</b>
    *  - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library
 diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt index a429d3d3c..e430e2d26 100644 --- a/LUFA/ManPages/MigrationInformation.txt +++ b/LUFA/ManPages/MigrationInformation.txt @@ -13,6 +13,7 @@   * \section Sec_MigrationXXXXXX Migrating from 090924 to XXXXXX
   *  
   *  <b>Host Mode</b>
 + *    - The HID_PARSE_UsageStackOverflow HID parser error constant is now named \ref HID_PARSE_UsageListOverflow
   *    - The \ref CALLBACK_HIDParser_FilterHIDReportItem() HID Parser callback now passes a complete HID_ReportItem_t to the
   *      user application, instead of just its attributes.
   *
 diff --git a/LUFA/makefile b/LUFA/makefile index c668399d4..ab2bb2320 100644 --- a/LUFA/makefile +++ b/LUFA/makefile @@ -28,6 +28,7 @@ LUFA_SRC_FILES =     ./Drivers/USB/LowLevel/DevChapter9.c        \                       ./Drivers/USB/Class/Host/HID.c              \
                       ./Drivers/USB/Class/Host/HIDParser.c        \
                       ./Drivers/USB/Class/Host/MassStorage.c      \
 +                     ./Drivers/USB/Class/Host/Printer.c          \
                       ./Drivers/USB/Class/Host/StillImage.c       \
                       ./Drivers/Board/Temperature.c               \
                       ./Drivers/Peripheral/Serial.c               \
 | 
