From e9029d49d5455ec146d2e87436d43d747d6c657a Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 18 Oct 2011 11:35:04 +0000 Subject: Rename the Doxygen page source directory from ManPages/ to DoxygenPages/ to prevent user confusion with the actual *nix Man tool. --- LUFA.pnproj | 2 +- LUFA/Doxygen.conf | 4 +- LUFA/DoxygenPages/AboutLUFA.txt | 20 + LUFA/DoxygenPages/AlternativeStacks.txt | 69 ++ LUFA/DoxygenPages/Author.jpg | Bin 0 -> 28410 bytes LUFA/DoxygenPages/BuildingLinkableLibraries.txt | 23 + LUFA/DoxygenPages/ChangeLog.txt | 1323 +++++++++++++++++++++++ LUFA/DoxygenPages/CompileTimeTokens.txt | 208 ++++ LUFA/DoxygenPages/CompilingApps.txt | 30 + LUFA/DoxygenPages/ConfiguringApps.txt | 89 ++ LUFA/DoxygenPages/DevelopingWithLUFA.txt | 21 + LUFA/DoxygenPages/DeviceSupport.txt | 356 ++++++ LUFA/DoxygenPages/DirectorySummaries.txt | 254 +++++ LUFA/DoxygenPages/Donating.txt | 24 + LUFA/DoxygenPages/FutureChanges.txt | 48 + LUFA/DoxygenPages/GettingStarted.txt | 27 + LUFA/DoxygenPages/Groups.txt | 25 + LUFA/DoxygenPages/LUFA.png | Bin 0 -> 10296 bytes LUFA/DoxygenPages/LUFAPoweredProjects.txt | 142 +++ LUFA/DoxygenPages/LUFA_thumb.png | Bin 0 -> 3729 bytes LUFA/DoxygenPages/LUFAvsAtmelStack.txt | 52 + LUFA/DoxygenPages/LibraryApps.txt | 126 +++ LUFA/DoxygenPages/LibraryResources.txt | 33 + LUFA/DoxygenPages/LicenseInfo.txt | 22 + LUFA/DoxygenPages/MainPage.txt | 48 + LUFA/DoxygenPages/MigrationInformation.txt | 622 +++++++++++ LUFA/DoxygenPages/ProgrammingApps.txt | 27 + LUFA/DoxygenPages/SoftwareBootloaderJump.txt | 71 ++ LUFA/DoxygenPages/VIDAndPIDValues.txt | 424 ++++++++ LUFA/DoxygenPages/WhyUseLUFA.txt | 43 + LUFA/DoxygenPages/WritingBoardDrivers.txt | 27 + LUFA/DoxygenPages/footer.htm | 1 + LUFA/ManPages/AboutLUFA.txt | 20 - LUFA/ManPages/AlternativeStacks.txt | 69 -- LUFA/ManPages/Author.jpg | Bin 28410 -> 0 bytes LUFA/ManPages/BuildingLinkableLibraries.txt | 23 - LUFA/ManPages/ChangeLog.txt | 1323 ----------------------- LUFA/ManPages/CompileTimeTokens.txt | 208 ---- LUFA/ManPages/CompilingApps.txt | 30 - LUFA/ManPages/ConfiguringApps.txt | 89 -- LUFA/ManPages/DevelopingWithLUFA.txt | 21 - LUFA/ManPages/DeviceSupport.txt | 356 ------ LUFA/ManPages/DirectorySummaries.txt | 254 ----- LUFA/ManPages/Donating.txt | 24 - LUFA/ManPages/FutureChanges.txt | 48 - LUFA/ManPages/GettingStarted.txt | 27 - LUFA/ManPages/Groups.txt | 25 - LUFA/ManPages/LUFA.png | Bin 10296 -> 0 bytes LUFA/ManPages/LUFAPoweredProjects.txt | 142 --- LUFA/ManPages/LUFA_thumb.png | Bin 3729 -> 0 bytes LUFA/ManPages/LUFAvsAtmelStack.txt | 52 - LUFA/ManPages/LibraryApps.txt | 126 --- LUFA/ManPages/LibraryResources.txt | 33 - LUFA/ManPages/LicenseInfo.txt | 22 - LUFA/ManPages/MainPage.txt | 48 - LUFA/ManPages/MigrationInformation.txt | 622 ----------- LUFA/ManPages/ProgrammingApps.txt | 27 - LUFA/ManPages/SoftwareBootloaderJump.txt | 71 -- LUFA/ManPages/VIDAndPIDValues.txt | 424 -------- LUFA/ManPages/WhyUseLUFA.txt | 43 - LUFA/ManPages/WritingBoardDrivers.txt | 27 - LUFA/ManPages/footer.htm | 1 - 62 files changed, 4158 insertions(+), 4158 deletions(-) create mode 100644 LUFA/DoxygenPages/AboutLUFA.txt create mode 100644 LUFA/DoxygenPages/AlternativeStacks.txt create mode 100644 LUFA/DoxygenPages/Author.jpg create mode 100644 LUFA/DoxygenPages/BuildingLinkableLibraries.txt create mode 100644 LUFA/DoxygenPages/ChangeLog.txt create mode 100644 LUFA/DoxygenPages/CompileTimeTokens.txt create mode 100644 LUFA/DoxygenPages/CompilingApps.txt create mode 100644 LUFA/DoxygenPages/ConfiguringApps.txt create mode 100644 LUFA/DoxygenPages/DevelopingWithLUFA.txt create mode 100644 LUFA/DoxygenPages/DeviceSupport.txt create mode 100644 LUFA/DoxygenPages/DirectorySummaries.txt create mode 100644 LUFA/DoxygenPages/Donating.txt create mode 100644 LUFA/DoxygenPages/FutureChanges.txt create mode 100644 LUFA/DoxygenPages/GettingStarted.txt create mode 100644 LUFA/DoxygenPages/Groups.txt create mode 100644 LUFA/DoxygenPages/LUFA.png create mode 100644 LUFA/DoxygenPages/LUFAPoweredProjects.txt create mode 100644 LUFA/DoxygenPages/LUFA_thumb.png create mode 100644 LUFA/DoxygenPages/LUFAvsAtmelStack.txt create mode 100644 LUFA/DoxygenPages/LibraryApps.txt create mode 100644 LUFA/DoxygenPages/LibraryResources.txt create mode 100644 LUFA/DoxygenPages/LicenseInfo.txt create mode 100644 LUFA/DoxygenPages/MainPage.txt create mode 100644 LUFA/DoxygenPages/MigrationInformation.txt create mode 100644 LUFA/DoxygenPages/ProgrammingApps.txt create mode 100644 LUFA/DoxygenPages/SoftwareBootloaderJump.txt create mode 100644 LUFA/DoxygenPages/VIDAndPIDValues.txt create mode 100644 LUFA/DoxygenPages/WhyUseLUFA.txt create mode 100644 LUFA/DoxygenPages/WritingBoardDrivers.txt create mode 100644 LUFA/DoxygenPages/footer.htm delete mode 100644 LUFA/ManPages/AboutLUFA.txt delete mode 100644 LUFA/ManPages/AlternativeStacks.txt delete mode 100644 LUFA/ManPages/Author.jpg delete mode 100644 LUFA/ManPages/BuildingLinkableLibraries.txt delete mode 100644 LUFA/ManPages/ChangeLog.txt delete mode 100644 LUFA/ManPages/CompileTimeTokens.txt delete mode 100644 LUFA/ManPages/CompilingApps.txt delete mode 100644 LUFA/ManPages/ConfiguringApps.txt delete mode 100644 LUFA/ManPages/DevelopingWithLUFA.txt delete mode 100644 LUFA/ManPages/DeviceSupport.txt delete mode 100644 LUFA/ManPages/DirectorySummaries.txt delete mode 100644 LUFA/ManPages/Donating.txt delete mode 100644 LUFA/ManPages/FutureChanges.txt delete mode 100644 LUFA/ManPages/GettingStarted.txt delete mode 100644 LUFA/ManPages/Groups.txt delete mode 100644 LUFA/ManPages/LUFA.png delete mode 100644 LUFA/ManPages/LUFAPoweredProjects.txt delete mode 100644 LUFA/ManPages/LUFA_thumb.png delete mode 100644 LUFA/ManPages/LUFAvsAtmelStack.txt delete mode 100644 LUFA/ManPages/LibraryApps.txt delete mode 100644 LUFA/ManPages/LibraryResources.txt delete mode 100644 LUFA/ManPages/LicenseInfo.txt delete mode 100644 LUFA/ManPages/MainPage.txt delete mode 100644 LUFA/ManPages/MigrationInformation.txt delete mode 100644 LUFA/ManPages/ProgrammingApps.txt delete mode 100644 LUFA/ManPages/SoftwareBootloaderJump.txt delete mode 100644 LUFA/ManPages/VIDAndPIDValues.txt delete mode 100644 LUFA/ManPages/WhyUseLUFA.txt delete mode 100644 LUFA/ManPages/WritingBoardDrivers.txt delete mode 100644 LUFA/ManPages/footer.htm diff --git a/LUFA.pnproj b/LUFA.pnproj index 7d7af8147..3559c4134 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/LUFA/Doxygen.conf b/LUFA/Doxygen.conf index 5a02c5cb6..947f49ac3 100644 --- a/LUFA/Doxygen.conf +++ b/LUFA/Doxygen.conf @@ -44,7 +44,7 @@ PROJECT_BRIEF = # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. -PROJECT_LOGO = ./ManPages/LUFA_thumb.png +PROJECT_LOGO = ./DoxygenPages/LUFA_thumb.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -855,7 +855,7 @@ HTML_HEADER = # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = ./ManPages/footer.htm +HTML_FOOTER = ./DoxygenPages/footer.htm # 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 diff --git a/LUFA/DoxygenPages/AboutLUFA.txt b/LUFA/DoxygenPages/AboutLUFA.txt new file mode 100644 index 000000000..c7374bce6 --- /dev/null +++ b/LUFA/DoxygenPages/AboutLUFA.txt @@ -0,0 +1,20 @@ +/** \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. + */ + +/** + * \page Page_AboutLUFA About LUFA + * + * This section of the manual contains information about the library as a whole, including its supported targets, + * past and planned changes, and links to other projects incorporating LUFA. + * + * Subsections: + * \li \subpage Page_DeviceSupport - Current Device and Hardware Support + * \li \subpage Page_Resources - LUFA and USB Related Resources + * \li \subpage Page_ChangeLog - Project Changelog + * \li \subpage Page_FutureChanges - Planned Changes to the Library + * \li \subpage Page_LUFAPoweredProjects - Other Projects Using LUFA + */ + diff --git a/LUFA/DoxygenPages/AlternativeStacks.txt b/LUFA/DoxygenPages/AlternativeStacks.txt new file mode 100644 index 000000000..f9d6cbbcd --- /dev/null +++ b/LUFA/DoxygenPages/AlternativeStacks.txt @@ -0,0 +1,69 @@ +/** \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. + */ + +/** + * \page Page_AlternativeStacks Alternative USB AVR Stacks + * + * LUFA is not the only stack available for the USB AVRs, although it is perhaps the best (see \ref Page_WhyUseLUFA). + * In the interests of completeness and user choice, other known USB AVR stacks are listed here. + * + * \section Sec_HardwareStacks Hardware USB AVR Stacks + * These are the known alternative USB stacks which are designed for and run exclusively on the USB AVR series microcontrollers, + * which contain on-chip USB controller hardware for maximum features and speed. + * + * - Name: Atmel USB AVR Stack (Atmel Inc.) \n + * Cost: Free \n + * License: Atmel Limited License (see Atmel download for details) \n + * Website: http://atmel.com/dyn/products/app_notes.asp?family_id=607#USB \n + * Description: This is the official Atmel USB AVR stack, for their 8-bit USB AVR lineup. Each series of + * USB AVR is separated into a separate download stack, which is both AVR-GCC and IAR compatible. + * + * - Name: Dr. Stefan Salewski's AT90USB1287 Stack (Dr. Stefan Salewski) \n + * Cost: Free \n + * License: GPL \n + * Website: http://www.ssalewski.de/AT90USB_firmware.html.en \n + * Description: This is a GPL'd library specifically designed for the AT90USB1287, by Dr. Stefan Salewski, a + * German Physicist. It compiles for AVR-GCC and can potentially be modified to work on other USB + * AVR models. + * + * - Name: FreakUSB Stack (FreakLabs) \n + * Cost: Free \n + * License: Modified BSD \n + * Website: http://freaklabs.org/index.php/FreakUSB-Open-Source-USB-Device-Stack.html \n + * Description: An open source simple USB stack for a selection of the USB AVRs. Contains a sample class driver + * for the CDC-ACM class, however other class driver implementations are also possible. + * + * - Name: PJRC Teensy Stack (Paul Stoffregen) \n + * Cost: Free \n + * License: BSD \n + * Website: http://www.pjrc.com/teensy/usb_debug_only.html \n + * Description: Not so much a complete stack as a collection of USB enabled demos, this library is specifically + * designed for the PJRC Teensy line of USB AVRs, and thus may need to be modified for other USB AVR + * chips. These minimal code samples shows the inner workings of the USB controller, without all the + * abstraction present in most other USB AVR stacks. + * + * \section Sec_SoftwareStacks Software AVR Stacks + * These are the known alternative USB stacks which can run on regular AVR models, lacking dedicated hardware USB controllers + * via a bit-banged (emulated) version of the USB protocol. They are limited in their capabilities due to the cycles required + * to be dedicated to managing the USB bus, but offer a cheap way to implement USB functionality into a design. + * + * - Name: AVR309: Software USB (Atmel) \n + * Cost: Free \n + * License: None Stated \n + * Website: http://www.atmel.com/dyn/Products/app_notes.asp?family_id=607 \n + * Description: Atmel's official software USB implementation, an Application Note containing work by Igor Cesko. This + * is a minimal assembly-only implementation of software USB, providing HID functionality. Less compile + * options than V-USB (see below). + * + * - Name: V-USB (Objective Development) \n + * Cost: Free for some uses, see website for licensing \n + * License: Dual GPL2/Custom \n + * Website: http://www.obdev.at/products/vusb/index.html \n + * Description: Well regarded and complete USB 1.1 software stack for several AVR models, implementing Low Speed HID. + * Used in many commercial and non-commercial designs, with user-submitted projects available for viewing + * on the company's website. Uses C language code mixed with assembly for time-critical sections. + */ + diff --git a/LUFA/DoxygenPages/Author.jpg b/LUFA/DoxygenPages/Author.jpg new file mode 100644 index 000000000..e8f5541a0 Binary files /dev/null and b/LUFA/DoxygenPages/Author.jpg differ diff --git a/LUFA/DoxygenPages/BuildingLinkableLibraries.txt b/LUFA/DoxygenPages/BuildingLinkableLibraries.txt new file mode 100644 index 000000000..e5782df9f --- /dev/null +++ b/LUFA/DoxygenPages/BuildingLinkableLibraries.txt @@ -0,0 +1,23 @@ +/** \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. + */ + +/** \page Page_BuildLibrary Building as a Linkable Library + * + * The LUFA library can be built as a proper linkable library (with the extention .a) under AVR-GCC, so that + * the library does not need to be recompiled with each revision of a user project. Instructions for creating + * a library from a given source tree can be found in the AVR-GCC user manual included in the WinAVR install + * /Docs/ directory. + * + * However, building the library is not recommended, as the static (compile-time) options will be + * unable to be changed without a recompilation of the LUFA code. Therefore, if the library is to be built + * from the LUFA source, it should be made to be application-specific and compiled with the static options + * that are required for each project (which should be recorded along with the library). + * + * Normal library use has the library components compiled in at the same point as the application code, as + * demonstrated in the library demos and applications. This is the preferred method, as the library is recompiled + * each time to ensure that all static options for a particular application are applied. + */ + diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt new file mode 100644 index 000000000..5e917efed --- /dev/null +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -0,0 +1,1323 @@ +/** \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. + */ + + /** \page Page_ChangeLog Project Changelog + * + * \section Sec_ChangeLogXXXXXX Version XXXXXX + * New: + * - Core: + * - None + * - Library Applications: + * - Added User Application APIs to the CDC and DFU class bootloaders + * + * Changed: + * - Core: + * - When automatic PLL management mode is enabled on the U4 series AVR8 chips, the PLL is now configured for 48MHz and not + * a divided 96MHz, to lower power consumption and to keep the system within the datasheet specs for 3.3V operation (thanks to Scott Vitale) + * - Library Applications: + * - None + * + * Fixed: + * - Core: + * - Fixed ring buffer size limited to 255 elements, instead of the intended 65535 elements. + * - Library Applications: + * - Added reliability patches to the AVRISP-MKII Clone project's PDI/TPI protocols (thanks to Justin Mattair) + * - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled + * + * \section Sec_ChangeLog111009 Version 111009 + * New: + * - Core: + * - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration + * tokens as an alternative to tokens defined in the project makefile + * - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting + * - Added Audio class control request definitions + * - Added new CALLBACK_Audio_Device_GetSetEndpointProperty() callback to the Audio Device Class driver to allow for endpoint control manipulations + * such as data sample rates + * - Added support for the Audio class GET STATUS request in the Audio Device Class driver so that it is correctly ACKed when sent by the host + * - Added new EVENT_Audio_Device_StreamStartStop() event to the Audio Device Class driver to detect stream start/stop events + * - Added board driver support for the Busware TUL board + * - Added board hardware driver support for the EVK1100 board + * - Added board hardware driver support for the EVK1104 board + * - Added new Host mode Audio Class driver + * - Added new SPI_GetCurrentMode() function to the SPI peripheral driver + * - Added RingBuffer_GetFreeCount() function to the Ring Buffer driver + * - Added new HID_Host_SetIdlePeriod() function to the HID Host Class driver + * - Added new USB_Host_ConfigurationNumber global variable to indicate the selected configuration in an attached device + * - Added new USB_Host_GetDeviceStatus() function to the host standard request function set + * - Added AVR USB XMEGA architecture port (currently incomplete/experimental) + * - Added new STRINGIFY() and STRINGIFY_EXPANDED() convenience macros + * - Added new JTAG_DISABLE() macro for the AVR8 architecture + * - Added Device Qualifier standard descriptor structure definitions USB_StdDescriptor_DeviceQualifier_t and USB_Descriptor_DeviceQualifier_t + * - Library Applications: + * - Added RNDIS device mode to the Webserver project + * - Added new incomplete AndroidAccessoryHost Host LowLevel demo + * - Added new HIDReportViewer project + * - Added new MediaControl project + * - Added new AudioInputHost Host ClassDriver demo + * - Added new AudioOutputHost Host ClassDriver demo + * - Added new AudioInputHost Host LowLevel demo + * - Added new AudioOutputHost Host LowLevel demo + * - Added new "checksource" target to all library project makefiles + * - Added new VTARGET_USE_INTERNAL_REF configuration option to the AVRISP-MKII clone project (thanks to Volker Bosch) + * + * Changed: + * - Core: + * - Altered the definition of the USB_Audio_Descriptor_Format_t descriptor so that the user is now responsible for supplying + * the supported audio sampling rates, to allow for multiple audio interfaces with different numbers of supported rates and/or + * continuous sample rates + * - Pipe_BoundEndpointNumber() has been renamed to Pipe_GetBoundEndpointAddress(), and now returns the correct endpoint direction + * as part of the endpoint address + * - Renamed global state variables that are specific to a certain USB mode to clearly indicate which mode the variable relates to, + * by changing the USB_* prefix to USB_Device_* or USB_Host_* + * - Removed the HOST_STATE_WaitForDeviceRemoval and HOST_STATE_Suspended host state machine states, as these are no longer required + * - Altered the USB_Host_SetDeviceConfiguration() function to update the global Host state machine state and the new + * USB_Host_ConfigurationNumber global as required + * - Added endian correcting code to the library USB class drivers for multiple architecture support + * - Removed the ENDPOINT_DESCRIPTOR_DIR_* macros, replaced by ENDPOINT_DIR_* instead + * - Renamed the JTAG_DEBUG_ASSERT() macro to JTAG_ASSERT() + * - Added variable number of axis to HID_DESCRIPTOR_JOYSTICK() for multi-axis joysticks above just X and Y + * - Renamed USB_Host_ClearPipeStall() to USB_Host_ClearEndpointStall() as the function works on an endpoint address within the attached device, + * and not a Pipe within the host + * - The MS_Host_ResetMSInterface() now performs a full Mass Storage reset sequence to prevent data corruption in the event of a device + * lock up or timeout (thanks to David Lyons) + * - Added endian-correction to the CDC driver's Line Encoding control request handlers. + * - Library Applications: + * - Modified the Low Level and Class Driver AudioInput and AudioOutput demos to support multiple audio sample rates + * - Updated all host mode demos and projects to use the EVENT_USB_Host_DeviceEnumerationComplete() event callback for device configuration + * instead of manual host state machine manipulations in the main application task + * - Changed the reports in the GenericHID device demos to control the board LEDs, to reduce user confusion over the callback routines + * - Added reliability patches to the AVRISP-MKII Clone project's ISP and PDI/TPI protocols (thanks to Justin Mattair) + * + * Fixed: + * - Core: + * - Large number of documentation and code comment corrections (thanks to Andrey from Microsin.ru) + * - Fixed possibility of the AVR's SPI interface being pulled out of master mode if the /SS pin is a input and pulled low (thanks + * to Andrey from Microsin.ru) + * - Fixed compile error when FIXED_CONTROL_ENDPOINT_SIZE compile time option was disabled, and a USE_*_DESCRIPTORS compile time + * option was not enabled on the AVR8s + * - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects + * - Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices + * - Fixed USB_USBTask not being called internally in stream transfers between packets when Partial Stream Transfers are used + * - Fixed swapped TWI_ADDRESS_READ and TWI_ADDRESS_WRITE values + * - Fixed TWI_ReadPacket() not releasing the TWI bus on read completion + * - Fixed optimization error in the HID Parser item value USB_SetHIDReportItemInfo() and USB_GetHIDReportItemInfo() routines if the report item was + * \c NULL (which should be allowable according to the API) + * - Fixed HID Parser CALLBACK_HIDParser_FilterHIDReportItem() callback function not being passed a cacheable report item pointer + * - Fixed HID Parser's largest report size bit count not including the size of the last parsed report item + * - Fixed HID host driver's largest HID report size count corrupt when the number of report bits exceeds 255 + * - Library Applications: + * - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2 + * - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed + * - Fixed compile errors in the incomplete BluetoothHost demo application (thanks to Timo Lindfors) + * - Fixed incorrect Dataflash buffer use in the DataflashManager_WriteBlocks_RAM() function of several demos/projects (thanks to Jeremy Willden) + * - Fixed incorrect logging interval (always 500ms longer than requested) in the TempDataLogger project + * - Fixed incorrect buffer size check in the USBtoSerial project (thanks to Yuri A Nikiforov) + * - Fixed port state table corruption in the TCP layer of the RNDIS Ethernet device demos + * + * \section Sec_ChangeLog110528 Version 110528 + * New: + * - Core: + * - Added new ORDERED_EP_CONFIG compile time option to restrict endpoint/pipe configuration to ascending order + * in exchange for a smaller compiled program binary size + * - Added a new general RingBuff.h miscellaneous ring buffer library driver header + * - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses + * - Added new GCC_MEMORY_BARRIER() macro to prevent instruction reordering across boundaries + * - Added basic driver example use code to the library documentation + * - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions + * - Added new ADC_GET_CHANNEL_MASK() convenience macro + * - Added new HID report item macros (with HID_RI_ prefix) to allow for easy creation and editing of HID report descriptors + * - Added new HID_DESCRIPTOR_MOUSE(), HID_DESCRIPTOR_KEYBOARD(), HID_DESCRIPTOR_JOYSTICK() and HID_DESCRIPTOR_VENDOR() macros + * for easy automatic creation of basic USB HID device reports + * - Added new MAX() and MIN() convenience macros + * - Added new Serial_SendData() function to the Serial driver + * - Added board driver support for the Sparkfun ATMEGA8U2 breakout board + * - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus) + * - Internal restructuring for eventual multiple architecture ports + * - Added AVR32 UC3 architecture port (currently incomplete/experimental) + * - Added new architecture independent functions to enable, disable, save and restore the Global Interrupt Enable flags + * - Added new RNDIS Device Class Driver packet send and receive functions + * - Library Applications: + * - Added ability to write protect Mass Storage disk write operations from the host OS + * - Added new MIDIToneGenerator project + * - Added new KeyboardMouseMultiReport Device ClassDriver demo + * - Added new VirtualSerialMassStorage Device ClassDriver demo + * - Added HID class bootloader, compatible with a modified version of the command line Teensy loader from PJRC.com + * - Added LED flashing to the CDC and DFU class bootloaders to indicate when they are running + * + * Changed: + * - Core: + * - Unordered Endpoint/Pipe configuration is now allowed once again by default via the previous reconfig workaround + * - Refactored Host mode Class Driver *_Host_ConfigurePipes() routines to be more space efficient when compiled + * - Added new *_ENUMERROR_PipeConfigurationFailed error codes for the *_Host_ConfigurePipes() routines + * - The USARTStream global is now public and documented in the SerialStream module, allowing for the serial USART + * stream to be accessed via its handle rather than via the implicit stdout and stdin streams + * - The FAST_STREAM_TRANSFERS compile time option has been removed due to lack of use and low cost/benefit ratio + * - Altered all endpoint/pipe stream transfers so that the new BytesProcessed parameter now points to a location + * where the number of bytes in the transfer that have been completed can be stored (or NULL if entire transaction + * should be performed in one chunk) + * - The NO_STREAM_CALLBACKS compile time option has now been removed due to the new partial stream transfer feature + * - Changed over all project and demo HID report descriptors to use the new HID report item macros + * - Moved the HIDParser.c source file to the LUFA/Drivers/USB/Class/Common/ directory from the LUFA/Drivers/USB/Class/Host/ + * - Added support to the HID parser for extended USAGE items that contain the usage page as well as the usage index + * - Removed the SerialStream driver, rolled functionality into the regular Serial peripheral driver via the new + * Serial_CreateStream() and Serial_CreateBlockingStream() functions + * - Renamed the low level Serial byte send/receive functions, to be consistent with the CDC class driver byte functions + * - Altered the behaviour of the serial byte reception function so that is is non-blocking, and now returns a negative + * value if no character is received (to remain consistent with the CDC class driver byte reception routines) + * - Renamed the PRNT_Host_SendString(), CDC_Host_SendString() and CDC_Device_SendString() functions to *_SendData(), and + * added new versions of the *_SendString() routines that expect a null terminated string instead + * - Renamed all driver termination *_ShutDown() functions to the more logical name *_Disable() + * - Reduced latency for executing the Start-Of-Frame events (if enabled in the user application) + * - Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called + * - Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name + * - Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs when automatic PLL mode is specified + * - F_CLOCK changed to F_USB to be more descriptive, and applicable on future architecture ports + * - Renamed all low level Endpoint_Read_*, Endpoint_Write_* and Endpoint_Discard_* functions to use the number of bits instead of + * a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures + * - Renamed all low level Pipe_Read_*, Pipe_Write_* and Pipe_Discard_* functions to use the number of bits instead of + * a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures + * - Separated out board drivers by architecture in the library internals for better organisation + * - Library Applications: + * - Changed the XPLAINBridge software UART to use the regular timer CTC mode instead of the alternative CTC mode + * via the Input Capture register, to reduce user confusion + * - Combined page and word ISP programming mode code in the AVRISP-MKII clone project to reduce compiled size and + * increase maintainability of the code + * - Changed over library projects to use the new general ring buffer library driver module + * - Added new high level TWI packet read/write commands, altered behaviour of the TWI_StartTransmission() function + * - Changed TempDataLogger project's DS1307 driver to simplify the function interface and prevent a possible race condition + * - Changed AVRISP-MKII project to use the Watchdog interrupt for command timeouts, to reduce CPU usage and free timer 0 + * for other uses + * - Updated the software USART code in the XPLAIN Bridge application so that the incoming bits are sampled at their mid-point + * instead of starting point, to give maximum reliability (thanks to Anton Staaf) + * + * Fixed: + * - Core: + * - Fixed broken USBFOO board drivers due to missing BOARD_USBFOO define + * - Fixed HID host class driver incorrectly binding to HID devices that do not have an OUT endpoint + * - Fixed incorrect definition of the HID_KEYBOARD_SC_D constant in the HID class driver (thanks to Opendous Inc.) + * - Fixed incorrect definition of the HID_KEYBOARD_SC_RIGHT_ARROW constant in the HID class driver (thanks to Joby Taffey) + * - Fixed incorrect endpoint initialisation order in the several device demos (thanks to Rick Drolet) + * - Fixed inverted Minimus board LEDs + * - Fixed incorrect byte ordering in the Audio_Device_WriteSample24 function (thanks to WZab) + * - Fixed several functions in the Host mode Still Image Class driver returning an error code from the incorrect + * error code enum (thanks to Daniel Seibert) + * - Fixed ReportID not being removed from the feature/out report data array in the HID class driver when Report IDs are used + * - Fixed incorrect BUTTONS_BUTTON1 definition for the Minimus board + * - Fixed Still Image Host class driver exiting the descriptor search routine prematurely if the data pipes (but not event pipe) + * is found + * - Fixed missing call to Pipe_SetInfiniteINRequests() in the Pipe_ConfigurePipe() routine + * - Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus) + * - Fixed possible invalid program execution when in host mode if corrupt descriptor lengths are supplied by the attached device + * - Library Applications: + * - Fixed Benito project discarding incoming data from the USB virtual serial port when the USART is busy + * - Fixed broken DFU bootloader, added XPLAIN support for bootloader start when XCK jumpered to ground + * - Fixed broken HID_REQ_GetReport request handler in the Low Level GenericHID demo + * - Fixed possible lost data in the XPLAINBridge, USBtoSerial and Benito projects when the host exceeds the packet + * timeout period on received packets as set by USB_STREAM_TIMEOUT_MS (thanks to Justin Rajewski) + * - Fixed possible programming problem in the AVRISP-MKII clone project when programming specific patterns into a target + * memory space that is only byte (not page) addressable + * - Fixed errors in the incomplete Test and Measurement device demo preventing proper operation (thanks to Pavel Plotnikov) + * - Fixed programming errors in the AVRISP-MKII project when the programming packet is a round multiple of the endpoint bank + * size under avrdude (thanks to Steffan Woltjer) + * + * + * \section Sec_ChangeLog101122 Version 101122 + * New: + * - Core: + * - Added new SCSI_ASENSE_NOT_READY_TO_READY_CHANGE constant to the Mass Storage class driver, to indicate when a previously + * not ready removable medium has now become ready for the host's use (thanks to Martin Degelsegger) + * - Moved the Pipe and Endpoint stream related code to two new USB library core source files EndpointStream.c and PipeStream.c + * - Added new USB_Device_GetFrameNumber() and USB_Host_GetFrameNumber() functions to retrieve the current USB frame number + * - Added new USB_Host_EnableSOFEvents(), USB_Host_DisableSOFEvents() and EVENT_USB_Host_StartOfFrame() for the user application + * handling of USB Start of Frame events while in USB Host mode + * - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the + * Print Host Class driver + * - Added class specific descriptor alternative struct type defines with standard USB-IF element naming + * - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory + * - Added board hardware driver support for the Adafruit U4 breakout board + * - Added board hardware driver support for the Arduino Uno development board + * - Added board hardware driver support for the Blackcat USB JTAG board (thanks to the PSGroove team) + * - Added board hardware driver support for the Busware BUI development board + * - Added board hardware driver support for the Busware CUL V3 868MHZ radio board (thanks to Dirk Tostmann) + * - Added board hardware driver support for the Kernel Concepts USBFOO development board + * - Added board hardware driver support for the Linnix UDIP development board + * - Added board hardware driver support for the Olimex AVR-USB-162 development board (thanks to Steve Fawcett) + * - Added board hardware driver support for the Maximus board (thanks to the PSGroove team) + * - Added board hardware driver support for the Microsin AVR-USB162 breakout board + * - Added board hardware driver support for the Minimus board (thanks to the PSGroove team) + * - Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management + * tasks for each driver is called + * - Added standard keyboard HID report scan-code defines (thanks to Laszlo Monda) + * - Added new Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() and Endpoint_AbortPendingIN() functions + * - Library Applications: + * - Added default test tone generation mode to the Device mode AudioInput demos + * - Added new NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT and NO_LOCK_BYTE_WRITE_SUPPORT compile time options to the + * CDC class bootloader + * - Added new XCK_RESCUE_CLOCK_ENABLE compile time option to the AVRISP-MKII clone programmer project (thanks to Tom Light) + * + * Changed: + * - Core: + * - Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions + * depending of if the given bank size is a compile time constant, as the compiler does a better job of optimizing + * with basic code + * - Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove + * the need for extra casting inside the callback (thanks to Jonathan Kollasch) + * - Reduced HOST_DEVICE_SETTLE_DELAY_MS to 1000ms down from 1500ms to improve device compatibility while in USB Host mode + * - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode correctly now defaults to UID selection mode + * - Renamed and moved class driver common constant definitions to make the naming scheme more uniform + * - Moved the USB mode specifier constants into a new enum, so that they are semantically related to one another + * - Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of supported banks for + * the given endpoint + * - Better algorithm to extract and convert the internal device serial number into a string descriptor (if present) + * - All USB class drivers are now automatically included when LUFA/Drivers/USB.h is included, and no longer need to be separately included + * - The MIDI class drivers now automatically flushes the MIDI interface when the MIDI class driver's USBTask() function is called + * - Renamed the EVENT_USB_Device_UnhandledControlRequest() event to EVENT_USB_Device_ControlRequest() as it is now fired before the library + * request handlers, not afterwards + * - Library Applications: + * - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints + * - Added missing DataflashManager_CheckDataflashOperation() function to the MassStorageKeyboard demo, removed redundant + * SCSI_Codes.h file as these values are part of the MassStorage Class Driver + * - Added compile time error to the AVRISP-MKII project when built for the U4 chips, as the default VTARGET detection ADC channel + * does not exist on these chips (thanks to Marco) + * - Changed all Device mode LowLevel demos and Device Class drivers so that the control request is acknowledged and any data + * transferred as quickly as possible without any processing in between sections, so that long callbacks or event handlers will + * not break communications with the host by exceeding the maximum control request stage timeout period + * - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible + * to free up the Start of Frame flag for interrupt use in the user application + * - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany) + * - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive + * - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices + * - All LowLevel demos changed to use the constants and types defined in the USB class drivers + * - Changed AudioInput and AudioOutput demos to reload the next sample via an interrupt rather than polling the sample timer + * - Rescue clock of the AVRISP-MKII moved to the AVR's OCR1A pin, so that the clock can be generated at all times + * - Changed ClassDriver MIDI demos to process all incoming events in a loop until the bank becomes empty rather than one at a time + * - Changed LowLevel MIDI demos to only clear the incoming event bank once it has become empty to support packed event packets + * + * Fixed: + * - Core: + * - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist + * within the supplied report of a multiple report HID device + * - Fixed critical pipe/endpoint memory allocation issue where the bank memory address space could be silently overlapped + * in the USB controller if the endpoints or pipes were allocated in anything other than ascending order (thanks to Martin Degelsegger) + * - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev) + * - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts + * - Fixed USB_Host_ClearPipeStall() incorrectly determining the endpoint direction from the currently selected pipe + * - Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode + * - Fixed endpoint selection within the CALLBACK_HID_Device_CreateHIDReport() callback function causing broken GET REPORT requests + * - Fixed incorrect command name for EEPROM memory programming in the makefile dfu-ee target + * - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver + * - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set + * - Fixed SPI driver not explicitly setting /SS and MISO pins as inputs when SPI_Init() is called + * - Fixed random enumeration failure while in device mode due to interrupts causing the Set Address request to exceed maximum timings + * - Fixed MIDI_Host_Flush() not aborting early when the specified MIDI host interface was not configured + * - Fixed MIDI class driver send routines silently discarding packets if the endpoint or pipe is busy (thanks to Robin Green) + * - Library Applications: + * - Fixed MassStorage based demos and projects resetting the SCSI sense values before the command is executed, leading to + * missed SCSI sense values when the host retrieves the sense key (thanks to Martin Degelsegger) + * - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control + * request handler + * - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value + * - Fixed incorrect signature reported in the CDC class bootloader for the ATMEGA32U2 + * - Fixed BootloaderCDC project failing on some operating systems due to removed Line Encoding options (thanks to Alexey Belyaev) + * - Fixed broken FLASH/EEPROM programming in the AVRISP-MKII clone project when writing in non-paged mode and the polling byte cannot be used + * - Fixed ISR definition conflict in the XPLAIN bridge between the software UART and the AVRISP-MKII ISP modules + * - Fixed USBtoSerial and XPLAINBridge demos discarding data from the PC if the send buffer becomes full + * - Fixed broken input in the MagStripe reader project due to an incorrect HID report descriptor + * - Fixed incorrect PollingIntervalMS values in the demo/project/bootloader endpoint descriptors (thanks to MCS Electronics) + * - Fixed AVRISP-MKII clone project not starting the target's program automatically after exiting TPI programming mode + * + * + * \section Sec_ChangeLog100807 Version 100807 + * New: + * - Added new ADC_DisableChannel() function (thanks to Mich Davis) + * - Added new VTARGET_REF_VOLTS and VTARGET_SCALE_FACTOR compile time defines to the AVRISP-MKII programmer project to set + * the VTARGET reference voltage and scale factor + * - Added new pgm_read_ptr() macro to Common.h for reading of pointers out of flash memory space + * - Added new SWAPENDIAN_16() and SWAPENDIAN_32() macros to Common.h for statically initialized variables at compile time + * - Added new Drivers/USB/LowLevel/Device.c file to house Device mode specific functions that are more complicated than simple macros + * - Added new AVRStudio 4 project files for all library demos, projects and bootloaders + * - Added ability to set the serial baud rate via the user's terminal in the XPLAINBridge project + * - Added new LUFA module variables for the different source modules in the core library makefile to simplify project makefiles + * - Added start of a new Test and Measurement class demo (thanks to Peter Lawrence) + * - Added new SPI_ORDER_* data order masks to the SPI peripheral driver + * - Added support to the AVRISP-MKII project for ISP speeds slower than 125KHz via a new software SPI driver + * - Added support for the new button/LED on the latest model USBTINY-MKII + * + * Changed: + * - The RingBuff library code has been replaced in the XPLAINBridge, Benito and USBtoSerial projects with an ultra lightweight + * ring buffer to help improve the reliability of the projects + * - The EEPROM stream read/write functions now use eeprom_update_byte() instead of eeprom_write_byte(), so that only + * changed bytes are written to EEPROM to preserve its lifespan + * - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile + * parameters to EEPROM to preserve its lifespan + * - Removed unused line encoding data and control requests from the CDC Bootloader code, to save space + * - Renamed SERIAL_STREAM_ASSERT() macro to STDOUT_ASSERT() + * - The USB_Device_IsRemoteWakeupSent() and USB_Device_IsUSBSuspended() macros have been deleted, as they are now obsolete + * - Rewrote the implementation of the SwapEndian_16() and SwapEndian_32() functions so that they compile down in most instances to + * minimal loads and stores rather than complicated shifts + * - The software UART in the XPLAINBridge has been largely altered to try to improve upon its performance and reliability + * - The USBtoSerial and Benito projects now flushes received data via a flush timer, so that several bytes can be transmitted at once + * - Removed the automated checking of event names in the demo, project and bootloader makefiles due to inconsistencies between the + * behaviour of the command line tools used to perform the check on each platform + * - Internal USB driver source files renamed and moved to ease future possible architecture ports + * - All internal pseudo-function macros have been converted to true inline functions for type-safety and readability + * - Changed LED indicator masks for the AVRISP-MKII project, so that there are defined roles for each LED + * - Altered the CDC Device and Host Class drivers' receive byte routines, so that no data is indicated by the function returning a + * negative value (thanks to Andreas Paulin) + * - Added auto flushing of OUT data to the CDC Host Class driver's USBTask function to automatically flush the send pipe buffer + * + * Fixed: + * - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from + * the last page of FLASH (thanks to Gerard Sexton) + * - Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM + * instead of the split write-only command (thanks to Tim Margush) + * - Fixed RNDISEthernet demos crashing when calculating checksums for Ethernet/TCP packets of more than ~500 bytes due to + * an overflow in the checksum calculation loop (thanks to Kevin Malec) + * - Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host + * - Fixed incorrect signature for the ATMEGA32U2 in the DFU bootloader (thanks to Axel Rohde) + * - Fixed internal device serial not being accessible on the ATMEGAXXU2 AVRs (thanks to Axel Rohde) + * - Fixed void pointer arithmetic in ConfigDescriptor.h breaking C++ compatibility (thanks to Michael Hennebry) + * - Fixed broken PDI EEPROM Section Erase functionality in the AVRISP-MKII project + * - Fixed USB_Device_SendRemoteWakeup() not working when the USB clock was frozen during USB bus suspend (thanks to Brian Dickman) + * - Fixed occasional lockup of the AVRISP project due to the timeout extension code incorrectly extending the timeout in + * PDI and TPI programming modes infinitely + * - Fixed HID device class driver still using PrevReportINBuffer for GetReport control requests even when it has been + * set to NULL by the user application (thanks to Axel Rohde) + * - Fixed MIDI_Device_SendEventPacket() not correctly waiting for the endpoint to become ready (thanks to Robin Green) + * - Fixed Benito and USBtoSerial projects not turning off the USART before reconfiguring it, which could cause incorrect + * operation to occur (thanks to Bob Paddock) + * - Fixed Serial peripheral driver not turning off the USART before reconfiguring it, which would cause incorrect operation + * to occur (thanks to Bob Paddock) + * - Fixed software application start command broken in the DFU class bootloader when dfu-programmer is used due to application + * start address corruption + * + * + * \section Sec_ChangeLog100513 Version 100513 + * New: + * - Added incomplete MIDIToneGenerator project + * - Added new Relay Controller Board project (thanks to OBinou) + * - Added board hardware driver support for the Teensy, USBTINY MKII, Benito and JM-DB-U2 lines of third party USB AVR boards + * - Added new ATTR_NO_INIT variable attribute for global variables that should not be automatically cleared on startup + * - Added new ENDPOINT_*_BusSuspended error code to the Endpoint function, so that the stream functions early-abort if the bus + * is suspended before or during a transfer + * - Added new EVENT_CDC_Device_BreakSent() event and CDC_Host_SendBreak() function to the Device and Host CDC Class drivers + * - Added ReportType parameter to the HID device class driver CALLBACK_HID_Device_ProcessHIDReport() function so that FEATURE + * reports from the host to the device can be correctly processed + * - Added ReportType parameter to the HID host class driver HID_Host_SendReportByID() function so that FEATURE reports can be + * issued to the attached device + * + * Changed: + * - AVRISP programmer project now has a more robust timeout system + * - Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond + * - Webserver project now uses the board LEDs to indicate the current IP configuration state + * - Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired + * - Increased throughput of the USBtoSerial demo on systems that send multiple bytes per packet (thanks to Opendous Inc.) + * - Double bank CDC endpoints in the XPLAIN Bridge project, re-enable JTAG once the mode selection pin has been sampled. + * - Standardized the naming scheme given to configuration descriptor sub-elements in the Device mode demos, bootloaders + * and projects + * - All Class Driver Host mode demos now correctly set the board LEDs to READY once the enumeration process has completed + * - Added LIBUSB_FILTERDRV_COMPAT compile time option to the AVRISP programmer project to make the code compatible with Windows + * builds of avrdude at the expense of AVRStudio compatibility + * - Removed two-step endpoint/pipe bank clear and switch sequence for smaller, faster endpoint/pipe code + * - The USB_Init() function no longer calls sei() - the user is now responsible for enabling interrupts when they are ready + * for them to be enabled (thanks to Andrei Krainev) + * - The Audio_Device_IsSampleReceived() and Audio_Device_IsReadyForNextSample() functions are now inline, to reduce overhead + * - Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be + * selected (thanks to Steffan Woltjer) + * - Removed software PDI and TPI emulation from the AVRISP-MKII clone project as it was very buggy and slow - PDI and TPI must + * now be implemented via separate programming headers + * - The CDC class bootloader now uses a watchdog reset rather than a soft-reset when exited to ensure that all hardware is + * properly reset to their defaults + * - Device mode class driver callbacks are now fired before the control request status stage is sent to prevent the host from + * timing out if another request is immediately fired and the device has a lengthy callback routine + * - The TeensyHID bootloader has been removed, per request from Paul at PJRC + * - The LIBUSB_FILTERDRV_COMPAT compile time option in the XPLAINBridge and AVRISP-MKII projects has been renamed + * LIBUSB_DRIVER_COMPAT, as it applies to all software on all platforms using the libUSB driver + * + * Fixed: + * - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly + * selected when the ISR completes + * - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address + * boundary is crossed during programming or read back (thanks to Gerard Sexton) + * - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled + * - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin + * - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register + * - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus + * - Fixed ADC routines not correctly returning the last result when multiple channels were read + * - Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the + * U4 series USB AVR parts + * - Fixed LowLevel MassStorage demo broken on the U2 series USB AVRs due to unsupported double-banked endpoint modes used + * - Fixed compilation error in the AudioInput demos when MICROPHONE_BIASED_TO_HALF_RAIL is defined (thanks to C. Scott Ananian) + * - Fixed incorrect definition of HID_ALIGN_DATA() causing incorrect HID report item data alignment + * - Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending + * a valid session ID to the device + * - Removed invalid dfu and flip related targets from the bootloaders - bootloaders can only be replaced with an external programmer + * - Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host + * - Fixed HID Device Class Driver not allocating a temporary buffer when the host requests a report via the control endpoint and the + * user has set the PrevReportINBuffer driver configuration element to NULL (thanks to Lars Noschinski) + * - Fixed device state not being reset to DEVICE_STATE_Default if the host sets a 0x00 device address + * - Fixed device not stalling configuration requests before the device's address has been set + * - Fixed possibility of internal signature retrieval being corrupted if an interrupt occurs during a signature byte + * read (thanks to Andrei Krainev) + * - Fixed device state not being reset back to the default state if the host sets the address to 0 + * - Fixed Set Configuration requests not being stalled until the host has set the device's address + * - Fixed Host mode HID class driver not sending the correct report type when HID_Host_SendReportByID() was called and the + * HID_HOST_BOOT_PROTOCOL_ONLY compile time option is set + * - Fixed INTERRUPT_CONTROL_ENDPOINT compile time option preventing other interrupts from occurring while the control endpoint + * request is being processed, causing possible lockups if a USB interrupt occurs during a transfer + * - Remove incorrect Abstract Call Management class specific descriptor from the CDC demos, bootloaders and projects + * + * + * \section Sec_ChangeLog100219 Version 100219 + * + * New: + * - Added TPI programming support for 6-pin ATTINY devices to the AVRISP programmer project (thanks to Tom Light) + * - Added command timeout counter to the AVRISP project so that the device no longer freezes when incorrectly connected + * to a target + * - Added new TemperatureDataLogger application, a USB data logger which writes to the device's dataflash and appears to + * the host as a standard Mass Storage device when inserted + * - Added MIDI event packing support to the MIDI Device and Host mode Class drivers, allowing for multiple MIDI events to + * sent or received in packed form in a single USB packet + * - Added new MIDI send buffer flush routines to the MIDI Device and Host mode Class drivers, to flush packed events + * - Added master mode hardware TWI driver for easy TWI peripheral control + * - Added ADC MUX masks for the standard ADC input channels on all AVR models with an ADC, altered demos to use these masks + * as on some models, the channel number is not identical to its single-ended ADC MUX mask + * - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library + * - New BOARD value option BOARD_NONE (equivalent to not specifying BOARD) which will remove all board hardware drivers which + * do not adversely affect the code operation (currently only the LEDs driver) + * - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) and LED report masks (KEYBOARD_LED_*) to the HID class driver and + * Keyboard demos + * - Added .5MHz recovery clock to the AVRISP programmer project when in ISP programming mode to correct mis-set fuses + * + * Changed: + * - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors + * - Renamed the AVRISP project folder to AVRISP-MKII to reduce confusion + * - Renamed the RESET_LINE_* makefile tokens in the AVRISP MKII Project to AUX_LINE_*, as they are not always used for target + * reset + * - Changed over the MassStorageKeyboard Class driver device demo to use Start of Frame events rather than a timer to keep track + * of elapsed milliseconds + * - Inlined currently unused (but standardized) maintenance functions in the Device and Host Class drivers to save space + * - The XPLAINBridge project now selects between a USB to Serial bridge and a PDI programmer on startup, reading the JTAG port's + * TDI pin to determine which mode to use + * - Removed the stream example code from the Low Level VirtualSerial demos, as they were buggy and only served to add clutter + * + * Fixed: + * - Fixed AVRISP project not able to enter programming mode when ISP protocol is used + * - Fixed AVRISP PDI race condition where the guard time between direction changes could be interpreted as a start bit + * - Fixed ADC_IsReadingComplete() returning an inverted result + * - Fixed blocking CDC streams not aborting when the host is disconnected + * - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands + * - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa) + * - Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos (thanks to Renaud Cerrato) + * - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers + * - Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders + * - Fixed Benito project not resetting the target AVR automatically when programming has completed + * - Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming + * ranges are specified (thanks to Thomas Bleeker) + * - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two separate pipes, not one half-duplex pipe + * - Fixed Pipe_IsEndpointBound() not taking the endpoint's direction into account + * - Fixed EEPROM and FLASH ISP programming in the AVRISP project + * - Fixed incorrect values of USB_CONFIG_ATTR_SELFPOWERED and USB_CONFIG_ATTR_REMOTEWAKEUP tokens (thanks to Claus Christensen) + * - Fixed SerialStream driver blocking while waiting for characters to be received instead of returning EOF + * - Fixed SerialStream driver not setting stdin to the created serial stream (thanks to Mike Alexander) + * - Fixed USB_GetHIDReportSize() returning the number of bits in the specified report instead of bytes + * - Fixed AVRISP project not extending the command delay after each successful page/word/byte program + * - Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baud rates (thanks to Renaud Cerrato) + * + * + * \section Sec_ChangeLog091223 Version 091223 + * + * New: + * - Added activity LED indicators to the AVRISP project to indicate when the device is busy processing a command + * - The USB target family and allowable USB mode tokens are now public and documented (USB_CAN_BE_*, USB_SERIES_*_AVR) + * - Added new XPLAIN USB to Serial Bridge project (thanks to John Steggall for initial proof-of-concept, David Prentice + * and Peter Danneger for revised software USART code) + * - Added new RNDIS Ethernet Host LowLevel demo + * - Added new RNDIS Ethernet Host Class Driver + * - Added new RNDIS Ethernet Host ClassDriver demo + * - Added CDC_Host_Flush() function to the CDC Host Class driver to flush sent data to the attached device + * - Added PDI programming support for XMEGA devices to the AVRISP programmer project (thanks to Justin Mattair) + * - Added support for the XPLAIN board Dataflash, with new XPLAIN_REV1 board target for the different dataflash used + * on the first revision boards compared to the one mounted on later revisions + * - Added new HID_ALIGN_DATA() macro to return the pre-retrieved value of a HID report item, left-aligned to a given datatype + * - Added new PreviousValue to the HID Report Parser report item structure, for easy monitoring of previous report item values + * - Added new EVK527 board target + * - Added new USB_Host_GetDeviceStringDescriptor() convenience function + * - Added new LEDNotification project to the library, to give a visual LED notification on new events from the host + * - Added new NO_DEVICE_REMOTE_WAKEUP and NO_DEVICE_SELF_POWER compile time options + * + * Changed: + * - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of key codes + * as this relied on non-standard OS driver behaviour to repeat key groups + * - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class + * driver common defines, rather than being defined in the Host mode Class driver section only + * - The USB_MODE_HOST token is now defined even when host mode is not available + * - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to + * indicate the report type to generate + * - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function + * is called when no host/device is connected where possible + * - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line + * with the rest of the library error codes + * - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero, + * which some devices use instead of Note Off messages (thanks to Robin Green) + * - The CDC demos are now named "VirtualSerial" instead to indicate the demos' function rather than its implemented USB class, + * to reduce confusion and to be in line with the rest of the LUFA demos + * - The SImage_Host_SendBlockHeader() and SImage_Host_ReceiveBlockHeader() Still Image Host Class driver functions are now public + * + * Fixed: + * - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver + * - Fixed incorrect values for REPORT_ITEM_TYPE_* enum values causing corrupt data in the HID Host Parser + * - Fixed misnamed SI_Host_USBTask() and SI_Host_ConfigurePipes() functions + * - Fixed broken USB_GetNextDescriptor() function causing the descriptor to jump ahead double the expected amount + * - Fixed Pipe_IsEndpointBound() not masking the given Endpoint Address against PIPE_EPNUM_MASK + * - Fixed host state machine not enabling Auto VBUS mode when HOST_DEVICE_SETTLE_DELAY_MS is set to zero + * - Fixed misnamed Pipe_SetPipeToken() macro for setting a pipe's direction + * - Fixed CDCHost failing on devices with bidirectional endpoints + * - Fixed USB driver failing to define the PLL prescaler mask for the ATMEGA8U2 and ATMEGA16U2 + * - Fixed HID Parser not distributing the Usage Min and Usage Max values across an array of report items + * - Fixed Mass Storage Host Class driver and Low Level demo not clearing the error condition if an attached device returns a + * STALL to a GET MAX LUN request (thanks to Martin Luxen) + * - Fixed TeensyHID bootloader not properly shutting down the USB interface to trigger a disconnection on the host before resetting + * - Fixed MassStorageHost Class driver demo not having USB_STREAM_TIMEOUT_MS compile time option set properly to prevent slow + * devices from timing out the data pipes + * - Fixed the definition of the Endpoint_BytesInEndpoint() macro for the U4 series AVR parts + * - Fixed MIDI host Class driver MIDI_Host_SendEventPacket() routine not properly checking for Pipe ready before writing + * - Fixed use of deprecated struct initializers, removed library unused parameter warnings when compiled with -Wextra enabled + * - Fixed Still Image Host Class driver truncating the PIMA response code (thanks to Daniel Seibert) + * - Fixed USB_CurrentMode not being reset to USB_MODE_NONE when the USB interface is shut down and both Host and Device modes can be + * used (thanks to Daniel Levy) + * - Fixed TeensyHID bootloader not enumerating to the host correctly (thanks to Clint Fisher) + * - Fixed AVRISP project timeouts not checking for the correct timeout period (thanks to Carl Ott) + * - Fixed STK525 Dataflash driver using incorrect bit-shifting for Dataflash addresses (thanks to Tim Mitchell) + * + * + * \section Sec_ChangeLog091122 Version 091122 + * + * New: + * - Added new Dual Role Keyboard/Mouse demo + * - Added new HID_HOST_BOOT_PROTOCOL_ONLY compile time token to reduce the size of the HID Host Class driver when + * Report protocol is not needed + * - Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver + * - 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 + * - Added optional support for double banked endpoints and pipes in the Device and Host mode Class drivers + * - Added new stream creation function to the CDC Class drivers, to easily make standard I/O streams from CDC Class driver instances + * + * Changed: + * - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for syntax errors in the library + * - MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs + * - Cleanups to the Device mode Mass Storage demo application SCSI routines + * - Changed Audio Class driver sample read/write functions to be inline, to reduce the number of cycles needed to transfer + * samples to and from the device (allowing more time for sample processing and output) + * - Audio class Device mode demos now work at both 16MHz and 8MHz, rather than just at 8MHz + * - The previous USBtoSerial demo has been moved into the projects directory, as it was just a modified CDC demo + * - The Endpoint/Pipe functions now use the const qualifier on the input buffer + * - Changed the CALLBACK_HIDParser_FilterHIDReportItem() callback to pass a HID_ReportItem_t rather than just the current + * item's attributes, to expose more information on the item (including it's type, collection path, etc.) + * - Changed MouseHostWithParser demos to check that the report items have a Mouse usage collection as a parent at some point, + * to prevent Joysticks from enumerating with the demo + * - Corrected the name of the misnamed USB_GetDeviceConfigDescriptor() function to USB_Host_GetDeviceConfigDescriptor(). + * - Keyboard LowLevel/ClassDriver demos now support multiple simultaneous key presses (up to 6) per report + * + * Fixed: + * - Fixed PrinterHost demo returning invalid Device ID data when the attached device does not have a + * device ID (thanks to Andrei Krainev) + * - Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons easier + * - Fixed issue in the HID Host class driver's HID_Host_SendReportByID() routine using the incorrect mode (control/pipe) + * to send report to the attached device + * - Fixed ClassDriver AudioOutput device demo not selecting an audio output mode + * - Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos' descriptors + * - Fixed incorrect event name rule in demo/project/bootloader makefiles + * - Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called + * - Corrected HID descriptor in the Joystick Device demos - buttons should be placed outside the pointer collection + * - Fixed HID report parser collection paths invalid due to misplaced semicolon in the free path item search loop + * - Fixed HID host Class driver report send/receive report broken when issued through the control pipe + * - Fixed HOST_STATE_AS_GPIOR compile time option being ignored when in host mode (thanks to David Lyons) + * - Fixed LowLevel Keyboard demo not saving the issues report only after it has been sent to the host + * - Fixed Endpoint_Write_Control_Stream_* functions not sending a terminating IN when given data Length is zero + * + * + * \section Sec_ChangeLog090924 Version 090924 + * + * New: + * - Added new host mode class drivers and matching demos to the library for rapid application development + * - Added flag to the HID report parser to indicate if a device has multiple reports + * - Added new EVENT_USB_Device_StartOfFrame() event, controlled by the new USB_Device_EnableSOFEvents() and + * USB_Device_DisableSOFEvents() macros to give bus-synchronized millisecond interrupts when in USB device mode + * - Added new Endpoint_SetEndpointDirection() macro for bidirectional endpoints + * - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer + * - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use + * - Added new CDC_Device_Flush() command to the device mode CDC Class driver to flush Device->Host data + * - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set + * - Added new callback to the HID report parser, so that the user application can filter only the items it is interested + * in to be stored into the HIDReportInfo structure to save RAM + * - Added support for the officially recommended external peripheral layout for the BUMBLEB board (thanks to Dave Fletcher) + * - Added new Pipe_IsFrozen() macro to determine if the currently selected pipe is frozen + * - Added new USB_GetHIDReportSize() function to the HID report parser to retrieve the size of a given report by its ID + * - Added new combined Mass Storage and Keyboard demo (thanks to Matthias Hullin) + * + * Changed: + * - SetIdle requests to the HID device driver with a 0 idle period (send changes only) now only affect the requested + * HID interface within the device, not all HID interfaces + * - Added explicit attribute masks to the device mode demos' descriptors + * - Added return values to the CDC and MIDI class driver transmit functions + * - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size + * - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability + * - Added new "Common" section to the class drivers, to hold all mode-independent definitions for clarity + * - Moved SCSI command/sense constants into the Mass Storage Class driver, instead of the user-code + * - Altered the SCSI commands in the LowLevel Mass Storage Host to save on FLASH space by reducing function calls + * - Changed the parameters and behaviour of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks + * and data validations internally, to simplify user code + * - Changed HIDParser to only zero out important values in the Parsed HID Report Item Information structure to save cycles + * - The HID report parser now always processed FEATURE items - HID_ENABLE_FEATURE_PROCESSING token now has no effect + * - The HID report parser now always ignores constant-data items, HID_INCLUDE_CONSTANT_DATA_ITEMS token now has no effect + * - The Benito Programmer project now has its own unique VID/PID pair allocated from the Atmel donated LUFA VID/PID pool + * - Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names + * are used in a project + * - The HID Report Parser now gives information on the total length of each report within a HID interface + * - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate USB_Descriptor_* and + * USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so both may be used + * + * Fixed: + * - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the + * endpoint's bank + * - Fixed swapped parameters in the HID state memory copy call while processing a HID PUSH item in the HID report parser + * - Fixed memory corruption HID report parser when too many COLLECTION or PUSH items were processed + * - Fixed HID report parser not resetting the FEATURE item count when a REPORT ID item is encountered + * - Fixed USBtoSerial demos not reading in UDR1 when the USART receives data but the USB interface is not enumerated, + * causing continuous USART receive interrupts + * - Fixed misspelled event name in the Class driver USBtoSerial demo, preventing correct operation + * - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient + * - Added hardware USART receive interrupt and software buffering to the Benito project to ensure received data is not + * missed or corrupted + * - Fixed Device mode HID Class driver always sending IN packets, even when nothing to report + * - Fixed Device mode HID Class driver not explicitly initializing the ReportSize parameter to zero before calling callback + * routine, so that ignored callbacks don't cause incorrect data to be sent + * - Fixed StillImageHost not correctly freezing and unfreezing data pipes while waiting for a response block header + * - Fixed error in the PrinterHost demo preventing the full page data from being sent to the attached device (thanks to John Andrews) + * - Fixed CDC based demos and projects' INF driver files under 64 bit versions of Windows (thanks to Ronny Hanson, Thomas Bleeker) + * - Re-add in missing flip, flip-ee, dfu and dfu-ee targets to project makefiles (thanks to Opendous Inc.) + * - Fix allowable F_CPU values comment in project makefiles to more accurately reflect the allowable values on the USB AVRs + * - Fixed DFU and CDC class bootloaders on the series 2 USB AVRs, corrected invalid signatures, added support for the new + * ATMEGAxx2 series 2 variant AVRs to the DFU bootloader + * - Fixed Low Level USBtoSerial demo not storing received characters (thanks to Michael Cooper) + * - Fixed MIDI Device Class driver not sending/receiving MIDI packets of the correct size (thanks to Thomas Bleeker) + * + * + * \section Sec_ChangeLog090810 Version 090810 + * + * New: + * - Added new device class drivers and matching demos to the library for rapid application development + * - Added new PrinterHost demo (thanks to John Andrews) + * - Added USB Missile Launcher project, submitted by Dave Fletcher + * - Added new Benito Arduino Programmer project + * - Added incomplete device and host mode demos for later enhancement + * - Updated MassStorage device block write routines to use ping-pong Dataflash buffering to increase throughput by around 30% + * - Error status LEDs shown when device endpoint configuration fails to complete in all demos and projects + * - Added new USB_Host_SetDeviceConfiguration() convenience function for easy configuration selection of devices while in USB + * host mode + * - Added new USB_Host_ClearPipeStall() convenience function to clear a stall condition on an attached device's endpoint + * - Added new USB_Host_GetDeviceDescriptor() convenience function to retrieve the attached device's Device descriptor + * - Added new Endpoint_ClearStatusStage() convenience function to assist with the status stages of control transfers + * - Added new USE_INTERNAL_SERIAL define for using the unique serial numbers in some AVR models as the USB device's serial number, + * added NO_INTERNAL_SERIAL compile time option to turn off new serial number reading code + * - Added new DATAFLASH_CHIP_MASK() macro to the Dataflash driver, which returns the Dataflash select mask for the given chip index + * - Added new HOST_STATE_WaitForDeviceRemoval host state machine state for non-blocking disabling of device communications until the + * device has been removed (for use when an error occurs or communications with the device have completed) + * - Added new FAST_STREAM_TRANSFERS compile time option for faster stream transfers via multiple bytes copied per stream loop + * - Added stdio stream demo code to the CDC device demos, to show how to create standard streams out of the virtual serial ports + * - Added new EEPROM and FLASH buffer versions of the Endpoint and Pipe stream functions + * - Added new USE_FLASH_DESCRIPTORS and FIXED_NUM_CONFIGURATIONS compile time options + * - Added support for the new ATMEGA32U2, ATMEGA16U2 and ATMEGA8U2 AVR models + * - Added new USB_DeviceState variable to keep track of the current Device mode USB state + * - Added new LEDs_ToggleLEDs() function to the LEDs driver + * - Added new Pipe_BoundEndpointNumber() and Pipe_IsEndpointBound() functions + * - Added new DEVICE_STATE_AS_GPIOR and HOST_STATE_AS_GPIOR compile time options + * - Added 404 Not Found errors to the webserver in the RNDIS demos to indicate invalid URLs + * + * Changed: + * - Deprecated pseudo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused) + * - The device-mode CALLBACK_USB_GetDescriptor() function now has an extra parameter so that the memory space in which the requested + * descriptor is located can be specified. This means that descriptors can now be located in multiple memory spaces within a device. + * - Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality + * - Removed USB_IsSuspended global - test USB_DeviceState against DEVICE_STATE_Suspended instead + * - Extended USB_GetDeviceConfigDescriptor() routine to require the configuration number within the device to fetch + * - Dataflash_WaitWhileBusy() now always ensures that the dataflash is ready for the next command immediately after returning, + * no need to call Dataflash_ToggleSelectedChipCS() afterwards + * - Low level API MIDI device demo no longer blocks if a note change event is sent while the endpoint is not ready + * - Pipe_GetErrorFlags() now returns additional error flags for overflow and underflow errors + * - Pipe stream functions now automatically set the correct pipe token, so that bidirectional pipes can be used + * - Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling + * the existing Pipe_SetFiniteINRequests() function + * - Changed F_USB entries in project makefiles to alias to F_CPU by default, as this is the most common case + * - Host mode demos now use sane terminal escape codes, so that text is always readable and events/program output is visually distinguished + * from one another using foreground colours + * - Internal per-device preprocessing conditions changed to per-device series rather than per-controller group for finer-grain + * internal control + * - Interrupts are no longer disabled during the processing of Control Requests on the default endpoint while in device mode + * - AudioOutput demos now always output to board LEDs, regardless of output mode (removed AUDIO_OUT_LEDS project option) + * - Removed SINGLE_DEVICE_CONFIGURATION compile time option in favor of the new FIXED_NUM_CONFIGURATIONS option so that the exact number + * of device configurations can be defined statically + * - Removed VBUS events, as they are already exposed to the user application via the regular device connection and disconnection events + * - Renamed and altered existing events to properly separate out Host and Device mode events + * - All demos switched over from GNU99 standards mode to C99 standards mode, to reduce the dependencies on GCC-only language extensions + * + * Fixed: + * - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed to fix + * bootloaders on some of the USB AVR devices where avr-libc erroneously defines RAMPZ + * - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived() + * to only unfreeze and check one data pipe at a time) to prevent incorrect device enumerations and freezes while transferring data + * - Make Pipe_ConfigurePipe() mask the given endpoint number against PIPE_EPNUM_MASK to ensure the endpoint IN direction bit is + * cleared to prevent endpoint type corruption + * - Fixed issue opening CDC-ACM ports on hosts when the CDC device tries to send data before the host has set the line encoding + * - Fixed USB_OPT_MANUAL_PLL option being ignored during device disconnects on some models (thanks to Brian Dickman) + * - Fixed documentation mentioning Pipe_GetCurrentToken() function when correct function name is Pipe_GetPipeToken() + * - Fixed ADC driver for the ATMEGA32U4 and ATMEGA16U4 (thanks to Opendous Inc.) + * - Fixed CDCHost demo unfreezing the pipes at the point of configuration, rather than use + * - Fixed MassStorage demo not clearing the reset flag when a Mass Storage Reset is issued while not processing a command + * - Fixed USB_Host_SendControlRequest() not re-suspending the USB bus when initial device ready-wait fails + * - Fixed USB Pad regulator not being disabled on some AVR models when the USB_OPT_REG_DISABLED option is used + * - Fixed Host mode to Device mode UID change not causing a USB Disconnect event when a device was connected + * - Fixed Mouse/Keyboard demos not performing the correct arithmetic on the Idle period at the right times (thanks to Brian Dickman) + * - Fixed GenericHID failing HID class tests due to incorrect Logical Minimum and Logical Maximum values (thanks to Soren Greiner) + * - Fixed incorrect PIPE_EPNUM_MASK mask causing pipe failures on devices with endpoint addresses of 8 and above (thanks to John Andrews) + * - Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits + * - Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered + * - Fixed incorrect BUTTONS_BUTTON1 for the STK526 target + * - Fixed RNDIS demos freezing when more than one connection was attempted simultaneously, causing memory corruption + * - Fixed USBtoSerial demo receiving noise from the USART due to pull-up not being enabled + * + * + * \section Sec_ChangeLog090605 Version 090605 + * + * - Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data + * - Fixed documentation showing incorrect USB mode support on the supported AVRs list + * - Fixed RNDISEthernet not working under Linux due to Linux requiring an "optional" RNDIS request which was unhandled + * - Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman) + * - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues + * - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman) + * - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token + * - Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC + * interface is skipped + * - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype + * inside the library that is able to hold their defined value to save space + * - Removed DESCRIPTOR_ADDRESS() macro as it was largely superfluous and only served to obfuscate code + * - Rewritten event system to remove all macros, to make user code clearer + * - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley) + * - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code + * - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code + * - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed + * - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill) + * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the + * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preparation for the new USB class APIs + * - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure + * - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt + * - Fixed possible enumeration errors from spin-loops which may fail to exit if the USB connection is severed before the exit condition + * becomes true + * + * + * \section Sec_ChangeLog090510 Version 090510 + * + * - Added new GenericHIDHost demo + * - Corrections to the KeyboardHost and MouseHost demos' pipe handling to freeze and unfreeze the data pipes at the point of use + * - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR + * - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile + * time options + * - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected + * - Added new PIMA_DATA_SIZE() define to the Still Image Host demo + * - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the + * extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus() + * to early-abort (thanks to Dmitry Maksimov) + * - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory, + * where they are more suited + * - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the + * code without having to be itself patched and recompiled first + * - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to + * outdated avr-libc versions. + * - Added support to the CDCHost demo for devices with multiple CDC interfaces which are not the correct ACM type preceding the desired + * ACM CDC interface + * - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen) + * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley) + * - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint + * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet, + * and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis) + * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type + * pipes can be used with the function + * - The USB Host management task now saves and restores the currently selected pipe before and after the task completes + * - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei Krainev) + * - Removed Endpoint_ClearCurrentBank() and Pipe_ClearCurrentBank() in favor of new Endpoint_ClearIN(), Endpoint_ClearOUT(), + * Pipe_ClearIN() and Pipe_ClearOUT() macros (done to allow for the detection of packets of zero length) + * - Renamed *_ReadWriteAllowed() macros to *_IsReadWriteAllowed() to remain consistent with the rest of the LUFA API + * - Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(), Endpoint_ClearSetupReceived() macro has been + * renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the + * Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe + * bank management API + * - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG) + * - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity + * - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity + * - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway + * - Renamed the main Drivers/AT90USBXXX directory to Drivers/Peripheral, renamed the Serial_Stream driver to SerialStream + * - Fixed CDC and USBtoSerial demos freezing where buffers were full while still transmitting or receiving (thanks to Peter Hand) + * - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the + * device descriptor + * - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name + * - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman) + * - Capitalized the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and + * DSearch_Comp_Return_ErrorCodes_t enums + * - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums + * - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to + * USB_INITERROR_NoUSBModeSpecified + * - Renamed USB_PowerOnFail event to USB_InitFailure + * - Renamed OTG.h header functions to be more consistent with the rest of the library API + * - Changed over all deprecated GCC structure tag initializers to the standardized C99 format (thanks to Mike Alexander) + * - USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode + * rather than having the library pass only partially read header data to the application + * - The USB_UnhandledControlPacket event has had its parameters removed, in favor of accessing the new USB_ControlRequest structure + * - The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent + * - Fixed USB_RemoteWakeupEnabled flag never being set (the REMOTE WAKEUP Set Feature request was not being handled) + * - Renamed the FEATURELESS_CONTROL_ONLY_DEVICE compile-time token to CONTROL_ONLY_DEVICE + * - Endpoint configuration is now refined to give better output when all configurations have static inputs - removed the now useless + * STATIC_ENDPOINT_CONFIGURATION compile time token + * - Fixed SPI driver init function not clearing SPI2X bit when not needed + * - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex) + * - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus() + * - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke) + * - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given + * wLength value when reading in the device descriptor + * - Fixed missing semicolon in the ATAVRUSBRF01 LED board driver code (thanks to Morten Lund) + * - Changed LED board driver code to define dummy LED masks for the first four board LEDs, so that user code can be compiled for boards + * with less than four LEDs without code modifications (thanks to Morten Lund) + * - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button + * - Serial driver now correctly calculates the baud register value when in double speed mode + * - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values + * + * + * \section Sec_ChangeLog090401 Version 090401 + * + * - Fixed MagStripe project configuration descriptor containing an unused (blank) endpoint descriptor + * - Incorporated makefile changes by Denver Gingerich to retain compatibility with stock (non-WinAVR) AVR-GCC installations + * - Fixed makefile EEPROM programming targets programming FLASH data in addition to EEPROM data + * - LUFA devices now enumerate correctly with LUFA hosts + * - Fixed Configuration Descriptor search routine freezing when a comparator returned a failure + * - Removed HID report item serial dump in the MouseHostWithParser and KeyboardHostWithParser - useful only for debugging, and + * slowed down the enumeration of HID devices too much + * - Increased the number of bits per track which can be read in the MagStripe project to 8192 when compiled for the AT90USBXXX6/7 + * - Fixed KeyboardMouse demo discarding the wIndex value in the REQ_GetReport request + * - USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission + * next time the device is attached to a host. + * - Added new F_USB compile time constant to the library and makefiles, to give the raw input clock (used to feed the PLL before any + * clock prescaling is performed) frequency, so that the PLL prescale mask can be determined + * - Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with + * badly designed hosts or devices which greatly exceed the USB specification limits + * - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices + * - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions + * - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances + * - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions + * - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson) + * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded + * to also remove parts of the Get Status chapter 9 request to further reduce code usage + * - Makefile updated to include output giving the currently selected BOARD parameter value + * - Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks + * to Kenneth Clubb) + * - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy + * interfacing with a FAT library for dataflash file level access + * - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience + * - Fixed typos in the SPI driver SPI_SPEED_FCPU_DIV_64 and SPI_SPEED_FCPU_DIV_128 masks (thanks to Markus Zocholl) + * - Keyboard and Mouse device demos (normal, data interrupt and fully interrupt driven) combined into unified keyboard and mouse demos + * - Keyboard and Mouse host demos (normal and data interrupt driven) combined into unified keyboard and mouse demos + * - Removed AVRISP_Programmer project due to code quality concerns + * - Fixed CDC demo not sending an empty packet after each transfer to prevent the host from buffering incoming data + * - Fixed documentation typos and preprocessor checks relating to misspellings of the USE_RAM_DESCRIPTORS token (thanks to Ian Gregg) + * - Fixed USBTask.h not conditionally including HostChapter9.h only when USB_CAN_BE_HOST is defined (thanks to Ian Gregg) + * - Fixed incorrect ADC driver init register manipulation (thanks to Tobias) + * - Added new GenericHID device demo application + * - Fixed Still Image Host SImage_SendData() function not clearing the pipe bank after sending data + * + * + * \section Sec_ChangeLog090209 Version 090209 + * + * - PWM timer mode in AudioOut demo changed to Fast PWM for speed + * - Updated Magstripe project to work with the latest hardware revision + * - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups + * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to + * Nate Lawson) + * - Fixed serious data corruption issue in MassStorage demo dataflash write routine + * - Added new NO_CLEARSET_FEATURE_REQUEST compile time token + * - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled + * - Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration + * - Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint + * - ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES + * - Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing + * - Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump + * - Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers + * - SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer + * - MassStorage demo changed to use new fast one-way SPI transfers to increase throughput + * - MassStorage handling of Mass Storage Reset class request improved + * - Altered MassStorage demo dataflash block read code for speed + * - Added USB_IsSuspended global flag + * - Simplified internal Dual Mode (OTG) USB library code to reduce code size + * - Extended stream timeout period to 100ms from 50ms + * - Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum + * - Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event + * - VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff + * - Simplified low level backend so that device/host mode initialization uses the same code paths + * - Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request + * - Removed buggy Telnet application from the RNDIS demo + * - Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c + * - Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c + * - Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol + * - Added new "dfu" and "flip" programming targets to project makefiles + * - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful + * - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value + * - Serial driver now sets Tx line as output, enables pull-up on Rx line + * - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled + * - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated + * - Fixed KeyboardHostWithParser demo linking against the wrong global variables + * - Completed doxygen documentation of remaining library bootloaders, demos and projects + * - Fixed incorrect bootloader start address in the TeensyHID bootloader + * - Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo + * - Replaced printf_P(PSTR("%c"), {Variable}) calls with putchar() for speed and size savings + * - Serial driver now accepts baud rates over 16-bits in size, added double speed flag option + * - Fixed incorrect callback abort return value in Pipe.c + * - Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.) + * - Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems + * - Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning + * each time the task runs to allow for other tasks to execute + * - Added support for the Atmel ATAVRUSBRF01 board + * - Added AVRISP Programmer Project, courtesy of Opendous Inc. + * - Fixed CDC Host demo not searching through both CDC interfaces for endpoints + * - Fixed incorrect Product String descriptor length in the DFU class bootloader + * + * + * \section Sec_ChangeLog081224 Version 081224 + * + * - MyUSB name changed to LUFA, the Lightweight USB Framework for AVRs + * - Fixed Mass Storage Host demo's MassStore_SendCommand() delay in the incorrect place + * - Fixed USBtoSerial demo not calling ReconfigureUSART() after a change in the line encoding + * - Fixed infinite loop in host mode Host-to-Device control transfers with data stages + * - HID report parser now supports devices with multiple reports in one interface via Report IDs + * - Fixed RZUSBSTICK board LED driver header incorrect macro definition order causing compile errors + * - Calling USB_Init() when the USB interface is already configured now forces a complete interface reset + * and re-enumeration - fixes MyUSB DFU bootloader not switching to app code correctly when soft reset used + * - Fixed "No newline at end of file" warning when stream callbacks are enabled + * - DFU bootloader now uses fixed signature bytes per device, rather than reading them out dynamically for size + * - Added new FIXED_CONTROL_ENDPOINT_SIZE and USE_SINGLE_DEVICE_CONFIGURATION switches to statically define certain values to + * reduce compiled binary size + * - Added new NO_LIMITED_CONTROLLER_CONNECT switch to prevent the library from trying to determine bus connection + * state from the suspension and wake up events on the smaller USB AVRs + * - Added summary of all library compile time tokens to the documentation + * - Added overview of the LUFA scheduler to the documentation + * - Removed MANUAL_PLL_CONTROL compile time token, replaced with a mask for the USB_Init() Options parameter + * - CDC bootloader now uses the correct non-far or far versions of the pgm_* functions depending on if RAMPZ is defined + * - Doxygen documentation now contains documentation on all the projects, bootloaders and most demos included with the library + * - CDC bootloader now runs user application when USB disconnected rather than waiting for a hard reset + * - MouseHostWithParser and KeyboardHostWithParser now support multiple-report devices + * - RNDIS demo can now close connections correctly using the new TCP_APP_CLOSECONNECTION() macro - used in Webserver + * - Fixed the DFU bootloader, no longer freezes up when certain files are programmed into an AVR, made reading/writing faster + * - Fixed mouse/joystick up/down movements reversed - HID mouse X/Y coordinates use a left-handed coordinate system, not a normal + * right-handed system + * - Added stub code to the CDC and USBtoSerial demos showing how to read and set the RS-232 handshake lines - not currently used in + * the demos, but the example code and supporting defines are now in place + * - Interrupts are now disabled when processing a control request in device mode, to avoid exceeding the strict control request + * timing requirements. + * - All demos now use a central StatusUpdate() function rather than direct calls to the board LED functions, so that the demos can + * easily be altered to show different LED combinations (or do something else entirely) as the demo's status changes + * - Removed LED commands from the CDC bootloader, unused by most AVR910 programming software + * - Fixed RNDIS demo ICMP ping requests echoing back incorrect data + * - Added DHCP server code to RNDIS demo, allowing for hands-free auto configuration on any PC + * - Fixed DFU bootloader PID value for the ATMEGA16U4 AVR + * - Endpoint and Pipe configuration functions now return an error code indicating success or failure + * - USB Reset in device mode now resets and disables all device endpoints + * - Added intermediate states to the host mode state machine, reducing the USB task blocking time to no more than 1ms explicitly per + * invocation when in host mode + * - Added support for the ATMEGA32U6 microcontroller + * - Added STATIC_ENDPOINT_CONFIGURATION compile time option, enabled in the bootloaders to minimize space usage + * - Removed redundant code from the USB device GetStatus() chapter 9 processing routine + * - Added new TeensyHID bootloader, compatible with the Teensy HID protocol (http://www.pjrc.com/teensy/) + * - Versions are now numbered by release dates, rather than arbitrary major/minor revision numbers + * - USB_RemoteWakeupEnabled is now correctly set and cleared by SetFeature and ClearFeature requests from the host + * - Changed prototype of GetDescriptor, so that it now returns the descriptor size (or zero if the descriptor doesn't exist) + * rather than passing the size back to the caller through a parameter and returning a boolean + * + * + * \section Sec_ChangeLog153 Version 1.5.3 - Released 2nd October, 2008 + * + * - Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately + * - Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS) + * - Renamed bootloader directories to remove spaces, which were causing build problems on several OSes + * - Removed serial number strings from all but the MassStore demo where it is required - users were not + * modifying the code to either omit the descriptor or use a unique serial per device causing problems + * when multiple units of the same device were plugged in at the same time + * - AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host + * - Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo) + * - Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board + * driver creation easier + * - Extended MassStorage demo to support multiple LUNs, 2 by default + * - Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63 + * - Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled + * - Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly + * - Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values + * - Added DualCDC demo to demonstrate the use of Interface Association Descriptors + * - Added pipe NAK detection and clearing API + * - Added pipe status change (NAK, STALL, etc.) interrupt API + * - Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row + * - Host demos configuration descriptor routines now return a unique error code when the returned data does + * not have a valid configuration descriptor header + * - Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions + * - Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token + * - All demos now pass the USB.org automated Chapter 9 device compliance tests + * - All HID demos now pass the USB.org automated HID compliance tests + * - Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems + * - Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks + * - Mass Storage demo dataflash management routines changed to use the endpoint stream functions + * - Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file + * - Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes + * are reflected in the hardware (change was previously lost) + * + * + * \section Sec_ChangeLog152 Version 1.5.2 - Released 31st July, 2008 + * + * - Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types) + * - Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS + * implementations (where the notification endpoint is ignored in favor of polling the control endpoint) + * - Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token + * - Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo + * - Fixed DFU bootloader exit causing programming software to complain about failed writes + * - Fixed DFU bootloader EEPROM programming mode wiping first flash page + * - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process) + * - Added support for the ATMEGA16U4 AVR microcontroller + * - Library license changed from LGPLv3 to MIT license + * + * + * \section Sec_ChangeLog151 Version 1.5.1 - Released 7th July, 2008 + * + * - Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event + * rather than the USB_DeviceAttached event + * - HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove + * any referenced but not created usages + * - Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(), + * USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline) + * - Fixed USBtoSerial demo not sending data, only receiving + * - Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems + * - ConfigDescriptor functions made normal, instead of static inline + * - Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases + * - Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs + * - Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic + * approach was buggy and caused problems + * - Bootloaders now compile with -fno-inline-small-functions option to reduce code size + * - Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases + * to be in line with the specification (isochronous endpoints MUST be double banked) + * - Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN + * - Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure + * - Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID + * devices) to prevent problems on hosts expecting the boot protocol functions to be supported + * - Added read/write control stream functions to Endpoint.h + * - Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly + * - Added RNDISEthernet demo application + * + * + * \section Sec_ChangeLog150 Version 1.5.0 - Released 10 June, 2008 + * + * - Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages + * - Added CDC Host demo application + * - Added KeyboardFullInt demo application + * - Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction + * size bits not required for the routines (improves compatibility with devices) + * - Fixed AudioInput demo - now correctly sends sampled audio to the host PC + * - Fixed AudioOutput demo once more -- apparently Windows requires endpoint packets to be >=192 bytes + * - Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes + * - Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser + * - Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder + * - Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler + * - Added Still Image Host demo application + * - The USB device task now restores the previously selected endpoint, allowing control requests to be transparently + * handled via interrupts while other endpoints are serviced through polling + * - Fixed device signature being sent in reverse order in the CDC bootloader + * - Host demos now have a separate ConfigDescriptor.c/.h file for configuration descriptor processing + * - HostWithParser demos now have a separate HIDReport.c/.h file for HID report processing and dumping + * - Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value + * - CDC demos now send empty packets after sending a full one to prevent buffering issues on the host + * - Updated demo descriptors to use VID/PID values donated by Atmel + * - Added DoxyGen documentation to the source files + * - Fixed Serial_IsCharReceived() definition, was previously reversed + * - Removed separate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead + * - Removed unused Device Qualifier descriptor structure + * - Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged + * - Fixed MassStorageHost demo reading in the block data in reverse + * - Removed outdated typedefs in StdRequestType.h, superseded by the macro masks + * - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products + * - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration + * - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete + * - The value of USB_HOST_TIMEOUT_MS can now be overridden in the user project makefile to a custom fixed timeout value + * - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus() + * and USB_Host_IsBusSuspended() + * - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now + * Pipe_SetInterruptPeriod() to use the correct terminology + * - UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC + * Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays + * of ASCII characters + * - Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR + * model was given as the bank size + * - HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array + * - Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors + * - Cleaned up GetDescriptor device chapter 9 handler function + * - Added GET_REPORT class specific request to HID demos to make them complaint to the HID class + * - Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed + * - Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons + * - All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.) + * - Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names + * + * + * \section Sec_ChangeLog141 Version 1.4.1 - Released 19 May, 2008 + * + * - Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo + * - Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly + * - Corrected version number in Version.h + * + * + * \section Sec_ChangeLog140 Version 1.4.0 - Released 5 May, 2008 + * + * - Added HID Report Parser API to the library + * - Added Mouse and Keyboard host demo applications, using the new HID report parser engine + * - Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device + * - Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos + * - Added MIDI device demo application to the library + * - Fixed problem preventing USB devices from being resumed from a suspended state + * - Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol + * - Added header to each demo application indicating the mode, class, subclass, standards used and supported speed + * - Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or + * PIPE_PIPENUM_MASK - this should be manually added to code which requires it + * - Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time + * - Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor() + * to USB_Host_GetNextDescriptor() + * - Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines + * - Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file + * - Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the + * new comparator API + * - Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct + * big-endian for SCSI devices + * - Fixed macro/function naming consistency; USB_HOST is now USB_Host, USB_DEV is now USB_Device + * - Added better error reporting to host demos + * - Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls + * + * + * \section Sec_ChangeLog132 Version 1.3.2 - Released April 1st, 2008 + * + * - Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes + * are reflected in the hardware + * - Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the + * GetLineCoding request had an incorrect RequestType mask preventing it from being processed + * - Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full + * - Device control endpoint size is now determined from the device's descriptors rather than being fixed + * - Separated out SPI code into new SPI driver in AT90USBXXX driver directory + * - Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID + * - Added support for the RZUSBSTICK board + * - Bicolour driver removed in favor of generic LEDs driver + * - Added support for the ATMEGA32U4 AVR + * - Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL + * + * + * \section Sec_ChangeLog131 Version 1.3.1 - Released March 19th 2008 + * + * - Fixed USB to Serial demo - class value in the descriptors was incorrect + * - Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low + * speed mode devices to enumerate properly + * - USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work + * on USB AVRs with limited USB FIFO RAM + * - Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited + * USB device controller AVRs (AT90USB162, AT90USB82) to function correctly + * - Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output + * - Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile + * - Optimized Mass Storage demo for a little extra transfer speed + * - Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock + * - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions + * (including Big and Little Endian variants) + * - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file + * - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch) + * - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7) + * - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the + * directives in the datasheet + * - Fixed PLL prescaler defines for all AVR models and frequencies + * - Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions + * - Added interrupt driven keyboard and mouse device demos + * - Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code + * size savings + * - Added missing Pipe_GetCurrentPipe() macro to Pipe.h + * + * + * \section Sec_ChangeLog130 Version 1.3.0 - Released March 7th 2008 + * + * - Unnecessary control endpoint config removed from device mode + * - Fixed device standard request interpreter accidentally processing some class-specific requests + * - Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library + * to use descriptors stored in RAM or EEPROM rather than flash memory + * - All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader + * - USB_DEV_OPT_LOWSPEED option now works correctly + * - Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS + * compile time define + * - USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or + * if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options + * - USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS + * - Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the + * compiler can throw away the result more efficiently + * - Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be + * controlled by the new Scheduler_SetGroupTaskMode() routine + * - Added support for AT90USB162 and AT90USB82 AVR models + * - Added support for the STK525 and STK526 boards + * - Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and + * placing board drivers in {Application Directory}/Board/ + * - PLL is now stopped and USB clock is frozen when detached from host in device mode, to save power + * - Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY + * - Fixed USB_DEV_IsUSBSuspended() - now checks the correct register + * - Fixed data transfers to devices when in host mode + * - Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to + * USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with + * the real high speed mode, which is unavailable on the USB AVRs) + * + * + * \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008 + * + * - Added USB_DeviceEnumerationComplete event for host mode + * - Added new Scheduler_Init routine to prepare the scheduler, so that tasks can be started and + * stopped before the scheduler has been started (via Scheduler_Start) + * - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management + * task to be stopped when the USB is not connected to a host or device + * - All demos updated to stop the USB task when not in use via the appropriate USB events + * - Mass Storage Host demo application updated to function correctly with all USB flash disks + * - Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached + * device, and prints the first block as hexadecimal numbers rather than ASCII characters + * - Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags + * - Shifted error handling code in the host enum state machine to a single block, to reduce code complexity + * - Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing + * clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices + * - Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro + * + * + * \section Sec_ChangeLog130 Version 1.1.0 - Released January 25th 2008 + * + * - Fixed DCONNI interrupt being enabled accidentally after a USB reset + * - Fixed DDISCI interrupt not being disabled when a device is not connected + * - Added workaround for powerless pull-up devices causing false disconnect interrupts + * - Added USB_DeviceEnumerationFailed event for Host mode + * - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer + * pointer is passed + * - Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables + * dependant on size of memory parameters passed in via the user project's makefile + * - Fixed incorrect device reset routine being called in USBTask + * - Devices which do not connect within the standard 300mS are now supported + * - Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being + * started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects + * - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the + * need to have a task ID list + * - ID transition interrupt now raises the appropriate device/host disconnect event if device attached + * - Fixed double VBUS change (and VBUS -) event when detaching in device mode + * - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile + * - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and + * Endpoint_IsConfigured() after calling the config functions to determine success + */ + diff --git a/LUFA/DoxygenPages/CompileTimeTokens.txt b/LUFA/DoxygenPages/CompileTimeTokens.txt new file mode 100644 index 000000000..e96f7c163 --- /dev/null +++ b/LUFA/DoxygenPages/CompileTimeTokens.txt @@ -0,0 +1,208 @@ +/** \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. + */ + +/** \page Page_TokenSummary Summary of Compile Tokens + * + * The following lists all the possible tokens which can be defined in a project makefile, and passed to the + * compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behaviour, + * or remove features unused by a given application in order to save flash space. + * + * \note If the \c USE_LUFA_CONFIG_HEADER token is defined, the library will include a header file named \c LUFAConfig.h located + * in the user directory where the below compile time tokens may be defined. This allows for an alternative to makefile + * defined tokens for configuring the library. + * + * \section Sec_SummaryNonUSBTokens Non USB Related Tokens + * This section describes compile tokens which affect non-USB sections of the LUFA library. + * + * DISABLE_TERMINAL_CODES - (\ref Group_Terminal) - All Architectures \n + * If an application contains ANSI terminal control codes listed in TerminalCodes.h, it might be desired to remove them + * at compile time for use with a terminal which is non-ANSI control code aware, without modifying the source code. If + * this token is defined, all ANSI control codes in the application code from the TerminalCodes.h header are removed from + * the source code at compile time. + * + * + * \section Sec_SummaryUSBClassTokens USB Class Driver Related Tokens + * This section describes compile tokens which affect USB class-specific drivers in the LUFA library. + * + * HID_HOST_BOOT_PROTOCOL_ONLY - (\ref Group_USBClassHIDHost) - All Architectures \n + * By default, the USB HID Host class driver is designed to work with HID devices using either the Boot or Report HID + * communication protocols. On devices where the Report protocol is not used (i.e. in applications where only basic + * Mouse or Keyboard operation is desired, using boot compatible devices), the code responsible for the Report protocol + * mode can be removed to save space in the compiled application by defining this token. When defined, it is still necessary + * to explicitly put the attached device into Boot protocol mode via a call to \ref HID_Host_SetBootProtocol(). + * + * HID_STATETABLE_STACK_DEPTH=x - (\ref Group_HIDParser) - All Architectures \n + * Supported Architectures: All \n + * HID reports may contain PUSH and POP elements, to store and retrieve the current HID state table onto a stack. This + * allows for reports to save the state table before modifying it slightly for a data item, and then restore the previous + * state table in a compact manner. This token may be defined to a non-zero 8-bit value to give the maximum depth of the state + * table stack. If not defined, this defaults to the value indicated in the HID.h file documentation. + * + * HID_USAGE_STACK_DEPTH=x - (\ref Group_HIDParser) - All Architectures \n + * HID reports generally contain many USAGE elements, which are assigned to INPUT, OUTPUT and FEATURE items in succession + * when multiple items are defined at once (via REPORT COUNT elements). This allows for several items to be defined with + * different usages in a compact manner. This token may be defined to a non-zero 8-bit value to set the maximum depth of the + * usage stack, indicating the maximum number of USAGE items which can be stored temporarily until the next INPUT, OUTPUT + * and FEATURE item. If not defined, this defaults to the value indicated in the HID.h file documentation. + * + * HID_MAX_COLLECTIONS=x - (\ref Group_HIDParser) - All Architectures \n + * HID reports generally contain several COLLECTION elements, used to group related data items together. Collection information + * is stored separately in the processed usage structure (and referred to by the data elements in the structure) to save space. + * This token may be defined to a non-zero 8-bit value to set the maximum number of COLLECTION items which can be processed by the + * parser into the resultant processed report structure. If not defined, this defaults to the value indicated in the HID.h file + * documentation. + * + * HID_MAX_REPORTITEMS=x - (\ref Group_HIDParser) - All Architectures \n + * All HID reports contain one or more INPUT, OUTPUT and/or FEATURE items describing the data which can be sent to and from the HID + * device. Each item has associated usages, bit offsets in the item reports and other associated data indicating the manner in which + * the report data should be interpreted by the host. This token may be defined to a non-zero 8-bit value to set the maximum number of + * data elements which can be stored in the processed HID report structure, including INPUT, OUTPUT and (if enabled) FEATURE items. + * If a item has a multiple count (i.e. a REPORT COUNT of more than 1), each item in the report count is placed separately in the + * processed HID report table. If not defined, this defaults to the value indicated in the HID.h file documentation. + * + * HID_MAX_REPORT_IDS=x - (\ref Group_HIDParser) - All Architectures \n + * HID reports may contain several report IDs, to logically distinguish grouped device data from one another - for example, a combination + * keyboard and mouse might use report IDs to separate the keyboard reports from the mouse reports. In order to determine the size of each + * report, and thus know how many bytes must be read or written, the size of each report (IN, OUT and FEATURE) must be calculated and + * stored. This token may be defined to a non-zero 8-bit value to set the maximum number of report IDs in a device which can be processed + * and their sizes calculated/stored into the resultant processed report structure. If not defined, this defaults to the value indicated in + * the HID.h file documentation. + * + * NO_CLASS_DRIVER_AUTOFLUSH - (\ref Group_USBClassDrivers) - All Architectures \n + * Many of the device and host mode class drivers automatically flush any data waiting to be written to an interface, when the corresponding + * USB management task is executed. This is usually desirable to ensure that any queued data is sent as soon as possible once and new data is + * constructed in the main program loop. However, if flushing is to be controlled manually by the user application via the *_Flush() commands, + * the compile time token may be defined in the application's makefile to disable automatic flushing during calls to the class driver USB + * management tasks. + * + * \section Sec_SummaryUSBTokens General USB Driver Related Tokens + * This section describes compile tokens which affect USB driver stack as a whole in the LUFA library. + * + * ORDERED_EP_CONFIG - (\ref Group_EndpointManagement , \ref Group_PipeManagement) - AVR8, UC3 \n + * The USB AVRs do not allow for Endpoints and Pipes to be configured out of order; they must be configured in an ascending order to + * prevent data corruption issues. However, by default LUFA employs a workaround to allow for unordered Endpoint/Pipe initialization. This compile + * time token may be used to restrict the initialization order to ascending indexes only in exchange for a smaller compiled binary size. Use + * caution when applied to applications using the library USB Class drivers; the user application must ensure that all endpoints and pipes are + * allocated sequentially. + * + * USE_STATIC_OPTIONS=x - (\ref Group_USBManagement) - All Architectures \n + * By default, the USB_Init() function accepts dynamic options at runtime to alter the library behaviour, including whether the USB pad + * voltage regulator is enabled, and the device speed when in device mode. By defining this token to a mask comprised of the USB options + * mask defines usually passed as the Options parameter to USB_Init(), the resulting compiled binary can be decreased in size by removing + * the dynamic options code, and replacing it with the statically set options. When defined, the USB_Init() function no longer accepts an + * Options parameter. + * + * USB_DEVICE_ONLY - (\ref Group_USBManagement) - All Architectures \n + * For the USB AVR models supporting both device and host USB modes, the USB_Init() function contains a Mode parameter which specifies the + * mode the library should be initialized to. If only device mode is required, the code for USB host mode can be removed from the binary to + * save space. When defined, the USB_Init() function no longer accepts a Mode parameter. This define is irrelevant on smaller USB AVRs which + * do not support host mode. + * + * USB_HOST_ONLY - (\ref Group_USBManagement) - All Architectures \n + * Same as USB_DEVICE_ONLY, except the library is fixed to USB host mode rather than USB device mode. Not available on some USB AVR models. + * + * USB_STREAM_TIMEOUT_MS=x - (\ref Group_USBManagement) - All Architectures \n + * When endpoint and/or pipe stream functions are used, by default there is a timeout between each transfer which the connected device or host + * must satisfy, or the stream function aborts the remaining data transfer. This token may be defined to a non-zero 16-bit value to set the timeout + * period for stream transfers, specified in milliseconds. If not defined, the default value specified in LowLevel.h is used instead. + * + * NO_LIMITED_CONTROLLER_CONNECT - (\ref Group_Events) - AVR8 Only \n + * On the smaller USB AVRs, the USB controller lacks VBUS events to determine the physical connection state of the USB bus to a host. In lieu of + * VBUS events, the library attempts to determine the connection state via the bus suspension and wake up events instead. This however may be + * slightly inaccurate due to the possibility of the host suspending the bus while the device is still connected. If accurate connection status is + * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the USB_DeviceState global + * can be accurately set and the \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events manually raised by the RAISE_EVENT macro. + * When defined, this token disables the library's auto-detection of the connection state by the aforementioned suspension and wake up events. + * + * NO_SOF_EVENTS - (\ref Group_Events) - All Architectures \n + * By default, there exists a LUFA application event for the start of each USB frame while the USB bus is not suspended in either host or device mode. + * This event can be selectively enabled or disabled by calling the appropriate device or host mode function. When this compile time token is defined, + * the ability to receive USB Start of Frame events via the \ref EVENT_USB_Device_StartOfFrame() or \ref EVENT_USB_Host_StartOfFrame() events is removed, + * reducing the compiled program's binary size. + * + * \section Sec_SummaryUSBDeviceTokens USB Device Mode Driver Related Tokens + * This section describes compile tokens which affect USB driver stack of the LUFA library when used in Device mode. + * + * USE_RAM_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n + * Define this token to indicate to the USB driver that all device descriptors are stored in RAM, rather than being located in any one + * of the AVR's memory spaces. RAM descriptors may be desirable in applications where the descriptors need to be modified at runtime. + * + * USE_FLASH_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n + * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's FLASH memory rather than RAM. + * + * USE_EEPROM_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n + * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's EEPROM memory rather than RAM. + * + * NO_INTERNAL_SERIAL - (\ref Group_StdDescriptors) - All Architectures \n + * Some AVR models contain a unique serial number which can be used as the device serial number, while in device mode. This allows + * the host to uniquely identify the device regardless of if it is moved between USB ports on the same computer, allowing allocated + * resources (such as drivers, COM Port number allocations) to be preserved. This is not needed in many apps, and so the code that + * performs this task can be disabled by defining this option and passing it to the compiler via the -D switch. + * + * FIXED_CONTROL_ENDPOINT_SIZE=x - (\ref Group_EndpointManagement) - All Architectures \n + * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor. + * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if + * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be + * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled + * binary. + * + * DEVICE_STATE_AS_GPIOR - (\ref Group_Device) - AVR8 Only \n + * One of the most frequently used global variables in the stack is the USB_DeviceState global, which indicates the current state of + * the Device State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token + * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR + * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except + * implicitly via the library APIs. + * + * FIXED_NUM_CONFIGURATIONS=x - (\ref Group_Device) - All Architectures \n + * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces + * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in + * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this value may be fixed via this token in the project + * makefile to reduce the compiled size of the binary at the expense of flexibility. + * + * CONTROL_ONLY_DEVICE - (\ref Group_Device) - All Architectures \n + * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication + * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device + * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided. + * + * INTERRUPT_CONTROL_ENDPOINT - (\ref Group_USBManagement) - All Architectures \n + * Some applications prefer to not call the USB_USBTask() management task regularly while in device mode, as it can complicate code significantly. + * Instead, when device mode is used this token can be passed to the library via the -D switch to allow the library to manage the USB control + * endpoint entirely via USB controller interrupts asynchronously to the user application. When defined, USB_USBTask() does not need to be called + * when in USB device mode. + * + * NO_DEVICE_REMOTE_WAKEUP - (\ref Group_Device) - All Architectures \n + * Many devices do not require the use of the Remote Wakeup features of USB, used to wake up the USB host when suspended. On these devices, + * the code required to manage device Remote Wakeup can be disabled by defining this token and passing it to the library via the -D switch. + * + * NO_DEVICE_SELF_POWER - (\ref Group_Device) - All Architectures \n + * USB devices may be bus powered, self powered, or a combination of both. When a device can be both bus powered and self powered, the host may + * query the device to determine the current power source, via \ref USB_Device_CurrentlySelfPowered. For solely bus powered devices, this global + * and the code required to manage it may be disabled by passing this token to the library via the -D switch. + * + * + * \section Sec_SummaryUSBHostTokens USB Host Mode Driver Related Tokens + * + * This section describes compile tokens which affect USB driver stack of the LUFA library when used in Host mode. + * + * HOST_STATE_AS_GPIOR - (\ref Group_Host) - AVR8 Only \n + * One of the most frequently used global variables in the stack is the USB_HostState global, which indicates the current state of + * the Host State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token + * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR + * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except + * implicitly via the library APIs. + * + * USB_HOST_TIMEOUT_MS=x - (\ref Group_Host) - All Architectures \n + * When a control transfer is initiated in host mode to an attached device, a timeout is used to abort the transfer if the attached + * device fails to respond within the timeout period. This token may be defined to a non-zero 16-bit value to set the timeout period for + * control transfers, specified in milliseconds. If not defined, the default value specified in Host.h is used instead. + * + * HOST_DEVICE_SETTLE_DELAY_MS=x - (\ref Group_Host) - All Architectures \n + * Some devices require a delay of up to 5 seconds after they are connected to VBUS before the enumeration process can be started, or + * they will fail to enumerate correctly. By placing a delay before the enumeration process, it can be ensured that the bus has settled + * back to a known idle state before communications occur with the device. This token may be defined to a 16-bit value to set the device + * settle period, specified in milliseconds. If not defined, the default value specified in Host.h is used instead. + */ + diff --git a/LUFA/DoxygenPages/CompilingApps.txt b/LUFA/DoxygenPages/CompilingApps.txt new file mode 100644 index 000000000..45cbdd678 --- /dev/null +++ b/LUFA/DoxygenPages/CompilingApps.txt @@ -0,0 +1,30 @@ +/** \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. + */ + +/** \page Page_CompilingApps Compiling the Demos, Bootloaders and Projects + * + * The following details how to compile the included LUFA demos, applications and bootloaders using AVR-GCC. + * + * \section Sec_Prerequisites Prerequisites + * Before you can compile any of the LUFA library code or demos, you will need a recent distribution of avr-libc (1.6.2+) + * and the AVR-GCC (4.2+) compiler. For Windows users, the best way to obtain these is the WinAVR project + * (http://winavr.sourceforge.net) as this provides a single-file setup for everything required to compile your + * own AVR projects. + * + * \section Sec_Compiling Compiling a LUFA Application + * Compiling the LUFA demos, applications and/or bootloaders is very simple. LUFA comes with makefile scripts for + * each individual demo, bootloader and project folder, as well as scripts in the /Demos/, /Bootloaders/, /Projects/ + * and the LUFA root directory. This means that compilation can be started from any of the above directories, with + * a build started from an upper directory in the directory structure executing build of all child directories under it. + * This means that while a build inside a particular demo directory will build only that particular demo, a build stated + * from the /Demos/ directory will build all LUFA demo projects sequentially. + * + * To build a project from the source via the command line, the command "make all" should be executed from the command line in the directory + * of interest. To remove compiled files (including the binary output, all intermediately files and all diagnostic output + * files), execute "make clean". Once a "make all" has been run and no errors were encountered, the resulting binary will + * be located in the generated ".HEX" file. If your project makes use of pre-initialized EEPROM variables, the generated ".EEP" + * file will contain the project's EEPROM data. + */ diff --git a/LUFA/DoxygenPages/ConfiguringApps.txt b/LUFA/DoxygenPages/ConfiguringApps.txt new file mode 100644 index 000000000..6caf185c1 --- /dev/null +++ b/LUFA/DoxygenPages/ConfiguringApps.txt @@ -0,0 +1,89 @@ +/** \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. + */ + +/** \page Page_ConfiguringApps Configuring the Demos, Bootloaders and Projects + * + * If the target microcontroller model, architecture, clock speed, board or other settings are different from the current + * settings, they must be changed and the project recompiled from the source code before being programmed into the microcontroller. + * Most project configuration options are located in the "makefile" build script inside each LUFA application's folder, however + * some demo or application-specific configuration settings (such as the output format in the AudioOut demo) are located in one or + * more of the source files of the project. See each project's individual documentation for application-specific configuration + * values. + * + * Each project "makefile" contains all the script and configuration data required to compile each project. When opened with + * any regular basic text editor such as Notepad or WordPad (ensure that the save format is a pure ASCII text format) the + * build configuration settings may be altered. + * + * Inside each makefile, a number of configuration variables are located, with the format " = ". For + * each application, the important variables which should be altered are: + * + * - MCU, the target processor model + * - ARCH, the target microcontroller architecture + * - BOARD, the target board hardware + * - F_CPU, the target CPU master clock frequency, after any prescaling + * - F_USB, the target raw input clock to the USB module of the processor + * - CDEFS, the C preprocessor defines which configure options the source code + * - LUFA_PATH, the path to the LUFA library source code + * - LUFA_OPTS, the compile time LUFA options which configure the library features + * + * These values should be changed to reflect the build hardware. + * + * \section Sec_MCU The MCU Parameter + * This parameter indicates the target microcontroller model for the compiled application. This should be set to the model of the target + * microcontroller (such as the AT90USB1287, or the ATMEGA32U4), in all lower-case (e.g. "at90usb1287"). Note that not all demos support all the + * microcontroller models and architectures, as they may make use of peripherals or modes only present in some devices. + * + * For supported processor models, see \ref Page_DeviceSupport. + * + * \section Sec_ARCH The ARCH Parameter + * This parameter indicates the target microcontroller architecture the library is to be compiled for. Different microcontroller + * architectures require different source files to be compiled into the final binary, and so this option must be set to the correct + * architecture for the selected platform. + * + * For supported processor architectures, see \ref Page_DeviceSupport. + * + * \section Sec_BOARD The BOARD Parameter + * This parameter indicates the target board hardware for the compiled application. Some LUFA library drivers are board-specific, + * such as the LED driver, and the library needs to know the layout of the target board. If you are using one of the board models listed + * on the main library page, change this parameter to the board name in all UPPER-case. + * + * If you are not using any board-specific drivers in the LUFA library, or you are using a custom board layout, change this to read + * "USER" (no quotes) instead of a standard board name. If the USER board type is selected and the application makes use of one or more + * board-specific hardware drivers inside the LUFA library, then the appropriate stub drives files should be copied from the \c /CodeTemplates/DriverStubs/ + * directory into a /Board/ folder inside the application directory, and the stub driver completed with the appropriate code to drive the + * custom board's hardware. + * + * For boards with built in hardware driver support within the LUFA library, see \ref Page_DeviceSupport. + * + * \section Sec_F_CPU The F_CPU Parameter + * This parameter indicates the target microcontroller's main CPU clock frequency, in Hz. This is used by many libraries (and applications) for + * timing related purposes, and should reflect the actual CPU speed after any prescaling or adjustments are performed. + * + * \section Sec_F_USB The F_USB Parameter + * This parameter indicates the raw input clock frequency to the USB module within the microcontroller in Hz. This may be very different on some platforms + * to the main CPU clock or other peripheral/bus clocks. + * + * \section Sec_CDEFS The CDEFS Parameter + * Many applications have features which can be controlled by the defining of specially named preprocessor tokens at the point of compilation - for example, + * an application might use a compile time token to turn on or off optional or mutually exclusive portions of code. Preprocessor tokens can be + * defined here by listing each one with the -D command line switch, and each token can optionally be defined to a specific value. When defined in the + * project makefile, these behave as if they were defined in every source file via a normal preprocessor define statement. + * + * Most applications will actually have multiple CDEF lines, which are concatenated together with the "+=" operator. This ensures that large + * numbers of configuration options remain readable by splitting up groups of options into separate lines. + * + * \section Sec_LUFA_PATH The LUFA_PATH Parameter + * As each LUFA program requires the LUFA library source code to compile correctly, the application must know where the LUFA library is located. This + * value specifies the path to the LUFA library base relative to the path of the project makefile. + * + * \section Sec_LUFA_OPTS The LUFA_OPTS Parameter + * This value is similar to the CDEFS parameter listed elsewhere -- indeed, it is simply a convenient place to group LUFA related tokens away from the + * application's compile time tokens. Normally, these options do not need to be altered to allow an application to compile and run correctly on a + * different board or microcontroller to the current configuration - if the options are incorrect, then the demo is most likely incompatible with the chosen + * microcontroller model and cannot be made to function through the altering of the makefile settings alone (or at all). Settings such as the USB mode + * (device, host or both), the USB interface speed and other LUFA configuration options can be set here - see \ref Page_TokenSummary documentation for details + * on the available LUFA compile time configuration options. + */ diff --git a/LUFA/DoxygenPages/DevelopingWithLUFA.txt b/LUFA/DoxygenPages/DevelopingWithLUFA.txt new file mode 100644 index 000000000..4ea379938 --- /dev/null +++ b/LUFA/DoxygenPages/DevelopingWithLUFA.txt @@ -0,0 +1,21 @@ +/** \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. + */ + +/** + * \page Page_DevelopingWithLUFA Developing With LUFA + * + * This section of the manual contains information on LUFA development, such as Getting Started information, + * information on compile-time tuning of the library and other developer-related sections. + * + * Subsections: + * \li \subpage Page_TokenSummary - Summary of Compile Time Tokens + * \li \subpage Page_Migration - Migrating from an Older LUFA Version + * \li \subpage Page_VIDPID - Allocated USB VID and PID Values + * \li \subpage Page_BuildLibrary - Building as a Linkable Library + * \li \subpage Page_WritingBoardDrivers - How to Write Custom Board Drivers + * \li \subpage Page_SoftwareBootloaderStart - How to jump to the bootloader in software + */ + diff --git a/LUFA/DoxygenPages/DeviceSupport.txt b/LUFA/DoxygenPages/DeviceSupport.txt new file mode 100644 index 000000000..b3af29b22 --- /dev/null +++ b/LUFA/DoxygenPages/DeviceSupport.txt @@ -0,0 +1,356 @@ +/** \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. + */ + +/** + * \page Page_DeviceSupport Device and Hardware Support + * + * Atmel Microcontrollers: + * \li \subpage Page_AVR8Support - Atmel AVR8 Support + * \li \subpage Page_UC3Support - Atmel AVR32 UC3 Support + * \li \subpage Page_XMEGASupport - Atmel XMEGA Support + */ + +/** + * \page Page_AVR8Support Atmel 8-Bit AVR (AVR8) Support + * + * \section Sec_AVR8Support_Devices Supported Microcontroller Models + * + * Currently supported AVR8 models: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
PartUSB Device ModeUSB Host Mode
AT90USB82YesNo
ATMEGA8U2YesNo
AT90USB162YesNo
ATMEGA16U2YesNo
ATMEGA16U4YesNo
ATMEGA32U2YesNo
ATMEGA32U4YesNo
ATMEGA32U6YesNo
AT90USB646YesNo
AT90USB647YesYes
AT90USB1286YesNo
AT90USB1287YesYes
+ * + * \section Sec_AVR8Support_Boards Supported Atmel Boards + * Currently supported Atmel AVR8 boards (see \ref Group_BoardTypes): + * - AT90USBKEY + * - ATAVRUSBRF01 + * - EVK527 + * - RZUSBSTICK + * - STK525 + * - STK526 + * - XPLAIN (Excluding the blue XPLAINED family boards) + * + * \section Sec_AVR8Support_ThirdParty Supported Third Party Models + * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): + * - Adafruit U4 Breakout Board + * - Arduino Uno + * - Busware BUI + * - Busware CUL V3 + * - Fletchtronics Bumble-B (using officially recommended peripheral layout) + * - Kernel Concepts USBFOO + * - Linnix UDIP + * - MattairTech JM-DB-U2 + * - Maximus USB + * - Microsin AVR-USB162 + * - Minimus USB + * - Olimex AVR-USB-162 + * - PJRC Teensy (all revisions and versions) + * - Sparkfun U2 Breakout Board + * - TCNISO Blackcat USB JTAG + * - Tempusdictum Benito + * - Tom's USBTINY-MKII (all revisions and versions) + * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) + */ + +/** + * \page Page_UC3Support Atmel 32-Bit UC3 AVR (UC3) + * Note: The AVR32 UC3 device support is currently experimental, and is included for preview purposes only. + * + * \section Sec_UC3Support_Devices Supported Microcontroller Models + * + * Currently supported UC3 models: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
PartUSB Device ModeUSB Host Mode
AT32UC3A064YesYes
AT32UC3A164YesYes
AT32UC3A364YesYes
AT32UC3A364SYesYes
AT32UC3A464YesYes
AT32UC3A464SYesYes
AT32UC3B064YesYes
AT32UC3B164YesYes
AT32UC3A0128YesYes
AT32UC3A1128YesYes
AT32UC3A3128YesYes
AT32UC3A3128SYesYes
AT32UC3A4128YesYes
AT32UC3A4128SYesYes
AT32UC3B0128YesYes
AT32UC3B1128YesYes
AT32UC3A0256YesYes
AT32UC3A1256YesYes
AT32UC3A3256YesYes
AT32UC3A3256SYesYes
AT32UC3A4256YesYes
AT32UC3A4256SYesYes
AT32UC3B0256YesYes
AT32UC3B1256YesYes
AT32UC3A0512YesYes
AT32UC3A1512YesYes
AT32UC3B0512YesYes
AT32UC3B1512YesYes
+ * + * \section Sec_UC3Support_Boards Supported Atmel Boards + * + * Currently supported Atmel UC3 boards (see \ref Group_BoardTypes): + * - EVK1100 + * - EVK1101 + * - EVK1104 + * + * \section Sec_UC3Support_ThirdParty Supported Third Party Models + * + * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): + * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) + */ + +/** + * \page Page_XMEGASupport Atmel USB XMEGA AVR (XMEGA) + * Note: The XMEGA device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. + * + * \section Sec_XMEGASupport_Devices Supported Microcontroller Models + * + * Currently supported XMEGA models: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
PartUSB Device ModeUSB Host Mode
ATXMEGA16A4UYesNo
ATXMEGA32A4UYesNo
ATXMEGA64A3UYesNo
ATXMEGA128A3UYesNo
ATXMEGA192A3UYesNo
ATXMEGA256A3UYesNo
ATXMEGA256A3BUYesNo
ATXMEGA128A1UYesNo
+ * + * \section Sec_XMEGASupport_Boards Supported Atmel Boards + * Currently supported Atmel XMEGA boards (see \ref Group_BoardTypes): + * - None + * + * \section Sec_XMEGASupport_ThirdParty Supported Third Party Models + * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): + * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) + */ + diff --git a/LUFA/DoxygenPages/DirectorySummaries.txt b/LUFA/DoxygenPages/DirectorySummaries.txt new file mode 100644 index 000000000..e4ef0959a --- /dev/null +++ b/LUFA/DoxygenPages/DirectorySummaries.txt @@ -0,0 +1,254 @@ +/** \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. + */ + +/** \dir LUFA/Common + * \brief Common library header files. + * + * This folder contains header files which are common to all parts of the LUFA library. They may be used freely in + * user applications. + * + * \dir LUFA/Drivers + * \brief Library hardware and software drivers. + * + * This folder contains all the library hardware and software drivers for each supported board, architecture and + * microcontroller model. + * + * \dir LUFA/Drivers/Misc + * \brief Miscellaneous driver files. + * + * This folder contains drivers for aspects other than the USB interface, board hardware or microcontroller peripherals. + * + * \dir LUFA/Drivers/Peripheral + * \brief Microcontroller peripheral driver files. + * + * This folder contains drivers for various low level microcontroller peripherals, usually located on the microcontroller + * die within the same physical chip. + * + * \dir LUFA/Drivers/USB + * \brief USB controller peripheral driver files. + * + * This folder contains the complete LUFA USB stack and controller files, including the core driver and stack, as well + * as the USB class driver implementations. + * + * \dir LUFA/Drivers/USB/Core + * \brief Core USB driver files. + * + * This folder contains the core USB stack and controller driver files, to correctly implement USB functionality on the + * target architecture and microcontroller model. This + * + * \dir LUFA/Drivers/USB/Class + * \brief USB Class helper driver files. + * + * This folder contains drivers for implementing functionality of standardized USB classes. These are not used directly by the library, + * but provide a standard and library-maintained way of implementing functionality from some of the defined USB classes without extensive + * development effort. Is is recommended that these drivers be used where possible to reduce maintenance of user applications. + * + * \dir LUFA/Drivers/USB/Class/Device + * \brief USB Device Class helper driver files. + * + * Device mode drivers for the standard USB classes. + * + * \dir LUFA/Drivers/USB/Class/Host + * \brief USB Host Class helper driver files. + * + * Host mode drivers for the standard USB classes. + * + * \dir LUFA/Drivers/Board + * \brief Board hardware driver files. + * + * This folder contains drivers for interfacing with the physical hardware on supported commercial boards, primarily from + * the Atmel corporation. Header files in this folder should be included in user applications requiring the functionality of + * hardware placed on supported boards. + * + * \dir LUFA/Drivers/Board/AVR8/ADAFRUITU4 + * \brief ADAFRUITU4 board hardware driver files. + * + * This folder contains drivers for hardware on the Adafruit U4 breakout board (http://ladyada.net/products/atmega32u4breakout). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * \dir LUFA/Drivers/Board/AVR8/ATAVRUSBRF01 + * \brief ATAVRUSBRF01 board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel ATAVRUSBRF01 board, as used in several Atmel wireless demo kits. The header + * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in + * the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/BENITO + * \brief BENITO board hardware driver files. + * + * This folder contains drivers for hardware on the Benito boards (http://dorkbotpdx.org/wiki/benito). The header files in this + * folder should not be included directly in user applications; the similarly named dispatch header files located in the parent + * Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/BUMBLEB + * \brief BUMBLEB board hardware driver files. + * + * This folder contains drivers for hardware on the Fletchtronics Bumble-B board (http://fletchtronics.net/bumble-b). The header + * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in + * the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/BUI + * \brief BUI board hardware driver files. + * + * This folder contains drivers for hardware on the Busware BUI (http://www.busware.de/tiki-index.php?page=BUI). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/BLACKCAT + * \brief BLACKCAT board hardware driver files. + * + * This folder contains drivers for hardware on the TCNISO Blackcat USB JTAG (http://www.embeddedcomputers.net/products/BlackcatUSB/. + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/CULV3 + * \brief CULV3 board hardware driver files. + * + * This folder contains drivers for hardware on the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/EVK527 + * \brief EVK527 board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel EVK527 development board. The header files in this folder should + * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory + * should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/JMDBU2 + * \brief JM-DB-U2 board hardware driver files. + * + * This folder contains drivers for hardware on the JM-DB-U2 boards (http://u2.mattair.net/). The header files in this folder + * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board + * directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/MAXIMUS + * \brief MAXIMUS board hardware driver files. + * + * This folder contains drivers for hardware on the Maximus boards (http://www.avrusb.com/). The header files in this folder + * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board + * directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/MICROSIN162 + * \brief MICROSIN162 board hardware driver files. + * + * This folder contains drivers for hardware on the Microsin AVR-USB162 board (http://microsin.ru/content/view/685/44/). The + * header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/MINIMUS + * \brief MINIMUS board hardware driver files. + * + * This folder contains drivers for hardware on the Minimus boards (http://www.minimususb.com/). The header files in this folder + * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board + * directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/OLIMEX162 + * \brief Olimex USB-STK-162 board hardware driver files. + * + * This folder contains drivers for hardware on the Olimex AVR-USB-162 boards (http://www.olimex.com/dev/avr-usb-162.html). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/RZUSBSTICK + * \brief RZUSBSTICK board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel RZUSBSTICK board, as used in the Atmel "Raven" wireless kits. The header + * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in + * the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/SPARKFUN8U2 + * \brief SPARKFUN8U2 board hardware driver files. + * + * This folder contains drivers for hardware on the Sparkfun ATMEGA8U2 breakout board (http://www.sparkfun.com/products/10277). The + * header files in this folder should not be included directly in user applications; the similarly named dispatch header files located + * in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/STK525 + * \brief STK525 board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel STK525 development board. The header files in this folder should + * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory + * should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/STK526 + * \brief STK526 board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel STK526 development board. The header files in this folder should + * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory + * should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/TEENSY + * \brief TEENSY board hardware driver files. + * + * This folder contains drivers for hardware on all revisions of the PJRC Teensy boards (http://www.pjrc.com/teensy/). The header + * files in this folder should not be included directly in user applications; the similarly named dispatch header files located + * in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/TUL + * \brief TUL board hardware driver files. + * + * This folder contains drivers for hardware on the Busware TUL (http://busware.de/tiki-index.php?page=TUL). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/UDIP + * \brief UDIP board hardware driver files. + * + * This folder contains drivers for hardware on the Linnix UDIP boards (http://linnix.com/udip/). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/UNO + * \brief UNO board hardware driver files. + * + * This folder contains drivers for hardware on the Arduino Uno boards (http://www.arduino.cc). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/USBFOO + * \brief USBFOO board hardware driver files. + * + * This folder contains drivers for hardware on the USBFOO boards (http://shop.kernelconcepts.de/product_info.php?products_id=102). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/USBKEY + * \brief USBKEY board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel USBKEY demonstration board. The header files in this folder should + * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory + * should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/USBTINYMKII + * \brief USBTINY-MKII board hardware driver files. + * + * This folder contains drivers for hardware on all revisions of the USBTINY-MKII boards (http://tom-itx.dyndns.org:81/~webpage/). + * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files + * located in the parent Board directory should be included instead. + * + * \dir LUFA/Drivers/Board/AVR8/XPLAIN + * \brief XPLAIN board hardware driver files. + * + * This folder contains drivers for hardware on the Atmel XPLAIN board (all hardware revisions). The header files in this folder + * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board + * directory should be included instead. + * + * \dir LUFA/CodeTemplates + * \brief Code templates for use in LUFA powered applications. + * + * This contains code templates for board drivers, sample LUFA project makefiles and other similar templates that can be copied into + * a LUFA powered application and modified to speed up development. + * + * \dir LUFA/CodeTemplates/DriverStubs + * \brief Driver stub header files for custom boards, to allow the LUFA board drivers to operate. + * + * This contains stub files for the LUFA board drivers. If the LUFA board drivers are used with board hardware other than those + * directly supported by the library, the BOARD parameter of the application's makefile can be set to "USER", and these stub files + * copied to the "/Board/" directory of the application's folder. When fleshed out with working driver code for the custom board, + * the corresponding LUFA board APIs will work correctly with the non-standard board hardware. + */ + diff --git a/LUFA/DoxygenPages/Donating.txt b/LUFA/DoxygenPages/Donating.txt new file mode 100644 index 000000000..ef9748788 --- /dev/null +++ b/LUFA/DoxygenPages/Donating.txt @@ -0,0 +1,24 @@ +/** \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. + */ + +/** + * \page Page_Donating Donating to Support This Project + * + * \image html Author.jpg "Dean Camera, LUFA Developer" + * + * I am a 22 year old University student studying for a double degree in Computer Science and Electronics Engineering. + * The development and support of this library requires much effort from myself, as I am the sole developer, maintainer + * and supporter. Please consider donating a small amount to support this and my future Open Source projects - All + * donations are greatly appreciated. + * + * Note that commercial entities can remove the attribution portion of the LUFA license by a one-time fee - see + * \ref Page_LicenseInfo for more details (Note: Please do NOT pay this in advance through the donation link below - + * contact author for payment details.). + * + * \image html "http://www.pledgie.com/campaigns/6927.png?skin_name=chrome" + * Donate to this project via PayPal - Thanks in Advance! + */ + diff --git a/LUFA/DoxygenPages/FutureChanges.txt b/LUFA/DoxygenPages/FutureChanges.txt new file mode 100644 index 000000000..83c48805b --- /dev/null +++ b/LUFA/DoxygenPages/FutureChanges.txt @@ -0,0 +1,48 @@ +/** \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. + */ + + /** \page Page_FutureChanges Future Changes + * + * Below is a list of future changes which are proposed for the LUFA library, but not yet started/complete. + * This gives an unordered list of future changes which may be available in future releases of the library. + * If you have an item to add to this list, please contact the library author via email, the LUFA mailing list, + * or post your suggestion as an enhancement request to the project bug tracker. + * + * Targeted for Future Releases: + * - Code Features + * -# Add hub support when in Host mode for multiple devices + * -# Investigate virtual hubs when in device mode instead of composite devices + * -# Change makefiles to allow for absolute LUFA location to be used + * -# Re-add interrupt Pipe/Endpoint support + * -# Add makefile includes to reduce boilerplate in user makefiles + * -# Update stream APIs to use DMA transfers on supported architectures + * -# Pull out third party libraries into a separate folder and reference them as required + * -# Add a LUFA_YIELD macro for integration into a third-party RTOS + * -# Abstract out Mass Storage byte send/receive to prevent low level API use in projects + * -# Consider switch from endpoint numbers to full endpoint addresses to ease future architecture expansion + * -# Fix HID report parser usage support for array types + * -# Add additional standard request helper functions to host mode + * -# Add Dataflash_SendCommand() + * -# Make HOST_DEVICE_SETTLE_DELAY_MS a global variable that can be changed + * -# Add MANDATORY_EVENT_FUNCTIONS compile time option + * -# Add watchdog support to the library and apps/bootloaders + * -# Re-run USBIF test suite on all classes to formally verify operation + * - Documentation/Support + * -# Add detailed overviews of how each demo works + * -# Add board overviews + * -# Write LUFA tutorials + * - Demos/Projects + * -# Device/Host USB bridge + * -# Finish incomplete demos and projects + * -# Add class driver support for Test and Measurement class + * -# Add class driver support for EEM class + * -# Add class driver support for ECM class + * - Ports + * -# Complete AVR32 port for existing devices, add UC3C support + * -# Atmel ARM7 series microcontrollers + * -# Other (commercial) C compilers + */ + diff --git a/LUFA/DoxygenPages/GettingStarted.txt b/LUFA/DoxygenPages/GettingStarted.txt new file mode 100644 index 000000000..ab460cb6e --- /dev/null +++ b/LUFA/DoxygenPages/GettingStarted.txt @@ -0,0 +1,27 @@ +/** \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. + */ + +/** \page Page_GettingStarted Getting Started + * + * Out of the box, LUFA contains a large number of pre-made class demos for you to test, experiment with and + * ultimately build upon for your own projects. All the demos (where possible) come pre-configured to build and + * run correctly on the AT90USB1287 AVR microcontroller, mounted on the Atmel USBKEY board and running at an 8MHz + * master clock. This is due to two reasons; one, it is the hardware the author possesses, and two, it is the most + * popular Atmel USB demonstration board to date. To learn how to reconfigure, recompile and program the included + * LUFA applications using different settings, see the subsections below. + * + * Most of the included demos in the /Demos/ folder come in both ClassDriver and LowLevel varieties. If you are new + * to LUFA, it is highly recommended that you look at the ClassDriver versions first, which use the pre-made USB + * Class Drivers (\ref Group_USBClassDrivers) to simplify the use of the standard USB classes in user applications. + * + * For an overview of the included library applications, bootloaders and demos, see \ref Page_LibraryApps. + * + * Subsections: + * \li \subpage Page_ConfiguringApps - How to Configure the Included Demos, Projects and Bootloaders + * \li \subpage Page_CompilingApps - How to Compile the Included Demos, Projects and Bootloaders + * \li \subpage Page_ProgrammingApps - How to Program an AVR with the Included Demos, Projects and Bootloaders + */ + diff --git a/LUFA/DoxygenPages/Groups.txt b/LUFA/DoxygenPages/Groups.txt new file mode 100644 index 000000000..bac362bf5 --- /dev/null +++ b/LUFA/DoxygenPages/Groups.txt @@ -0,0 +1,25 @@ +/** \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. + */ + +/** @defgroup Group_BoardDrivers Board Drivers + * + * Functions, macros, variables, enums and types related to the control of physical board hardware. + */ + +/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers + * + * Functions, macros, variables, enums and types related to the control of AVR subsystems. + */ + +/** @defgroup Group_MiscDrivers Miscellaneous Drivers + * + * Miscellaneous driver Functions, macros, variables, enums and types. + */ + +/** @defgroup Group_PlatformDrivers System Platform Drivers + * + * Drivers relating to the general architecture platform, such as clock setup and interrupt management. + */ diff --git a/LUFA/DoxygenPages/LUFA.png b/LUFA/DoxygenPages/LUFA.png new file mode 100644 index 000000000..54fa1a664 Binary files /dev/null and b/LUFA/DoxygenPages/LUFA.png differ diff --git a/LUFA/DoxygenPages/LUFAPoweredProjects.txt b/LUFA/DoxygenPages/LUFAPoweredProjects.txt new file mode 100644 index 000000000..df72cbc0e --- /dev/null +++ b/LUFA/DoxygenPages/LUFAPoweredProjects.txt @@ -0,0 +1,142 @@ +/** \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. + */ + +/** \page Page_LUFAPoweredProjects User Projects Powered by LUFA + * + * LUFA is currently in use all around the world, in many applications both commercial and non-commercial. Below is a + * list of known public LUFA powered projects, which all use the LUFA library in some way. Feel free to visit each project's + * home page for more information on each project. + * + * If you have a project that you would like to add to this list, please contact me via the details on the main page of this + * documentation. + * + * \section Sec_BoardsUsingLUFA AVR-USB Development Boards Using LUFA + * + * The following is a list of known AVR USB development boards, which recommend using LUFA for the USB stack. Some of these + * are open design, and all are available for purchase as completed development boards suitable for project development. + * + * - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html + * - Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito + * - JM-DB-U2, an ATMEGA32U2 development board: http://u2.mattair.net/index.html + * - Micropendous, an open design/source set of AVR USB development boards: http://micropendous.org/ + * - Microsin AVR-USB162 breakout board, a DIY AT90USB162 development board: http://microsin.ru/content/view/685/44/ + * - Minimus USB, a board specially designed for PSGroove: http://www.minimususb.com/ + * - Nanduino, a do-it-yourself AT90USB162 board: http://www.makestuff.eu/wordpress/?page_id=569 + * - Sparkfun ATMEGA8U2 breakout board: http://www.sparkfun.com/products/10277 + * - Teensy and Teensy++, two other AVR USB development boards: http://www.pjrc.com/teensy/index.html + * - U2DIL/U4DIL, a set of DIP layout USB AVR boards: http://www.reworld.eu/re/en/products/u2dil/ + * - USBFOO 2, AT90USB162 based development board: http://shop.kernelconcepts.de/product_info.php?products_id=102 + * + * \section Sec_LUFAProjects Projects Using LUFA (Hobbyist) + * + * The following are known hobbyist projects using LUFA. Most are open source, and show off interesting ways that the LUFA library + * can be incorporated into many different applications. + * + * - Accelerometer Game Joystick: http://www.crictor.co.il/he/episodes/joystick/ + * - Arcade Controller: http://fletchtronics.net/arcade-controller-made-petunia + * - Arcade Joystick: http://jamie.lentin.co.uk/embedded/arcade-joystick/ + * - AVR USB Modem, a 3G Wireless Modem host: http://code.google.com/p/avrusbmodem/ + * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/ + * - Bluetooth Explorerbot: http://code.google.com/p/bluetooth-explorerbot/ + * - Bus Ninja, an AVR clone of the popular BusPirate project: http://blog.hodgepig.org/busninja/ + * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig + * - CD Driver Emulator Dongle for ISO Files: http://cdemu.blogspot.com/ + * - ClockTamer, a configurable clock generator: http://code.google.com/p/clock-tamer/ + * - Collection of alternative Arduino Uno firmwares: http://hunt.net.nz/users/darran/ + * - CULFW, a 868MHz RF packet encoder/decoder: http://www.koeniglich.de/culfw/culfw.html + * - Dashkey, a custom PC keyboard controller: http://geekhack.org/showwiki.php?title=Island:19096 + * - DIY PS3 controller emulator: https://code.google.com/p/diyps3controller/ + * - EMuSer, a USB-RS422 adapter for E-Mu samplers: http://www.emxp.net/EMuSer.htm + * - Estick JTAG, an ARM JTAG debugger: http://code.google.com/p/estick-jtag/ + * - "Fingerlicking Wingdinger" (WARNING: Bad language if no Javascript), a MIDI controller: http://noisybox.net/electronics/wingdinger/ + * - Flyatar, a real-time fly tracking system: https://github.com/peterpolidoro/Flyatar + * - Gamecube controller to USB adapter: https://www.facebook.com/media/set/?set=a.10150202447076304.310536.688776303&l=df53851c50 + * - Garmin GPS USB to NMEA standard serial sentence translator: http://github.com/nall/garmin-transmogrifier/tree/master + * - Generic HID Device Creator: http://generichid.sourceforge.net/ + * - Ghetto Drum, a MIDI drum controller: http://noisybox.net/art/gdrum/ + * - Hiduino, a USB-MIDI replacement firmware for the Arduino Uno: http://code.google.com/p/hiduino/ + * - Ikea RGB LED USB modification: http://slashhome.se/p/projects/id/ikea_dioder_usb/#project + * - IR Remote to Keyboard decoder: http://netzhansa.blogspot.com/2010/04/our-living-room-hi-fi-setup-needs-mp3.html + * - LED Panel controller: http://projects.peterpolidoro.net/caltech/panelscontroller/panelscontroller.htm + * - Linux Secure Storage Dongle: http://github.com/TomMD/teensy + * - LUFA powered DDR dance mat (French): http://logicien-parfait.fr/dokuwiki/doku.php?id=projet:ddr_repair + * - MakeTV Episode Dispenser: http://www.youtube.com/watch?v=BkWUi18hl3g + * - MidiMonster, a USB-to-MIDI gateway board: http://www.dorkbotpdx.org/wiki/midimonster + * - MIDI Theremin: http://baldwisdom.com/usb-midi-controller-theremin-style-on-arduino-uno/ + * - MiniBloq, a graphical Ardunio programming environment : http://minibloq.org/ + * - MiXley, a port of the Teacup 3D printer firmware for the USB AVRs: http://codaset.com/michielh/mixley + * - Mobo 4.3, a USB controlled all band (160-10m) HF SDR transceiver: http://sites.google.com/site/lofturj/mobo4_3 + * - Moco, a native Arduino Uno MIDI replacement firmware: http://web.mac.com/kuwatay/morecat_lab./MocoLUFA.html + * - Motherboard BIOS flasher: http://www.coreboot.org/InSystemFlasher + * - Multi-button Joystick (French): http://logicien-parfait.fr/dokuwiki/doku.php?id=projet:joystick + * - Music Playing Alarm Clock (Tutorial): http://www.instructables.com/id/Music-Playing-Alarm-Clock/ + * - NeroJTAG, a JTAG dongle: https://github.com/makestuff/neroJtag + * - NES Controller USB modification: http://projects.peterpolidoro.net/video/NESUSB.htm + * - Nikon wireless camera remote control (Norwegian): http://hekta.org/~hpe1119/ + * - Opendous-JTAG, an open source ARM JTAG debugger: http://code.google.com/p/opendous-jtag/ + * - Openkubus, an open source hardware-based authentication dongle: http://code.google.com/p/openkubus/ + * - Orbee, a USB connected RGB Orb for notifications: http://www.franksworkshop.com.au/Electronics/Orbee/Orbee.htm + * - Programmable keyboard controller: http://41j.com/blog/2011/10/a-programmable-keyboard-controller/ + * - Programmable XBOX controller: http://richard-burke.dyndns.org/wordpress/pan-galactic-gargantuan-gargle-brain-aka-xbox-360-usb-controller/ + * - PSGroove, a Playstation 3 Homebrew dongle: http://github.com/psgroove + * - PS/2 to USB adapter: https://github.com/makestuff/p2ukbd + * - Reprap with LUFA, a LUFA powered 3D printer: http://code.google.com/p/at90usb1287-code-for-arduino-and-eclipse/ + * - SD Card reader: http://elasticsheep.com/2010/04/teensy2-usb-mass-storage-with-an-sd-card/ + * - SDR1, a Software Defined Radio firmware: https://code.google.com/p/sdr-mk1/ + * - SEGA Megadrive/Genesis Development Cartridge: http://www.makestuff.eu/wordpress/?page_id=398 + * - Serial Line bus analyser: http://www.pjrc.com/teensy/projects/SerialAnalyzer.html + * - Smartcard Detective: https://code.google.com/p/smartcarddetective/ + * - SmartportVHD Apple II Mass Storage adapter: http://pcedric3.free.fr/SmartportVHD/ + * - Single LED Matrix Display: http://guysoft.wordpress.com/2009/10/08/bumble-b/ + * - Stripe Snoop, a Magnetic Card reader: http://www.ossguy.com/ss_usb/ + * - Teensy SD Card .WAV file player: http://elasticsheep.com/2010/04/teensy2-usb-wav-player-part-1/ + * - Touchscreen Input Device: http://capnstech.blogspot.com/2010/07/touchscreen-update.html + * - Universal USB AVR Module: http://usbavr.bplaced.net/ + * - USB2AX, a USB to Dynamixel network adapter: http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX + * - USB Interface for Playstation Portable Devices: http://forums.ps2dev.org/viewtopic.php?t=11001 + * - USB powered Geiger Counter: http://uhrheber.wordpress.com/2011/04/28/a-usb-powered-geiger-counter-for-the-z2-and-other-computers/ + * - Userial, a USB to Serial converter with SPI, I2C and other protocols: http://www.tty1.net/userial/ + * - Wireless MIDI Guitar system: http://www.ise.pw.edu.pl/~wzab/wireless_guitar_system/ + * - Xnormidi, a C MIDI library: http://x37v.info/projects/xnormidi + * - XUM1541, a Commodore 64 floppy drive to USB adapter: http://www.root.org/~nate/c64/xum1541/ + * - Zeus, a touch screen computer for music manipulation: http://www.benbengler.com/developments_zeus.html + * + * \section Sec_LUFACommercialProjects Projects Using LUFA (Commercial) + * + * The following is a list of known commercial products using LUFA. Some of these are open source, although many are "black-box" + * solutions with no source code given. Those companies which have purchased a Commercial License to LUFA (see \ref Page_LicenseInfo) + * are not listed here unless specifically requested. + * + * - Arduino Uno, the official Arduino board: http://www.arduino.cc + * - ARPS Locator: http://la3t.hamradio.no/lab//?id=tracker_en + * - CFFA3000, a CompactFlash interface for the Apple II: http://www.dreher.net/CFforAppleII + * - Digital Survey Instruments Magnetometer and Pointer: http://www.digitalsurveyinstruments.com/ + * - FinchRobot, a robot designed for educational use: http://www.finchrobot.com/ + * - Penguino, an Arduino Board With On-Board LUFA Powered Debugger/Programmer: http://wiki.icy.com.au/PenguinoAVR + * - PIR-1, an IR control interface for consumer electronics: http://www.promixis.com/pir-1.php + * - PIR-4, a USB Connected 4 port IR transmitter: http://promixis.com/pir-4.php + * - KeyGlove, an alternative input system: http://www.keyglove.net/ + * - Many of Busware's Products: http://www.busware.de/ + * - MIDIFighter, a USB-MIDI controller: http://www.midifighter.com/ + * - Norduino, a wireless Arduino: http://norduino.robomotic.com/norduino-is-now-usb-hid/ + * - Retrode, a USB Games Console Cartridge Reader: http://www.retrode.org + * - SmartCardDetective, a Smart Card analysis tool: http://www.smartcarddetective.com/ + * - USBTINY-MKII, an AVRISP-MKII Clone AVR Programmer: http://tom-itx.dyndns.org:81/~webpage/boards/USBTiny_Mkii/USBTiny_Mkii_index.php + * - VMeter, a USB MIDI touch strip controller: http://www.vmeter.net/ + * - XMEGA Development Board, using LUFA as an On-Board Programmer: http://xmega.mattair.net/ + * - Zeptoprog, a multifunction AVR programmer: http://www.mattairtech.com/index.php/featured/zeptoprog.html + * + * \section Sec_LUFAPublications Publications Mentioning LUFA + * - Elektor Magazine, "My First AVR-USB" by Antoine Authier (feature), January 2010 Issue + * - Elektor Magazine, "USB is Cool/Sucks" by Jerry Jacobs and Chris Vossen (minor mention), January 2010 Issue + * - Elektor Magazine, "20 x Open Source" by Jens Nickel, March 2010 Issue + * - Circuit Cellar Magazine, "Advanced USB Design Debugging" by Collin O'Flynn, August 2010 Issue + * + * \section Sec_LUFANotableMentions Other Notable Mentions of LUFA + * - Adafruit "Ask an Engineer", 7th November 2010 + * - Arduino 2010 Keynote speech + * - The Amp Hour podcast blog #11 + */ diff --git a/LUFA/DoxygenPages/LUFA_thumb.png b/LUFA/DoxygenPages/LUFA_thumb.png new file mode 100644 index 000000000..efa538677 Binary files /dev/null and b/LUFA/DoxygenPages/LUFA_thumb.png differ diff --git a/LUFA/DoxygenPages/LUFAvsAtmelStack.txt b/LUFA/DoxygenPages/LUFAvsAtmelStack.txt new file mode 100644 index 000000000..239c2772b --- /dev/null +++ b/LUFA/DoxygenPages/LUFAvsAtmelStack.txt @@ -0,0 +1,52 @@ +/** \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. + */ + +/** + * \page Page_LUFAvsAtmelStack LUFA vs the Atmel 8-bit USB AVR Stack + * + * Atmel offers an official 8-bit USB AVR stack, which may be incorporated into user projects and products. As LUFA and the Atmel + * stack aims to give roughly the same functionality to a design, it is often asked what advantages LUFA carries over the official + * Atmel USB stack for the 8-bit USB AVRs. Below are just some of the advantages to choosing LUFA over the official Atmel stack. + * + * - Licensing: + * LUFA is released under a very permissive MIT license (see \ref Page_LicenseInfo), while the Atmel stack carries several + * restrictions as to how and where it can be used. LUFA's licensing should be suitable for both Commercial and Non-Commercial + * entities alike. + * + * - Demos and Projects: + * Unlike the Atmel stack, LUFA comes with many different Device and Host mode Demos and Projects ready to run out of the box. + * Atmel favors separate downloads for each of their (small set) of USB AVR demos, which requires more time and offers less + * to the end-user. LUFA also contains several open source Bootloaders, which can be modified as the user wishes to suit his or + * her application, instead of being forced to use Atmel's single prebuilt (closed-source) DFU bootloader. + * + * - Central Library Code: + * LUFA is designed to allow the central library core code to be shared amongst several projects, so long as the compiled object + * files are cleaned between different projects. This is in direct contrast to the Atmel library, which is strongly coupled to the + * project it is integrated with. Using LUFA allows for only one copy of the library core to be needed for all applications, and + * makes updating the library used in all projects a trivial copy-and-paste process. + * + * - Clean API: + * One of the main design goals of LUFA is to make the API easy to use. While LUFA is a fluid project which has undergone many + * API improvements, the API is arguably much nicer to use and easier to understand than the equivalent Atmel stack code. LUFA's + * API is also more complete than the Atmel stack, and contains many features to speed up application development. + * + * - Full Hardware Support: + * LUFA supports the full range of Atmel's USB AVR microcontrollers (see \ref Page_DeviceSupport), with porting between chips being + * as simple as a single compile switch in many cases. Atmel's stack requires different libraries to be used based on the USB AVR + * microcontroller series, complicating the process of moving between USB AVR models. In addition, LUFA contains drivers for all the + * hardware contained on Atmel's USB AVR based boards, so you can get started quickly and easily. + * + * - Better Library Support: + * As many people are now using LUFA, there is a community being built around it. You can get answers to your LUFA related questions + * quickly by either emailing the library author (subject to author's schedule) or by posting to the official LUFA support mailing list. + * + * - More Compact Code: + * LUFA is written from the ground up to compile optimally, using clean code and good design. Two demos giving the same functionality - + * the LUFA Low Level API Mouse Demo vs. the Atmel AVR270 HID Mouse application note shows LUFA to be the clear size winner *. + * + * * LUFA Low Level Mouse Demo: 3510 bytes, Atmel AVR270 Mouse Application Note: 4222 bytes, using an identical build environment. + */ + diff --git a/LUFA/DoxygenPages/LibraryApps.txt b/LUFA/DoxygenPages/LibraryApps.txt new file mode 100644 index 000000000..43e7660c5 --- /dev/null +++ b/LUFA/DoxygenPages/LibraryApps.txt @@ -0,0 +1,126 @@ +/** \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. + */ + +/** \page Page_LibraryApps Included Library Applications + * + * The LUFA library ships with several different host and device demos, located in the /Demos/ subdirectory. Within this + * directory the demos are separated by USB mode (Device, Host, OTG) and further separated by the use or non-use of the + * library USB Class drivers (which abstract out the actual implementation of the USB classes to simplify development even + * further at the expense of a loss of flexibility). + * + * With one or two exceptions (e.g. proprietary classes such as RNDIS) all the included demos will work across all OSes without + * the need for special drivers. On Windows, some demos require the supplied .INF file to be used as the device driver, which + * directs the OS to use its inbuilt class drivers for the device. + * + * Also included with the library are two fully functional bootloaders, located in the /Bootloaders/ subdirectory. + * The DFU class bootloader is compatible with Atmel's FLIP software or the open source dfu-programmer project, while + * the CDC class (AVR109 protocol) is compatible with such open source software as AVRDUDE and AVR-OSP. + * + * User-submitted projects are located in the /Projects/ subdirectory. If you wish to have your LUFA project included, + * please email it to the Library author. + * + * \section Sec_AppOverview Overview of Included Library Applications + * The following shows the folder structure of the included library applications, including demos, bootloaders and user-submitted + * open source projects. + * + * + * + * - Demos + * - Device + * - ClassDriver + * - AudioInput - Audio In (microphone) demo, using the library USB Audio Class driver framework + * - AudioOutput - Audio Out (speaker) demo, using the library USB Audio Class driver framework + * - DualVirtualSerial - Dual Virtual Serial Port demo, using the library USB CDC Class driver framework + * - GenericHID - Generic Human Interface Class demo, using the library USB HID Class driver framework + * - Joystick - USB Joystick demo, using the library USB HID Class driver framework + * - Keyboard - USB Keyboard demo, using the library USB HID Class driver framework + * - KeyboardMouse - Dual Keyboard/Mouse demo, using the library USB HID Class driver framework + * - KeyboardMouseMultiReport - Multi HID report Keyboard/Mouse demo, using the library USB HID Class driver framework + * - MassStorage - Dual Drive Mass Storage demo, using the library USB Mass Storage Class driver framework + * - MassStorageKeyboard - Mass Storage and Keyboard demo, using the library USB Mass Storage/HID Class driver frameworks + * - MIDI - MIDI In demo, using the library USB MIDI-Audio Class driver framework + * - Mouse - USB Mouse demo, using the library USB HID driver framework + * - RNDISEthernet - RNDIS Ethernet Webserver demo, using the library USB RNDIS driver framework + * - VirtualSerial - Virtual Serial Port demo, using the library USB CDC Class driver framework + * - VirtualSerialMassStorage - Virtual Serial Port and Mass Storage demo, using the library USB CDC and Mass Storage Class driver frameworks + * - VirtualSerialMouse - Virtual Serial Port and Mouse demo, using the library USB CDC and HID Class driver frameworks + * - LowLevel + * - AudioInput - Audio In (microphone) demo, using the low level LUFA APIs to implement the USB Audio class + * - AudioOutput - Audio Out (speaker) demo, using the low level LUFA APIs to implement the USB Audio class + * - DualVirtualSerial - Dual Virtual Serial Port demo, using the low level LUFA APIs to implement the USB CDC class + * - GenericHID - Generic Human Interface Class demo, using the low level LUFA APIs to implement the USB HID class + * - Joystick - USB Joystick demo, using the low level LUFA APIs to implement the USB HID class + * - Keyboard - USB Keyboard demo, using the low level LUFA APIs to implement the USB HID class + * - KeyboardMouse - Dual Keyboard/Mouse demo, using the low level LUFA APIs to implement the USB HID class + * - MassStorage - Dual Drive Mass Storage demo, using the low level LUFA APIs to implement the USB Mass Storage class + * - MIDI - MIDI In demo, using the low level LUFA APIs to implement the USB MIDI-Audio class + * - Mouse - USB Mouse demo, using the low level LUFA APIs to implement the USB HID class + * - RNDISEthernet - RNDIS Ethernet Webserver demo, using the low level LUFA APIs to implement the USB RNDIS class + * - VirtualSerial - Virtual Serial Port demo, using the low level LUFA APIs to implement the USB CDC class + * - Incomplete + * - SideShow - Incomplete Windows SideShow demo, using the low level LUFA APIs to implement the USB SideShow class + * - TestAndMeasurement - Incomplete Test and Measurement demo, using the low level LUFA APIs to implement the USB Test and + * Measurement class + * - Host + * - ClassDriver + * - AudioInputHost - Audio Input host demo, using the library USB Audio Class driver framework + * - AudioOutputHost - Audio Output host demo, using the library USB Audio Class driver framework + * - JoystickHostWithParser - Joystick host demo with HID Descriptor parser, using the library USB HID Class driver framework + * - KeyboardHost - USB Keyboard host demo, using the library USB HID Class driver framework + * - KeyboardHostWithParser - USB Keyboard host demo with HID Descriptor parser, using the library USB HID Class + * driver framework + * - MassStorageHost - Mass Storage host demo, using the library USB Mass Storage Class driver framework + * - MouseHost - Mouse host demo, using the library USB HID Class driver framework + * - MouseHostWithParser - Mouse host demo with HID Descriptor parser, using the library USB HID Class driver framework + * - RNDISHost - RNDIS Ethernet host demo, using the library USB RNDIS Class driver framework + * - StillImageHost - Still Image Camera host demo, using the library USB Still Image Class driver framework + * - VirtualSerialHost - Virtual Serial Port host demo, using the library USB CDC Class driver framework + * - LowLevel + * - AudioInputHost - Audio Input host demo, using the low level LUFA APIs to implement the USB Audio class + * - AudioOutputHost - Audio Output host demo, using the low level LUFA APIs to implement the USB Audio class + * - GenericHIDHost - Generic HID host demo, using the low level LUFA APIs to implement the USB HID class + * - JoystickHostWithParser - Joystick host demo with HID Descriptor parser, using the low level LUFA APIs to implement + * the USB HID class + * - KeyboardHost - USB Keyboard host demo, using the low level LUFA APIs to implement the USB HID class + * - KeyboardHostWithParser - USB Keyboard host demo with HID Descriptor parser, using the low level LUFA APIs to + * implement the USB HID class + * - MassStorageHost - Mass Storage host demo, using the low level LUFA APIs to implement the USB Mass Storage class + * - MouseHost - Mouse host demo, using the low level LUFA APIs to implement the USB HID class + * - MouseHostWithParser - Mouse host demo with HID Descriptor parser, using the low level LUFA APIs to implement the + * USB HID class + * - PrinterHost - Printer host demo, using the low level LUFA APIs to implement the USB Printer class + * - RNDISHost - RNDIS Ethernet host demo, using the low level LUFA APIs to implement the RNDIS class + * - StillImageHost - Still Image Camera host demo, using the low level LUFA APIs to implement the USB Still Image class + * - VirtualSerialHost - Virtual Serial Port host demo, using the low level LUFA APIs to implement the USB CDC class + * - Incomplete + * - BluetoothHost - Incomplete Bluetooth host demo, using the low level LUFA APIs to implement the USB Bluetooth class + * - DualRole + * - ClassDriver + * - MouseHostDevice - Dual role Mouse Host and Mouse Device demo, using the library USB CDC Class driver framework + * - Bootloaders + * - CDC - CDC Class USB bootloader, compatible with any AVR910 protocol programming software such as AVRDude + * - DFU - DFU Class USB bootloader, compatible with Atmel's FLIP and the open source dfu-programmer software + * - HID - HID Class USB bootloader, compatible with a modified PJRC TeensyHID protocol loader application software + * - Projects + * - AVRISP-MKII - AVRISP-MKII Programmer Clone project + * - Benito - Benito Board Arduino Programmer project + * - HIDReportViewer - HID Device Report Viewer project + * - LEDNotifier - USB LED Notification project + * - Magstripe - Magnetic Stripe Card Reader project + * - MediaController - Media Playback Controller project + * - MIDIToneGenerator - MIDI Note Tone Generator project + * - MissileLaucher - Toy Missile Launcher Host project + * - RelayBoard - Relay board controller, controllable via the "sismpctl" Linux application + * - TempDataLogger - Temperature Datalogging project, using the FatFS library + * - USBtoSerial - USB to USART Serial Converter project + * - Webserver - RNDIS Host Webserver with DHCP client, powered by uIP TCP/IP stack project and FatFS library + * - XPLAINBridge - XPLAIN alternative PDI Programmer/USB to Serial Bridge firmware project + * - Incomplete + * - StandaloneProgrammer - Incomplete Standalone AVR Programmer application, to program AVRs directly from a Mass Storage disk + * + * + */ + diff --git a/LUFA/DoxygenPages/LibraryResources.txt b/LUFA/DoxygenPages/LibraryResources.txt new file mode 100644 index 000000000..7137a56a0 --- /dev/null +++ b/LUFA/DoxygenPages/LibraryResources.txt @@ -0,0 +1,33 @@ +/** \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. + */ + +/** + * \page Page_Resources Library Resources + * + * \section Sec_UnofficialResources Unofficial Resources + * Unofficial Russian LUFA documentation translation: http://microsin.ru/Download.cnt/doc/LUFA/ \n + * + * \section Sec_ProjectPages LUFA Related Webpages + * Project Homepage: http://www.lufa-lib.org \n + * Commercial Licenses: http://www.lufa-lib.org/license \n + * Author's Website: http://www.fourwalledcubicle.com \n + * Development Blog: http://www.fourwalledcubicle.com/blog \n + * + * \section Sec_ProjectHelp Assistance With LUFA + * Discussion Group: http://www.lufa-lib.org/support \n + * Author's Email: dean [at] fourwalledcubicle [dot] com \n + * + * \section Sec_InDevelopment Latest In-Development Source Code + * Issue Tracker: http://www.lufa-lib.org/tracker \n + * SVN Access: http://www.lufa-lib.org/svn \n + * GIT Access: http://www.lufa-lib.org/git \n + * Latest Repository Source Archive: http://www.lufa-lib.org/latest-archive \n + * Commit RSS Feed: http://www.lufa-lib.org/rss \n + * + * \section Sec_USBResources USB Resources + * USB-IF Website: http://www.usb.org \n + */ + diff --git a/LUFA/DoxygenPages/LicenseInfo.txt b/LUFA/DoxygenPages/LicenseInfo.txt new file mode 100644 index 000000000..447bec68c --- /dev/null +++ b/LUFA/DoxygenPages/LicenseInfo.txt @@ -0,0 +1,22 @@ +/** \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. + */ + +/** + * \page Page_LicenseInfo Source Code License + * + * The LUFA library is currently released under the MIT license, included below. + * + * Commercial entities can opt out of the public disclosure clause in this license + * for a one-time US$1500 payment. This provides a non-exclusive modified MIT licensed which + * allows for the free use of the LUFA library, bootloaders and (where the sole copyright + * is attributed to Dean Camera) demos without public disclosure within an organization, in + * addition to three free hours of consultation with the library author, and priority support. + * Please visit the Commercial License link on \ref Page_Resources for more information on + * ordering a commercial license for your company. + * + * \verbinclude License.txt + */ + diff --git a/LUFA/DoxygenPages/MainPage.txt b/LUFA/DoxygenPages/MainPage.txt new file mode 100644 index 000000000..0ab9d56dc --- /dev/null +++ b/LUFA/DoxygenPages/MainPage.txt @@ -0,0 +1,48 @@ +/** \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 + * + * \image html LUFA.png + *
Logo design by Studio Monsoon Photography
+ * \n + *
http://www.lufa-lib.org
+ * \n + * + * LUFA is donationware. For author and donation information, see \ref Page_Donating. + * + * LUFA is an open-source USB library for the USB-enabled AVR microcontrollers, released under the MIT license (see \ref Page_LicenseInfo). + * It supports a large number of USB AVR models and boards (see \ref Page_DeviceSupport). It is designed to provide an easy to use, + * feature rich framework for the development of USB peripherals and hosts. + * + * LUFA focuses on the microcontroller side of USB development only; it includes no PC host USB driver development facilities - other projects + * such as the Windows Driver Development Kit, Windows USB Device Mode Framework and libusb may be of interest for developing custom OS drivers. + * While custom USB devices can be made with LUFA using such tools, the included demos all use the inbuilt OS drivers for each USB class for + * simplicity. + * + * The library is currently in a stable release, suitable for download and incorporation into user projects for + * both host and device modes. For information about the project progression, see the blog link at \ref Page_Resources. + * + * LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the + * library API more streamlined and robust. You can download AVR-GCC for free in a convenient windows package, + * from the the WinAVR website (see \ref Page_Resources). + * + * The only required AVR peripherals for LUFA is the USB controller itself and interrupts - LUFA does not require the use of the + * microcontroller's timers or other hardware, leaving more hardware to the application developer. + * + * Accompanying LUFA in the download package is a set of example demo applications, plus several Bootloaders of different classes + * and open source LUFA powered projects. + * + * Subsections: + * \li \subpage Page_WhyUseLUFA - What are the advantages of using LUFA? + * \li \subpage Page_LUFAvsAtmelStack - How does LUFA compare to the Atmel USB AVR stack? + * \li \subpage Page_AlternativeStacks - Alternative USB AVR Stacks + * \li \subpage Page_LicenseInfo - Project source license and commercial use information + * \li \subpage Page_Donating - Donating to support this project + * \li \subpage Page_LibraryApps - Overview of included Demos, Bootloaders and Projects + */ + diff --git a/LUFA/DoxygenPages/MigrationInformation.txt b/LUFA/DoxygenPages/MigrationInformation.txt new file mode 100644 index 000000000..14ac86bb4 --- /dev/null +++ b/LUFA/DoxygenPages/MigrationInformation.txt @@ -0,0 +1,622 @@ +/** \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. + */ + +/** \page Page_Migration Migrating from Older Versions + * + * Below is migration information for updating existing projects based on previous versions of the LUFA library + * to the next version released. It does not indicate all new additions to the library in each version change, only + * areas relevant to making older projects compatible with the API changes of each new release. + * + * \section Sec_MigrationXXXXXX Migrating from 111009 to XXXXXX + * None + * + * \section Sec_Migration111009 Migrating from 110528 to 111009 + * Non-USB Library Components + * - The \c JTAG_DEBUG_ASSERT() macro has been renamed \ref JTAG_ASSERT() to be consistent with \ref STDOUT_ASSERT(). + * + * USB Core + * - By default, unordered Endpoint and Pipe configuration is now allowed once again, via the previous workaround of + * reconfiguring all Endpoints/Pipes in order each time a new Endpoint/Pipe is created. To minimize the compiled program + * size, the new \c ORDERED_EP_CONFIG compile time option may be defined in the project makefile to restrict the ordering + * in exchange for a smaller compiled binary size. + * - The previous \c F_CLOCK symbol, required in the project makefile, has been renamed to \c F_USB. This is due to the previous name + * being far too generic for use in future architecture ports, where multiple clock domains are used. + * + * Device Mode + * - The Endpoint stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter. + * This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes + * processed in the current transaction can be stored. If the \c BytesProcessed parameter is non \c NULL, each time the endpoint + * bank becomes full and the packet is sent, the routine will exit with the new \ref ENDPOINT_RWSTREAM_IncompleteTransfer + * error code to allow the user application to determine when to send the next chunk of data. + * - The \ref CDC_Device_SendString() function now expects a null terminated string instead of an explicit length. Existing code + * should use the new \ref CDC_Device_SendData() function, or remove the length parameter from the function call. + * - The \c Endpoint_ResetFIFO() function has been renamed to \ref Endpoint_ResetEndpoint(), to make the API function names more + * consistent. Existing applications using the old function name should simply replace it with a call to the new function name. + * - The \c Endpoint_*_Byte() functions have been renamed Endpoint_*_8() to ensure they are correct across all architectures. Existing + * code using these functions should replace the previous function names with the new function names. + * - The \c Endpoint_*_Word() functions have been renamed Endpoint_*_16() to ensure they are correct across all architectures. Existing + * code using these functions should replace the previous function names with the new function names. + * - The \c Endpoint_*_DWord() functions have been renamed Endpoint_*_32() to ensure they are correct across all architectures. Existing + * code using these functions should replace the previous function names with the new function names. + * - The Device mode RNDIS class driver no longer stores the incoming and outgoing packets in the class driver instance; the user is + * now expected to manually define a storage location for the packet data. Packets must now be sent and received manually via a call + * to \ref RNDIS_Device_ReadPacket() and/or \ref RNDIS_Device_SendPacket(). + * - The definition of the Audio class \ref USB_Audio_Descriptor_Format_t has been altered, to remove the fixed singular + * audio sample rate in the descriptor definition, and to rename the \c SampleFrequencyType to the more appropriate + * \c TotalDiscreteSampleRates. Existing applications will need to add an array of \ref USB_Audio_SampleFreq_t elements + * immediately following any \ref USB_Audio_Descriptor_Format_t descriptors, and insert the appropriate sampling rates + * supported by the device, as well as rename the descriptor elements to match the updated element names. + * - The device mode Audio class driver now requires a new user application callback, \ref CALLBACK_Audio_Device_GetSetEndpointProperty(). + * Existing applications must implement this new callback, however if multiple sample rates or pitch control is not used, + * this function may be hard-coded to always return false for previous behaviour to be retained. + * - The \c USB_ConfigurationNumber, \c USB_RemoteWakeupEnabled and \c USB_CurrentlySelfPowered globals have been renamed to + * \ref USB_Device_ConfigurationNumber, \ref USB_Device_RemoteWakeupEnabled and \ref USB_Device_CurrentlySelfPowered to clearly indicate + * the USB mode they relate to. Existing applications using these variables should rename all references to the previous names. + * - The \c ENDPOINT_DESCRIPTOR_DIR_IN and \c ENDPOINT_DESCRIPTOR_DIR_OUT macros have now been replaced by \ref ENDPOINT_DIR_IN and + * \ref ENDPOINT_DIR_OUT to improve code clarity. + * - The \ref HID_DESCRIPTOR_JOYSTICK() macro now takes an additional (first) parameter indicating the number of axis in the joystick. + * + * Host Mode + * - The Pipe stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter. + * This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes + * processed in the current transaction can be stored. If the BytesProcessed parameter is non \c NULL, each time the pipe + * bank becomes full and the packet is sent, the routine will exit with the new \ref PIPE_RWSTREAM_IncompleteTransfer + * error code to allow the user application to determine when to send the next chunk of data. + * - The \ref PRNT_Host_SendString() and \ref CDC_Host_SendString() functions now expect a null terminated string instead of an explicit + * length. Existing code should use the new \ref PRNT_Host_SendData() and \ref CDC_Host_SendData() functions, or remove the + * length parameter from the function call. + * - The \c Pipe_ClearErrorFlags() function has been removed, as the pipe error flags are now automatically cleared when the + * \ref Pipe_ClearError() function is called. + * - The \c Pipe_*_Byte() functions have been renamed Pipe_*_8() to ensure they are correct across all architectures. Existing code using + * these functions should replace the previous function names with the new function names. + * - The \c Pipe_*_Word() functions have been renamed Pipe_*_16() to ensure they are correct across all architectures. Existing code using + * these functions should replace the previous function names with the new function names. + * - The \c Pipe_*_DWord() functions have been renamed Pipe_*_32() to ensure they are correct across all architectures. Existing code using + * these functions should replace the previous function names with the new function names. + * - The \c USB_Host_ClearPipeStall() function has been renamed to USB_Host_ClearEndpointStall(), as it operates on a full endpoing address + * within the attached device and not a pipe within the host. Existing code using the old function name should update the function calls and + * check for correct usage. + * + * \section Sec_Migration101122 Migrating from 100807 to 101122 + * USB Core + * - A new USB driver source file, \c Drivers/USB/HighLevel/EndpointStream.c now exists. This source file should be added + * to all project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source + * variables. + * - A new USB driver source file, \c Drivers/USB/HighLevel/PipeStream.c now exists. This source file should be added to all + * project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables. + * - The \c EVENT_USB_InitFailure() event has been removed, as the \ref USB_Init() function will no longer fail; if not USB mode is + * specified, the controller will default to UID selection mode. + * - The USB mode specifier constants have been moved into a new enum and renamed. Existing projects should use the equivalent + * value in the new \ref USB_Modes_t enum. + * - All class driver headers are now included as part of the standard \c LUFA/Drivers/USB/USB.h master dispatch header, and should + * no longer be included separately. Class driver module source files must still be added as a separate module in the project's + * makefile if used. + * + * Device Mode + * - Endpoints MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application + * allocated endpoints in ascending order - or if your application uses the USB device mode class drivers, ensure that each instance's + * endpoint indexes are not overlapped with other interface's endpoints. + * - The signature for the \ref CALLBACK_USB_GetDescriptor() callback has changed, the \c void** \c const \c DescriptorAddress parameter is + * now \c const \c void** \c const \c DescriptorAddress. Existing applications should update their callback signatures to match this, and + * eliminate any casting of descriptor pointers to a non \c const pointer. + * - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation + * for each class driver for the new class specific descriptor type names. + * - The \c ENDPOINT_DOUBLEBANK_SUPPORTED() macro is has been renamed \ref ENDPOINT_BANKS_SUPPORTED() and now returns the total number of + * banks supported by the given endpoint. Existing code should switch to the new naming scheme, and test that the return value of the + * macro is equal to or greater than 2 to regain the previous functionality. + * - The \c EVENT_USB_Device_UnhandledControlRequest() event is now named \ref EVENT_USB_Device_ControlRequest() and fires before (not after) + * the internal library event handlers. Existing code should rename the event handlers in the user application to match the new event + * name, and should ensure that the new execution order does not affect the application's operation. + * + * Host Mode + * - Pipes MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application + * allocated pipes in ascending order - or if your application uses the USB host mode class drivers, ensure that each instance's + * pipe indexes are not overlapped with other interface's pipes. + * - The \c PRNT_Host_SendData() function has been renamed to \ref PRNT_Host_SendString(). Existing applications should simply + * replace all references to the obsolete function name with the new function name. + * - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation + * for each class driver for the new class specific descriptor type names. + * - The Still Image Host class' function prefix has been changed from \c SImage_ to \c SI_, to remain consistent with the rest of the + * driver's enums, type defines and constants. + * + * \section Sec_Migration100807 Migrating from 100513 to 100807 + * + * Non-USB Library Components + * - The Dataflash board driver stub file has changed, as dataflash functions previously located in the internal + * Dataflash driver of the library have now been moved to the individual board files. Existing drivers can + * copy-paste the new functions from the board Dataflash stub driver. + * + * USB Core + * - A new USB driver source file, \c Drivers/USB/LowLevel/Device.c now exists. This source file should be added to all project + * makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables. + * - The \c Drivers/USB/LowLevel/DevChapter9.c source file has moved to \c Drivers/USB/HighLevel/DeviceStandardReq.c - this should + * be updated in all project makefiles, or the makefile should be updated to use the new module source variables. + * - The \c Drivers/USB/LowLevel/HostChapter9.h source file has moved to \c Drivers/USB/HighLevel/HostStandardReq.c - this should + * be updated in all project makefiles, or the makefile should be updated to use the new module source variables. + * - The \c Drivers/USB/LowLevel/LowLevel.c source file has moved to \c Drivers/LowLevel/USBController.c - this should be updated + * in all project makefiles, or the makefile should be updated to use the new module source variables. + * + * Device Mode + * - The \c USB_Device_IsRemoteWakeupSent() macro has been removed, as the remote wakeup request is now fully handled by the + * enhanced \ref USB_Device_SendRemoteWakeup() function. Existing code may now discard any checks to \c USB_Device_IsRemoteWakeupSent(). + * - The \c USB_Device_IsUSBSuspended() macro has been removed, as it is obsolete. Existing code should compare \ref USB_DeviceState + * to see if it the device is in the \ref DEVICE_STATE_Suspended state instead. + * - The \ref CDC_Device_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was + * received. This allows for more efficient coding, as a call to \ref CDC_Device_BytesReceived() is no longer needed if the exact + * number of queued bytes received is not needed. + * + * Host Mode + * - The \ref CDC_Host_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was + * received. This allows for more efficient coding, as a call to \ref CDC_Host_BytesReceived() is no longer needed if the exact + * number of queued bytes received is not needed. + * - The \ref CDC_Host_USBTask() now calls \ref CDC_Host_Flush() automatically, flushing any queued data to the attached device. Manual + * flushing of the interface is no longer needed if the flushes should be in sync with calls to \ref CDC_Host_USBTask(). + * + * \section Sec_Migration100513 Migrating from 100219 to 100513 + * + * Non-USB Library Components + * - The \ref TWI_StartTransmission() function now takes in a timeout period, expressed in milliseconds, within which the addressed + * device must respond or the function will abort. + * + * Device Mode + * - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need + * to perform other initialization before it is ready to handle global interrupts. The user application is now responsible + * for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process + * functions correctly. + * - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel. + * Projects must update their makefile SRC values accordingly. + * - The HID Device Class driver's function signature for the \ref CALLBACK_HID_Device_ProcessHIDReport() function has been changed, to + * allow for a new \c ReportType parameter. This new parameter must be added in all user applications using the Device mode HID Class + * Driver, but may be ignored unless Host-to-Device FEATURE HID reports are used. + * + * Host Mode + * - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need + * to perform other initialization before it is ready to handle global interrupts. The user application is now responsible + * for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process + * functions correctly. + * - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel. + * Projects must update their makefile \c SRC values accordingly. + * - The HID Host Class driver's function signature for the \ref HID_Host_SendReportByID() function has been changed, to allow for a new + * ReportType parameter. Existing calls to this function should substitute \c REPORT_ITEM_TYPE_Out as this parameter's value. + * + * \section Sec_Migration100219 Migrating from 091223 to 100219 + * + * Non-USB Library Components + * - Due to some ADC channels not being identical to their ADC MUX selection masks for single-ended conversions on some AVR models, + * the ADC driver now has explicit masks for each of the standard ADC channels (see \ref Group_ADC). These masks should be used + * when calling the ADC functions to ensure proper operation across all AVR models. Note that the \ref ADC_SetupChannel() function + * is an exception, and should always be called with a channel number rather than a channel mask. + * + * Host Mode + * - The MIDI Host Class driver send and receive routines now operate on packed events, where multiple MIDI events may be + * packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send + * pipe bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually + * flush the queued event(s) to the device by calling \ref MIDI_Host_Flush(). + * - The \ref Pipe_IsEndpointBound() function now takes the endpoint's direction into account, by checking if the MSB of the endpoint's address + * is set to denote IN endpoints. If the previous functionality where the direction is to be discounted is required, mask the endpoint + * address against the \ref PIPE_EPNUM_MASK token before calling \ref Pipe_IsEndpointBound(). + * + * Device Mode + * - The MIDI Device Class driver send and receive routines now operate on packed events, where multiple MIDI events may be + * packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send + * endpoint bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually + * flush the queued event(s) to the host by calling \ref MIDI_Device_Flush(). + * + * \section Sec_Migration091223 Migrating from 091122 to 091223 + * + * Host Mode + * - The Still Image Host Class driver \ref SI_Host_USBTask() and \ref SI_Host_ConfigurePipes() functions were misnamed, and are + * now named \c SImage_Host_USBTask() and \c SImage_Host_ConfigurePipes() respectively. + * - The \c HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to \ref HOST_SENDCONTROL_DeviceDisconnected to be in + * line with the rest of the library error codes. + * - The HID Parser item usages no longer contain separate minimum and maximum values, as this was a violation of the HID + * specification. Instead, the values are distributed evenly across each item as its usage value, to ensure that all items + * can be distinguished from one-another. + * + * Device Mode + * - The \ref CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new \c ReportType parameter to + * indicate the report type to generate. Existing applications may simply add and ignore this additional parameter. + * + * \section Sec_Migration091122 Migrating from 090924 to 091122 + * + * Host Mode + * - The \c 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 \ref HID_ReportItem_t to the + * user application, instead of just its attributes. + * - The \c USB_GetDeviceConfigDescriptor() function was incorrectly named and is now called \ref USB_Host_GetDeviceConfigDescriptor(). + * + * \section Sec_Migration090924 Migrating from 090810 to 090924 + * + * Non-USB Library Components + * - The \c ADC_Off() function has been renamed to \c ADC_ShutDown() to be consistent with the rest of the library. + * - The \ref SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See + * the \ref SPI_Init() function documentation for more details + * - The \ref Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a + * call to \ref SPI_Init() before using the Dataflash driver + * + * Host Mode + * - The \c USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to + * preallocate the largest allowable buffer, and pass the size of the buffer to the function. This allows for a single + * call to the function to retrieve, size check and validate the Configuration Descriptor rather than having the user + * application perform these intermediary steps. + * - The HID report parser now requires a mandatory callback in the user code, to filter only the items the application + * is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem(). + * - The HID report parser now always parses FEATURE and always ignores constant-data items - the \c HID_ENABLE_FEATURE_PROCESSING + * and \c HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect. + * - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_* + * and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in + * the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants. + * + * Device Mode + * - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_* + * and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in + * the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants. + * + * \section Sec_Migration090810 Migrating from 090605 to 090810 + * + * All + * - The "Simple Scheduler" has been deprecated, as it was little more than an abstracted loop and caused much confusion. + * User applications using the scheduler should switch to regular loops instead. The scheduler code will be removed in a future + * release. + * - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never + * used in user applications. + * + * Non-USB Library Components + * - The \c ATTR_NOINLINE function attribute macro has been renamed to \ref ATTR_NO_INLINE to be in line with the rest of the function attribute + * macro names. + * + * Library Demos + * - Most demos now have a corresponding Class Driver implementation, which uses the new internal library class drivers for the standard + * USB classes. This allows for more rapid device and host development, and so should be used in preference to the low level APIs where + * possible so that fixes to the class drivers propagate to all applications which use them automatically with each new LUFA release. + * + * Host Mode + * - The \c HIDParser.c module has moved from \c LUFA/Drivers/USB/Class/ to \c LUFA/Drivers/USB/Class/Host/. + * - The \c USB_GetDeviceConfigDescriptor() function now requires the desired configuration index within the device as its first + * parameter, to add support for multi-configuration devices. Existing code should use a configuration index of 1 to indicate the + * first configuration descriptor within the device. + * - The non-standard "Ready" host state has been removed. Existing \ref HOST_STATE_Configured code should be moved to the end of + * the existing \ref HOST_STATE_Addressed state, and the existing HOST_STATE_Ready state code should be moved to the \ref HOST_STATE_Configured + * state. + * - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_HostState explicitly to ensure the host is + * in the desired state instead. + * - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode + * events. See the \ref Group_Events page for details on the new event names and firing conditions. + * + * Device Mode + * - The \ref CALLBACK_USB_GetDescriptor() function now takes an extra parameter to specify the descriptor's memory space so that + * descriptors in mixed memory spaces can be used. The previous functionality can be returned by defining the \c USE_FLASH_DESCRIPTORS + * token in the project makefile to fix all descriptors into FLASH space and remove the extra function parameter. + * - The \c USB_IsSuspended global has been removed - test \ref USB_DeviceState against \ref DEVICE_STATE_Suspended instead. + * - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_DeviceState explicitly to ensure the device + * is in the desired state instead. + * - The VBUS events have been removed, as they are already exposed to the user via the \c USB_Connect and \c USB_Disconnect events. + * - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode + * events. See the \ref Group_Events page for details on the new event names and firing conditions. + * + * \section Sec_Migration090605 Migrating from 090510 to 090605 + * + * Device Mode + * - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing + * projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can + * manage the control endpoint via interrupts automatically by compiling with the \c INTERRUPT_CONTROL_ENDPOINT token defined. + * - The \c DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory + * address. + * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See + * \ref Group_Events for new API details. + * - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular + * function signatures of a function accepting no arguments and returning a \c uint8_t value. + * - The \c Event_DeviceError() event no longer exists, as its sole caller (unlinked \c USB_GetDescriptor() function) now produces a + * compilation error rather than a runtime error. The \c StdDescriptors.c file no longer exists as a result, and should be removed + * from project makefiles. + * - The \c USB_GetDescriptor() function has been renamed to \ref CALLBACK_USB_GetDescriptor() to be in line with the new \c CALLBACK_ + * function prefixes for functions which must be implemented in the user application. + * + * Host Mode + * - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing + * projects using interrupts on non-control pipes should switch to polling. + * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See + * \ref Group_Events for new API details. + * - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular + * function signatures of a function accepting no arguments and returning a \c uint8_t value. + * - The \c DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with + * regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a \c uint8_t value. + * + * \section Sec_Migration090510 Migrating from 090401 to 090510 + * + * All + * - The \c ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all + * \c BUTTLOADTAG() elements, or download and extract \c ButtLoadTag.h header from the ButtLoad project. + * - The \c Drivers/AT90USBXXX/ directory has been renamed to \c Drivers/Peripheral/. + * - The \c Serial_Stream driver has been renamed to \c SerialStream to remain consistent with the rest of the library naming scheme. + * - The HWB driver has changed to the \c Buttons driver. See the board Buttons driver documentation for the new API. + * + * Dual Role Mode + * - The \c USB_PowerOnFail event has been renamed to \c USB_InitFailure. + * - The functions in \c OTG.h have been renamed to remain more consistent with the library API. See the functions in \c OTG.h for more + * details. + * + * Device Mode + * - The \c Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the \ref Endpoint_ClearIN(), \ref Endpoint_ClearOUT() + * macros. See \c Endpoint.h documentation for more details on the new endpoint management macros. + * - The \c Endpoint_ReadWriteAllowed() macro has been renamed to \ref Endpoint_IsReadWriteAllowed() to be more consistent with the rest of + * the API naming scheme. + * - The \c Endpoint_IsSetupINReady() and \c Endpoint_IsSetupOUTReceived() macros have been renamed to \ref Endpoint_IsINReady() and + * \ref Endpoint_IsOUTReceived() respectively. + * - The \c Endpoint_IsSetupReceived() macro has been renamed to \ref Endpoint_IsSETUPReceived(). + * - The \c Endpoint_ClearSetupReceived() macro has been renamed to \ref Endpoint_ClearSETUP(). + * - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Endpoint_Read_Word()) have + * been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions. + * - The \c USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of + * the Control Request header as all Control Request header data is now preloaded by the library and made available in the + * USB_ControlRequest structure. + * - The \c FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to \c CONTROL_ONLY_DEVICE. + * - The \c STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically. + * - The values of the \ref Endpoint_Stream_RW_ErrorCodes_t and \ref Endpoint_ControlStream_RW_ErrorCodes_t enums have had the \c ERROR_ portion + * of their names removed. + * + * Host Mode + * - The \ref USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on + * other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called + * in existing projects where the Control pipe is to be operated on. + * - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer + * need to manage this manually when calling the USB management task. + * - The \c Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See + * Pipe.h documentation for more details on the new pipe management macros. + * - The \c Pipe_ReadWriteAllowed() macro has been renamed to \ref Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API + * naming scheme. + * - The \c Pipe_IsSetupINReceived() and \c Pipe_IsOutReady() macros have been renamed to \ref Pipe_IsINReceived() and \ref Pipe_IsOUTReady() + * respectively. + * - The new \ref Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous \c Pipe_ClearSetupOUT() macro. + * - The \c Pipe_IsSetupSent() macro has been renamed to \ref Pipe_IsSETUPSent(). + * - The \c Pipe_ClearSetupSent() macro is no longer applicable and should be removed. + * - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Pipe_Read_Word()) have + * been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions. + * - The \c Host_IsResetBusDone() macro has been renamed to \c Host_IsBusResetComplete(). + * - The \c Pipe_Ignore_Word() and \c Pipe_Ignore_DWord() functions have been renamed to \c Pipe_Discard_Word() and \c Pipe_Discard_DWord() + * to remain consistent with the rest of the pipe API. + * - It is no longer needed to manually include the headers from \c LUFA/Drivers/USB/Class, as they are now included along with the rest + * of the USB headers when \c LUFA/Drivers/USB/USB.h is included. + * - Functions in the \c ConfigDescriptor.h header file no longer have \c Host_ as part of their names. + * - The \c ProcessHIDReport() has been renamed to \ref USB_ProcessHIDReport(), \c GetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo() + * and \c SetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo(). + * - The values of the \ref DSearch_Return_ErrorCodes_t and \ref DSearch_Comp_Return_ErrorCodes_t enums have had their respective \c Descriptor_Search + * and \c Descriptor_Search_Comp prefixes changed to all caps. + * - The \c USB_HostRequest global has been renamed to \ref USB_ControlRequest, and is used in Device mode also. The \c USB_Host_Request_Header_t + * structure type has been renamed to \ref USB_Request_Header_t. + * - The values of the \ref Pipe_Stream_RW_ErrorCodes_t enum have had the \c ERROR_ portion of their names removed. + * + * \section Sec_Migration090401 Migrating from 090209 to 090401 + * + * All + * - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant \c F_USB, + * defined in the project makefile and passed to the compiler via the -D switch. + * - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the + * EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called. + * - As the avr-libc macro has been corrected in recent avr-libc distributions, the \c SetSystemClockPrescaler() macro has been removed. + * Include \c and call \c clock_prescale_set(clock_div_1); instead on recent avr-libc distributions. + * + * Library Demos + * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission. + * + * Non-USB Library Components + * - The \c ATTR_ALWAYSINLINE function attribute macro has been renamed to \ref ATTR_ALWAYS_INLINE. + * - Custom board Dataflash drivers now require the implementation of \ref Dataflash_SelectChipFromPage() and \ref Dataflash_SendAddressBytes(). + * + * Device Mode + * - The \c NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to \c FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded + * to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the + * \c NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the \c FEATURELESS_CONTROL_ONLY_DEVICE token with no further + * modifications required. + * + * \section Sec_Migration090209 Migrating from 081217 to 090209 + * + * Device Mode + * - The \c ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c ENDPOINT_TOTAL_ENDPOINTS. + * - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user + * makefile if desired to restore the previous 50ms timeout. + * + * Host Mode + * - The \c PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c PIPE_TOTAL_ENDPOINTS. + * - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user + * makefile if desired to restore the previous 50ms timeout. + * - The \c USB_DeviceEnumerationFailed event now contains a second \c SubErrorCode parameter, giving the error code of the function + * which failed. + * - The \c HID_PARSE_Sucessful enum member constant name has been corrected to \ref HID_PARSE_Successful. + * + * Non-USB Library Components + * - The previous \c SPI_SendByte() functionality is now located in \ref SPI_TransferByte(). \ref SPI_SendByte() now discards the return byte + * for speed, to compliment the new \ref SPI_ReceiveByte() function. If bidirectional SPI transfers are required, calls to \ref SPI_SendByte() + * should be changed to \ref SPI_TransferByte(). + * - The serial driver now sets the Tx line as an output explicitly, and enables the pull-up of the Rx line. + * - The \ref Serial_Init() and \c SerialStream_Init() functions now take a second \c DoubleSpeed parameter, which indicates if the USART + * should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at the given AVR + * clock speed. + * + * \section Sec_Migration171208 Migrating from V1.5.3 to 081217 + * + * All + * - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names, + * have been changed to LUFA. + * + * Library Demos + * - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding + * parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version. + * - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and + * KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects + * built on either "WithParser" demo should update to the latest code. + * - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not + * recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes, + * as it is neither a full nor a standards compliant implementation. + * + * Non-USB Library Components + * - The Serial_IsCharReceived() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h. + * + * Device Mode + * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask + * to be used in the Options parameter of the USB_Init() function. + * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is + * currently initialized. + * - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library + * or user request processing code to exceed the strict USB timing requirements on control transfers. + * - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured + * after a Reset event, it should be altered to explicitly re-initialize all user endpoints. + * - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now + * returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified + * descriptor does not exist. + * - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the + * GetDescriptor function. + * + * Host Mode + * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask + * to be used in the Options parameter of the USB_Init() function. + * - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and + * SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the + * current report. If sending a report to a multi-report device, the first byte of the report is automatically + * set to the report ID of the given report item. + * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is + * currently initialized. + * + * \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3 + * + * Library Demos + * - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number + * string is required in Mass Storage devices, or devices which are to retain settings when moved between + * ports on a machine. As people were not changing the serial number value, this was causing conflicts and so + * the serial number descriptor has been removed from all but the Mass Storage demo, which requires it. + * - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated + * them. Projects built upon either demo should upgrade to the latest code. + * - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented. + * - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built + * on the MassStoreDemo code should update to the latest version. + * - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused + * problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade + * to the latest code. + * - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects + * built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code. + * - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should + * upgrade to the latest code. + * - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was + * previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update + * to the latest code. + * + * Device Mode + * - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream. + * If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The + * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired + * timeout duration in ms. + * - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled + * and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and + * USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details. + * - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated + * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing + * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. + * + * Host Mode + * - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream. + * If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The + * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired + * timeout duration in ms. + * - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures. + * - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated + * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing + * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. + * + * \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2 + * + * Library Demos + * - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations + * of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade + * to the latest code. + * - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where + * possible any existing devices upgrade to the latest bootloader code. + * + * \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1 + * + * Library Demos + * - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the + * global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo + * should upgrade to the latest code. + * - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID + * demos should upgrade to the latest code. + * - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors. + * Projects built upon the HID demos should upgrade to the latest code. + * - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo + * should upgrade to the latest code. + * - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power. + * Projects built upon the AudioOut demo should upgrade to the latest code. + * + * \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0 + * + * Library Demos + * - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To + * avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing + * projects should at least manually correct the BCD version numbers, or preferably update the descriptors to + * encode the version number in BCD format using the new macro. + * - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos + * based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the + * HID demos should also be updated accordingly. + * - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission. + * Failure to do this on projects which always or frequently send full packets will cause buffering issues on + * the host OS. All CDC user projects are advised to update their transmission routines in the same manner as + * the library CDC demos. + * - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected + * Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven + * demos should also update to properly save and restore the selected Endpoint/Pipe. + * + * Non-USB Library Components + * - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only + * compatible with avr-libc library versions newer than the time before the functionality of the deleted + * headers was available. + * + * Device Mode + * - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and + * functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API. + * The previously split Type and Index parameters are now passed as the original wValue parameter to the + * function, to make way for the USB specification wIndex parameter which is not the same as the + * previous Index parameter. + * - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the + * official USB specification. Existing code will need to be altered to use the new parameter names. + * - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more + * appropriate. It fires in an identical manner to the previously named event, thus the only change to be made + * is the event name itself in the user project. + * - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a + * pseudo-descriptor modeled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type + * descriptor as indicated in the USB specification, thus all device code must be updated accordingly. + * - The names of several Endpoint macros have been changed to be more consistent with the rest of the library, + * with no implementation changes. This means that existing code can be altered to use the new macro names + * with no other considerations required. See Endpoint.h for the new macro names. + * - The previous version of the MassStorage demo had an incorrect value in the SCSI_Request_Sense_Response_t + * structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this + * demo should correct the structure value to maintain compatibility across multiple OS platforms. + * - By default, the descriptor structures use the official USB specification names for the elements. Previous + * versions of the library used non-standard (but more verbose) names, which are still usable in the current + * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file + * documentation for more details. + * + * Host Mode + * - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its + * members renamed to the official USB specification names for requests. Existing code will need to be updated + * to use the new names. + * - The names of several Pipe macros have been changed to be more consistent with the rest of the library, + * with no implementation changes. This means that existing code can be altered to use the new macro names + * with no other considerations required. See Pipe.h for the new macro names. + * - By default, the descriptor structures use the official USB specification names for the elements. Previous + * versions of the library used non-standard (but more verbose) names, which are still usable in the current + * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file + * documentation for more details. + * - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h + * module documentation for the new macro names. + * + * Dual Role Mode + * - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing + * projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG + * header inside the library. + * - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has + * finished enumerating the device. Projects relying on the event only firing in Host mode should be updated + * so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST. + */ + diff --git a/LUFA/DoxygenPages/ProgrammingApps.txt b/LUFA/DoxygenPages/ProgrammingApps.txt new file mode 100644 index 000000000..c1b2181c8 --- /dev/null +++ b/LUFA/DoxygenPages/ProgrammingApps.txt @@ -0,0 +1,27 @@ +/** \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. + */ + +/** \page Page_ProgrammingApps Programming an Application into a USB AVR + * + * Once you have built an application, you will need a way to program in the resulting ".HEX" file (and, if your + * application uses EEPROM variables with initial values, also a ".EEP" file) into your USB AVR. Normally, the + * reprogramming of an AVR device must be performed using a special piece of programming hardware, through one of the + * supported AVR programming protocols - ISP, HVSP, HVPP, JTAG or dW. This can be done through a custom programmer, + * a third party programmer, or an official Atmel AVR tool - for more information, see the Atmel.com website. + * + * Alternatively, you can use the bootloader. From the Atmel factory, each USB AVR comes preloaded with the Atmel + * DFU (Device Firmware Update) class bootloader, a small piece of AVR firmware which allows the remainder of the + * AVR to be programmed through a non-standard interface such as the serial USART port, SPI, or (in this case) USB. + * Bootloaders have the advantage of not requiring any special hardware for programming, and cannot usually be erased + * or broken without an external programming device. They have disadvantages however; they cannot change the fuses of + * the AVR (special configuration settings that control the operation of the chip itself) and a small portion of the + * AVR's FLASH program memory must be reserved to contain the bootloader firmware, and thus cannot be used by the + * loaded application. Atmel's DFU bootloader is either 4KB (for the smaller USB AVRs) or 8KB (for the larger USB AVRs). + * + * If you wish to use the DFU bootloader to program in your application, refer to your DFU programmer's documentation. + * Atmel provides a free utility called FLIP which is USB AVR compatible, and an open source (Linux compatible) + * alternative exists called "dfu-programmer". + */ diff --git a/LUFA/DoxygenPages/SoftwareBootloaderJump.txt b/LUFA/DoxygenPages/SoftwareBootloaderJump.txt new file mode 100644 index 000000000..1fad85fb7 --- /dev/null +++ b/LUFA/DoxygenPages/SoftwareBootloaderJump.txt @@ -0,0 +1,71 @@ +/** \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. + */ + +/** + * \page Page_SoftwareBootloaderStart Entering the Bootloader via Software + * + * A common requirement of many applications is the ability to jump to the programmed bootloader of a chip + * on demand, via the code's firmware (i.e. not as a result of any physical user interaction with the + * hardware). This might be required because the device does not have any physical user input, or simply + * just to streamline the device upgrade process on the host PC. + * + * The following C code snippets may be used to enter the bootloader upon request by the user application. + * By using the watchdog to physically reset the controller, it is ensured that all system hardware is + * completely reset to their defaults before the bootloader is run. This is important; since bootloaders + * are written to occupy a very limited space, they usually make assumptions about the register states based + * on the default values after a hard-reset of the chip. + * + * \section Sec_SoftareBootAVR8 AVR8 Architecture + * The following software bootloader jump code is written for the AVR8 architecture. + * + * \code + * #include + * #include + * #include + * + * #include + * #include + * + * uint32_t Boot_Key ATTR_NO_INIT; + * + * #define MAGIC_BOOT_KEY 0xDC42ACCA + * #define BOOTLOADER_START_ADDRESS (FLASH_SIZE_BYTES - BOOTLOADER_SEC_SIZE_BYTES) + * + * void Bootloader_Jump_Check(void) ATTR_INIT_SECTION(3); + * void Bootloader_Jump_Check(void) + * { + * // If the reset source was the bootloader and the key is correct, clear it and jump to the bootloader + * if ((MCUSR & (1 << WDRF)) && (Boot_Key == MAGIC_BOOT_KEY)) + * { + * Boot_Key = 0; + * ((void (*)(void))BOOTLOADER_START_ADDRESS)(); + * } + * } + * + * void Jump_To_Bootloader(void) + * { + * // If USB is used, detach from the bus and reset it + * USB_Disable(); + * + * // Disable all interrupts + * cli(); + * + * // Wait two seconds for the USB detachment to register on the host + * Delay_MS(2000); + * + * // Set the bootloader key to the magic value and force a reset + * Boot_Key = MAGIC_BOOT_KEY; + * wdt_enable(WDTO_250MS); + * for (;;); + * } + * \endcode + * + * Note that the bootloader magic key can be any arbitrary value. The FLASH_SIZE_BYTES and + * BOOTLOADER_SEC_SIZE_BYTES tokens should be replaced with the total flash size of the AVR + * in bytes, and the allocated size of the bootloader section for the target AVR. + * + */ + diff --git a/LUFA/DoxygenPages/VIDAndPIDValues.txt b/LUFA/DoxygenPages/VIDAndPIDValues.txt new file mode 100644 index 000000000..17d9e1782 --- /dev/null +++ b/LUFA/DoxygenPages/VIDAndPIDValues.txt @@ -0,0 +1,424 @@ +/** \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. + */ + +/** \page Page_VIDPID VID and PID values + * + * \section Sec_VIDPID_Allocations + * The LUFA library uses VID/PID combinations generously donated by Atmel. The following VID/PID combinations + * are used within the LUFA demos, and thus may be re-used by derivations of each demo. Free PID values may be + * used by future LUFA demo projects. + * + * These VID/PID values should not be used in commercial designs under any circumstances. Private projects + * may use the following values freely, but must accept any collisions due to other LUFA derived private projects + * sharing identical values. It is suggested that private projects using interfaces compatible with existing + * demos share the same VID/PID value. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
+ * VID + * + * PID + * + * Usage + *
+ * 0x03EB + * + * 0x2040 + * + * Test VID/PID (See below) + *
+ * 0x03EB + * + * 0x2041 + * + * Mouse Demo Application + *
+ * 0x03EB + * + * 0x2042 + * + * Keyboard Demo Application + *
+ * 0x03EB + * + * 0x2043 + * + * Joystick Demo Application + *
+ * 0x03EB + * + * 0x2044 + * + * CDC Demo Application + *
+ * 0x03EB + * + * 0x2045 + * + * Mass Storage Demo Application + *
+ * 0x03EB + * + * 0x2046 + * + * Audio Output Demo Application + *
+ * 0x03EB + * + * 0x2047 + * + * Audio Input Demo Application + *
+ * 0x03EB + * + * 0x2048 + * + * MIDI Demo Application + *
+ * 0x03EB + * + * 0x2049 + * + * MagStripe Project + *
+ * 0x03EB + * + * 0x204A + * + * CDC Bootloader + *
+ * 0x03EB + * + * 0x204B + * + * USB to Serial Demo Application + *
+ * 0x03EB + * + * 0x204C + * + * RNDIS Demo Application + *
+ * 0x03EB + * + * 0x204D + * + * Combined Keyboard and Mouse Demo Application + *
+ * 0x03EB + * + * 0x204E + * + * Dual CDC Demo Application + *
+ * 0x03EB + * + * 0x204F + * + * Generic HID Demo Application + *
+ * 0x03EB + * + * 0x2060 + * + * Benito Programmer Project + *
+ * 0x03EB + * + * 0x2061 + * + * Combined Mass Storage and Keyboard Demo + *
+ * 0x03EB + * + * 0x2062 + * + * Combined CDC and Mouse Demo + *
+ * 0x03EB + * + * 0x2063 + * + * Mass Storage/HID Interface Datalogger Project + *
+ * 0x03EB + * + * 0x2064 + * + * Interfaceless Control-Only LUFA Devices + *
+ * 0x03EB + * + * 0x2065 + * + * Test and Measurement Demo + *
+ * 0x03EB + * + * 0x2066 + * + * Multiple Report Keyboard/Mouse HID Demo + *
+ * 0x03EB + * + * 0x2067 + * + * HID Class Bootloader + *
+ * 0x03EB + * + * 0x2068 + * + * Virtual Serial/Mass Storage Demo + *
+ * 0x03EB + * + * 0x2069 + * + * Webserver Project + *
+ * 0x03EB + * + * 0x206A + * + * Media Control Project + *
+ * 0x03EB + * + * 0x206B + * + * Currently Unallocated + *
+ * 0x03EB + * + * 0x206C + * + * Currently Unallocated + *
+ * 0x03EB + * + * 0x206D + * + * Currently Unallocated + *
+ * 0x03EB + * + * 0x206E + * + * Currently Unallocated + *
+ * 0x03EB + * + * 0x206F + * + * Currently Unallocated + *
+ * + * \section Sec_Test_VIDPID The Test VID/PID Combination: + * For use in testing of LUFA powered devices during development only, by non-commercial entities. + * All devices must accept collisions on this VID/PID range (from other in-development LUFA devices) + * to be resolved by using a unique release number in the Device Descriptor. No devices using this + * VID/PID combination may be released to the general public. + */ + diff --git a/LUFA/DoxygenPages/WhyUseLUFA.txt b/LUFA/DoxygenPages/WhyUseLUFA.txt new file mode 100644 index 000000000..5644be07c --- /dev/null +++ b/LUFA/DoxygenPages/WhyUseLUFA.txt @@ -0,0 +1,43 @@ +/** \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. + */ + +/** + * \page Page_WhyUseLUFA Why Use LUFA? + * + * The LUFA Library has many advantages over implementing the code required to drive the USB AVRs directly. + * It is much more preferable to incorporate LUFA into your existing projects - or even make a new project + * using LUFA - than it is to start from scratch and use the USB AVR registers directly. Some of these reasons + * are: + * + * - Portability: + * The LUFA stack is designed to run (at some capacity) on the entire Atmel range of USB AVRs, regardless of the + * exact USB controller revision used. If you decide to implement your own USB stack, you will either need to + * code around the differences between each USB AVR controller's implementation between different chip models, or + * require your code to run on only one specific USB AVR model series. + * + * - Speed of Development: + * LUFA ships with a wide range of pre-made demos, bootloaders and projects for you to try, learn and extend. Each + * of these demos are tested (where possible) across as many USB AVRs and Operating Systems as possible, to ensure + * that they work under as many conditions as possible. In addition, there are inbuilt class drivers for several of + * the USB classes which you can make use of in your projects with minimal effort. + * + * - Maintainability: + * As LUFA takes care of much of the USB implementation, you can be left to focusing on your actual project's + * functionality, rather than being held back developing and debugging the USB stack code. Since LUFA uses clear APIs + * for USB development, your code will be more readable than if it had the low level USB stack code integrated into + * it directly. Updating the LUFA library is a simple folder-replacement and gives new features and bug fixes in + * seconds each time a new release is made. + * + * - Size: + * Not just requiring less code to make complex USB devices, LUFA is written to compile down as much as possible into + * optimal code, to occupy only a small space for its feature set. + * + * - Support: + * Since many people are now using LUFA in their own projects, you can take advantage of other's knowledge when you run + * into difficulties or need some advice. In addition, you can also email the library author to receive personalized + * support when you need it (subject to author's schedule). + */ + diff --git a/LUFA/DoxygenPages/WritingBoardDrivers.txt b/LUFA/DoxygenPages/WritingBoardDrivers.txt new file mode 100644 index 000000000..e09e7d0d9 --- /dev/null +++ b/LUFA/DoxygenPages/WritingBoardDrivers.txt @@ -0,0 +1,27 @@ +/** \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. + */ + +/** \page Page_WritingBoardDrivers Writing LUFA Board Drivers + * + * LUFA ships with several basic pre-made board drivers, to control hardware present on the supported board + * hardware - such as Dataflash ICs, LEDs, Joysticks, or other hardware peripherals. When compiling an application + * which makes use of one or more board drivers located in LUFA/Drivers/Board, you must also indicate what board + * hardware you are using in your project makefile. This is done by defining the BOARD macro using the -D switch + * passed to the compiler, with a constant of BOARD_{Name}. For example -DBOARD=BOARD_USBKEY instructs the + * compiler to use the USBKEY board hardware drivers. + * + * If your application does not use *any* board level drivers, you can omit the definition of the BOARD macro. + * However, some users may wish to write their own custom board hardware drivers which are to remain compatible + * with the LUFA hardware API. To do this, the BOARD macro should be defined to the value BOARD_USER. This indicates + * that the board level drivers should be located in a folder named "Board" located inside the application's folder. + * + * When used, the driver stub files located in the LUFA/CodeTemplates/DriverStubs folder should be copied to the user + * Board/ directory, and fleshed out to include the values and code needed to control the custom board hardware. Once + * done, the existing LUFA board level APIs (accessed in the regular LUFA/Drivers/Board/ folder) will redirect to the + * user board drivers, maintaining code compatibility and allowing for a different board to be selected through the + * project makefile with no code changes. + */ + diff --git a/LUFA/DoxygenPages/footer.htm b/LUFA/DoxygenPages/footer.htm new file mode 100644 index 000000000..318a485fb --- /dev/null +++ b/LUFA/DoxygenPages/footer.htm @@ -0,0 +1 @@ +LUFA Project Page | Support Mailing List | Donate | Four Walled Cubicle - LUFA, the Lightweight USB Framework for AVRs \ No newline at end of file diff --git a/LUFA/ManPages/AboutLUFA.txt b/LUFA/ManPages/AboutLUFA.txt deleted file mode 100644 index c7374bce6..000000000 --- a/LUFA/ManPages/AboutLUFA.txt +++ /dev/null @@ -1,20 +0,0 @@ -/** \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. - */ - -/** - * \page Page_AboutLUFA About LUFA - * - * This section of the manual contains information about the library as a whole, including its supported targets, - * past and planned changes, and links to other projects incorporating LUFA. - * - * Subsections: - * \li \subpage Page_DeviceSupport - Current Device and Hardware Support - * \li \subpage Page_Resources - LUFA and USB Related Resources - * \li \subpage Page_ChangeLog - Project Changelog - * \li \subpage Page_FutureChanges - Planned Changes to the Library - * \li \subpage Page_LUFAPoweredProjects - Other Projects Using LUFA - */ - diff --git a/LUFA/ManPages/AlternativeStacks.txt b/LUFA/ManPages/AlternativeStacks.txt deleted file mode 100644 index f9d6cbbcd..000000000 --- a/LUFA/ManPages/AlternativeStacks.txt +++ /dev/null @@ -1,69 +0,0 @@ -/** \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. - */ - -/** - * \page Page_AlternativeStacks Alternative USB AVR Stacks - * - * LUFA is not the only stack available for the USB AVRs, although it is perhaps the best (see \ref Page_WhyUseLUFA). - * In the interests of completeness and user choice, other known USB AVR stacks are listed here. - * - * \section Sec_HardwareStacks Hardware USB AVR Stacks - * These are the known alternative USB stacks which are designed for and run exclusively on the USB AVR series microcontrollers, - * which contain on-chip USB controller hardware for maximum features and speed. - * - * - Name: Atmel USB AVR Stack (Atmel Inc.) \n - * Cost: Free \n - * License: Atmel Limited License (see Atmel download for details) \n - * Website: http://atmel.com/dyn/products/app_notes.asp?family_id=607#USB \n - * Description: This is the official Atmel USB AVR stack, for their 8-bit USB AVR lineup. Each series of - * USB AVR is separated into a separate download stack, which is both AVR-GCC and IAR compatible. - * - * - Name: Dr. Stefan Salewski's AT90USB1287 Stack (Dr. Stefan Salewski) \n - * Cost: Free \n - * License: GPL \n - * Website: http://www.ssalewski.de/AT90USB_firmware.html.en \n - * Description: This is a GPL'd library specifically designed for the AT90USB1287, by Dr. Stefan Salewski, a - * German Physicist. It compiles for AVR-GCC and can potentially be modified to work on other USB - * AVR models. - * - * - Name: FreakUSB Stack (FreakLabs) \n - * Cost: Free \n - * License: Modified BSD \n - * Website: http://freaklabs.org/index.php/FreakUSB-Open-Source-USB-Device-Stack.html \n - * Description: An open source simple USB stack for a selection of the USB AVRs. Contains a sample class driver - * for the CDC-ACM class, however other class driver implementations are also possible. - * - * - Name: PJRC Teensy Stack (Paul Stoffregen) \n - * Cost: Free \n - * License: BSD \n - * Website: http://www.pjrc.com/teensy/usb_debug_only.html \n - * Description: Not so much a complete stack as a collection of USB enabled demos, this library is specifically - * designed for the PJRC Teensy line of USB AVRs, and thus may need to be modified for other USB AVR - * chips. These minimal code samples shows the inner workings of the USB controller, without all the - * abstraction present in most other USB AVR stacks. - * - * \section Sec_SoftwareStacks Software AVR Stacks - * These are the known alternative USB stacks which can run on regular AVR models, lacking dedicated hardware USB controllers - * via a bit-banged (emulated) version of the USB protocol. They are limited in their capabilities due to the cycles required - * to be dedicated to managing the USB bus, but offer a cheap way to implement USB functionality into a design. - * - * - Name: AVR309: Software USB (Atmel) \n - * Cost: Free \n - * License: None Stated \n - * Website: http://www.atmel.com/dyn/Products/app_notes.asp?family_id=607 \n - * Description: Atmel's official software USB implementation, an Application Note containing work by Igor Cesko. This - * is a minimal assembly-only implementation of software USB, providing HID functionality. Less compile - * options than V-USB (see below). - * - * - Name: V-USB (Objective Development) \n - * Cost: Free for some uses, see website for licensing \n - * License: Dual GPL2/Custom \n - * Website: http://www.obdev.at/products/vusb/index.html \n - * Description: Well regarded and complete USB 1.1 software stack for several AVR models, implementing Low Speed HID. - * Used in many commercial and non-commercial designs, with user-submitted projects available for viewing - * on the company's website. Uses C language code mixed with assembly for time-critical sections. - */ - diff --git a/LUFA/ManPages/Author.jpg b/LUFA/ManPages/Author.jpg deleted file mode 100644 index e8f5541a0..000000000 Binary files a/LUFA/ManPages/Author.jpg and /dev/null differ diff --git a/LUFA/ManPages/BuildingLinkableLibraries.txt b/LUFA/ManPages/BuildingLinkableLibraries.txt deleted file mode 100644 index e5782df9f..000000000 --- a/LUFA/ManPages/BuildingLinkableLibraries.txt +++ /dev/null @@ -1,23 +0,0 @@ -/** \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. - */ - -/** \page Page_BuildLibrary Building as a Linkable Library - * - * The LUFA library can be built as a proper linkable library (with the extention .a) under AVR-GCC, so that - * the library does not need to be recompiled with each revision of a user project. Instructions for creating - * a library from a given source tree can be found in the AVR-GCC user manual included in the WinAVR install - * /Docs/ directory. - * - * However, building the library is not recommended, as the static (compile-time) options will be - * unable to be changed without a recompilation of the LUFA code. Therefore, if the library is to be built - * from the LUFA source, it should be made to be application-specific and compiled with the static options - * that are required for each project (which should be recorded along with the library). - * - * Normal library use has the library components compiled in at the same point as the application code, as - * demonstrated in the library demos and applications. This is the preferred method, as the library is recompiled - * each time to ensure that all static options for a particular application are applied. - */ - diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt deleted file mode 100644 index 5e917efed..000000000 --- a/LUFA/ManPages/ChangeLog.txt +++ /dev/null @@ -1,1323 +0,0 @@ -/** \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. - */ - - /** \page Page_ChangeLog Project Changelog - * - * \section Sec_ChangeLogXXXXXX Version XXXXXX - * New: - * - Core: - * - None - * - Library Applications: - * - Added User Application APIs to the CDC and DFU class bootloaders - * - * Changed: - * - Core: - * - When automatic PLL management mode is enabled on the U4 series AVR8 chips, the PLL is now configured for 48MHz and not - * a divided 96MHz, to lower power consumption and to keep the system within the datasheet specs for 3.3V operation (thanks to Scott Vitale) - * - Library Applications: - * - None - * - * Fixed: - * - Core: - * - Fixed ring buffer size limited to 255 elements, instead of the intended 65535 elements. - * - Library Applications: - * - Added reliability patches to the AVRISP-MKII Clone project's PDI/TPI protocols (thanks to Justin Mattair) - * - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled - * - * \section Sec_ChangeLog111009 Version 111009 - * New: - * - Core: - * - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration - * tokens as an alternative to tokens defined in the project makefile - * - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting - * - Added Audio class control request definitions - * - Added new CALLBACK_Audio_Device_GetSetEndpointProperty() callback to the Audio Device Class driver to allow for endpoint control manipulations - * such as data sample rates - * - Added support for the Audio class GET STATUS request in the Audio Device Class driver so that it is correctly ACKed when sent by the host - * - Added new EVENT_Audio_Device_StreamStartStop() event to the Audio Device Class driver to detect stream start/stop events - * - Added board driver support for the Busware TUL board - * - Added board hardware driver support for the EVK1100 board - * - Added board hardware driver support for the EVK1104 board - * - Added new Host mode Audio Class driver - * - Added new SPI_GetCurrentMode() function to the SPI peripheral driver - * - Added RingBuffer_GetFreeCount() function to the Ring Buffer driver - * - Added new HID_Host_SetIdlePeriod() function to the HID Host Class driver - * - Added new USB_Host_ConfigurationNumber global variable to indicate the selected configuration in an attached device - * - Added new USB_Host_GetDeviceStatus() function to the host standard request function set - * - Added AVR USB XMEGA architecture port (currently incomplete/experimental) - * - Added new STRINGIFY() and STRINGIFY_EXPANDED() convenience macros - * - Added new JTAG_DISABLE() macro for the AVR8 architecture - * - Added Device Qualifier standard descriptor structure definitions USB_StdDescriptor_DeviceQualifier_t and USB_Descriptor_DeviceQualifier_t - * - Library Applications: - * - Added RNDIS device mode to the Webserver project - * - Added new incomplete AndroidAccessoryHost Host LowLevel demo - * - Added new HIDReportViewer project - * - Added new MediaControl project - * - Added new AudioInputHost Host ClassDriver demo - * - Added new AudioOutputHost Host ClassDriver demo - * - Added new AudioInputHost Host LowLevel demo - * - Added new AudioOutputHost Host LowLevel demo - * - Added new "checksource" target to all library project makefiles - * - Added new VTARGET_USE_INTERNAL_REF configuration option to the AVRISP-MKII clone project (thanks to Volker Bosch) - * - * Changed: - * - Core: - * - Altered the definition of the USB_Audio_Descriptor_Format_t descriptor so that the user is now responsible for supplying - * the supported audio sampling rates, to allow for multiple audio interfaces with different numbers of supported rates and/or - * continuous sample rates - * - Pipe_BoundEndpointNumber() has been renamed to Pipe_GetBoundEndpointAddress(), and now returns the correct endpoint direction - * as part of the endpoint address - * - Renamed global state variables that are specific to a certain USB mode to clearly indicate which mode the variable relates to, - * by changing the USB_* prefix to USB_Device_* or USB_Host_* - * - Removed the HOST_STATE_WaitForDeviceRemoval and HOST_STATE_Suspended host state machine states, as these are no longer required - * - Altered the USB_Host_SetDeviceConfiguration() function to update the global Host state machine state and the new - * USB_Host_ConfigurationNumber global as required - * - Added endian correcting code to the library USB class drivers for multiple architecture support - * - Removed the ENDPOINT_DESCRIPTOR_DIR_* macros, replaced by ENDPOINT_DIR_* instead - * - Renamed the JTAG_DEBUG_ASSERT() macro to JTAG_ASSERT() - * - Added variable number of axis to HID_DESCRIPTOR_JOYSTICK() for multi-axis joysticks above just X and Y - * - Renamed USB_Host_ClearPipeStall() to USB_Host_ClearEndpointStall() as the function works on an endpoint address within the attached device, - * and not a Pipe within the host - * - The MS_Host_ResetMSInterface() now performs a full Mass Storage reset sequence to prevent data corruption in the event of a device - * lock up or timeout (thanks to David Lyons) - * - Added endian-correction to the CDC driver's Line Encoding control request handlers. - * - Library Applications: - * - Modified the Low Level and Class Driver AudioInput and AudioOutput demos to support multiple audio sample rates - * - Updated all host mode demos and projects to use the EVENT_USB_Host_DeviceEnumerationComplete() event callback for device configuration - * instead of manual host state machine manipulations in the main application task - * - Changed the reports in the GenericHID device demos to control the board LEDs, to reduce user confusion over the callback routines - * - Added reliability patches to the AVRISP-MKII Clone project's ISP and PDI/TPI protocols (thanks to Justin Mattair) - * - * Fixed: - * - Core: - * - Large number of documentation and code comment corrections (thanks to Andrey from Microsin.ru) - * - Fixed possibility of the AVR's SPI interface being pulled out of master mode if the /SS pin is a input and pulled low (thanks - * to Andrey from Microsin.ru) - * - Fixed compile error when FIXED_CONTROL_ENDPOINT_SIZE compile time option was disabled, and a USE_*_DESCRIPTORS compile time - * option was not enabled on the AVR8s - * - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects - * - Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices - * - Fixed USB_USBTask not being called internally in stream transfers between packets when Partial Stream Transfers are used - * - Fixed swapped TWI_ADDRESS_READ and TWI_ADDRESS_WRITE values - * - Fixed TWI_ReadPacket() not releasing the TWI bus on read completion - * - Fixed optimization error in the HID Parser item value USB_SetHIDReportItemInfo() and USB_GetHIDReportItemInfo() routines if the report item was - * \c NULL (which should be allowable according to the API) - * - Fixed HID Parser CALLBACK_HIDParser_FilterHIDReportItem() callback function not being passed a cacheable report item pointer - * - Fixed HID Parser's largest report size bit count not including the size of the last parsed report item - * - Fixed HID host driver's largest HID report size count corrupt when the number of report bits exceeds 255 - * - Library Applications: - * - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2 - * - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed - * - Fixed compile errors in the incomplete BluetoothHost demo application (thanks to Timo Lindfors) - * - Fixed incorrect Dataflash buffer use in the DataflashManager_WriteBlocks_RAM() function of several demos/projects (thanks to Jeremy Willden) - * - Fixed incorrect logging interval (always 500ms longer than requested) in the TempDataLogger project - * - Fixed incorrect buffer size check in the USBtoSerial project (thanks to Yuri A Nikiforov) - * - Fixed port state table corruption in the TCP layer of the RNDIS Ethernet device demos - * - * \section Sec_ChangeLog110528 Version 110528 - * New: - * - Core: - * - Added new ORDERED_EP_CONFIG compile time option to restrict endpoint/pipe configuration to ascending order - * in exchange for a smaller compiled program binary size - * - Added a new general RingBuff.h miscellaneous ring buffer library driver header - * - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses - * - Added new GCC_MEMORY_BARRIER() macro to prevent instruction reordering across boundaries - * - Added basic driver example use code to the library documentation - * - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions - * - Added new ADC_GET_CHANNEL_MASK() convenience macro - * - Added new HID report item macros (with HID_RI_ prefix) to allow for easy creation and editing of HID report descriptors - * - Added new HID_DESCRIPTOR_MOUSE(), HID_DESCRIPTOR_KEYBOARD(), HID_DESCRIPTOR_JOYSTICK() and HID_DESCRIPTOR_VENDOR() macros - * for easy automatic creation of basic USB HID device reports - * - Added new MAX() and MIN() convenience macros - * - Added new Serial_SendData() function to the Serial driver - * - Added board driver support for the Sparkfun ATMEGA8U2 breakout board - * - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus) - * - Internal restructuring for eventual multiple architecture ports - * - Added AVR32 UC3 architecture port (currently incomplete/experimental) - * - Added new architecture independent functions to enable, disable, save and restore the Global Interrupt Enable flags - * - Added new RNDIS Device Class Driver packet send and receive functions - * - Library Applications: - * - Added ability to write protect Mass Storage disk write operations from the host OS - * - Added new MIDIToneGenerator project - * - Added new KeyboardMouseMultiReport Device ClassDriver demo - * - Added new VirtualSerialMassStorage Device ClassDriver demo - * - Added HID class bootloader, compatible with a modified version of the command line Teensy loader from PJRC.com - * - Added LED flashing to the CDC and DFU class bootloaders to indicate when they are running - * - * Changed: - * - Core: - * - Unordered Endpoint/Pipe configuration is now allowed once again by default via the previous reconfig workaround - * - Refactored Host mode Class Driver *_Host_ConfigurePipes() routines to be more space efficient when compiled - * - Added new *_ENUMERROR_PipeConfigurationFailed error codes for the *_Host_ConfigurePipes() routines - * - The USARTStream global is now public and documented in the SerialStream module, allowing for the serial USART - * stream to be accessed via its handle rather than via the implicit stdout and stdin streams - * - The FAST_STREAM_TRANSFERS compile time option has been removed due to lack of use and low cost/benefit ratio - * - Altered all endpoint/pipe stream transfers so that the new BytesProcessed parameter now points to a location - * where the number of bytes in the transfer that have been completed can be stored (or NULL if entire transaction - * should be performed in one chunk) - * - The NO_STREAM_CALLBACKS compile time option has now been removed due to the new partial stream transfer feature - * - Changed over all project and demo HID report descriptors to use the new HID report item macros - * - Moved the HIDParser.c source file to the LUFA/Drivers/USB/Class/Common/ directory from the LUFA/Drivers/USB/Class/Host/ - * - Added support to the HID parser for extended USAGE items that contain the usage page as well as the usage index - * - Removed the SerialStream driver, rolled functionality into the regular Serial peripheral driver via the new - * Serial_CreateStream() and Serial_CreateBlockingStream() functions - * - Renamed the low level Serial byte send/receive functions, to be consistent with the CDC class driver byte functions - * - Altered the behaviour of the serial byte reception function so that is is non-blocking, and now returns a negative - * value if no character is received (to remain consistent with the CDC class driver byte reception routines) - * - Renamed the PRNT_Host_SendString(), CDC_Host_SendString() and CDC_Device_SendString() functions to *_SendData(), and - * added new versions of the *_SendString() routines that expect a null terminated string instead - * - Renamed all driver termination *_ShutDown() functions to the more logical name *_Disable() - * - Reduced latency for executing the Start-Of-Frame events (if enabled in the user application) - * - Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called - * - Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name - * - Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs when automatic PLL mode is specified - * - F_CLOCK changed to F_USB to be more descriptive, and applicable on future architecture ports - * - Renamed all low level Endpoint_Read_*, Endpoint_Write_* and Endpoint_Discard_* functions to use the number of bits instead of - * a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures - * - Renamed all low level Pipe_Read_*, Pipe_Write_* and Pipe_Discard_* functions to use the number of bits instead of - * a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures - * - Separated out board drivers by architecture in the library internals for better organisation - * - Library Applications: - * - Changed the XPLAINBridge software UART to use the regular timer CTC mode instead of the alternative CTC mode - * via the Input Capture register, to reduce user confusion - * - Combined page and word ISP programming mode code in the AVRISP-MKII clone project to reduce compiled size and - * increase maintainability of the code - * - Changed over library projects to use the new general ring buffer library driver module - * - Added new high level TWI packet read/write commands, altered behaviour of the TWI_StartTransmission() function - * - Changed TempDataLogger project's DS1307 driver to simplify the function interface and prevent a possible race condition - * - Changed AVRISP-MKII project to use the Watchdog interrupt for command timeouts, to reduce CPU usage and free timer 0 - * for other uses - * - Updated the software USART code in the XPLAIN Bridge application so that the incoming bits are sampled at their mid-point - * instead of starting point, to give maximum reliability (thanks to Anton Staaf) - * - * Fixed: - * - Core: - * - Fixed broken USBFOO board drivers due to missing BOARD_USBFOO define - * - Fixed HID host class driver incorrectly binding to HID devices that do not have an OUT endpoint - * - Fixed incorrect definition of the HID_KEYBOARD_SC_D constant in the HID class driver (thanks to Opendous Inc.) - * - Fixed incorrect definition of the HID_KEYBOARD_SC_RIGHT_ARROW constant in the HID class driver (thanks to Joby Taffey) - * - Fixed incorrect endpoint initialisation order in the several device demos (thanks to Rick Drolet) - * - Fixed inverted Minimus board LEDs - * - Fixed incorrect byte ordering in the Audio_Device_WriteSample24 function (thanks to WZab) - * - Fixed several functions in the Host mode Still Image Class driver returning an error code from the incorrect - * error code enum (thanks to Daniel Seibert) - * - Fixed ReportID not being removed from the feature/out report data array in the HID class driver when Report IDs are used - * - Fixed incorrect BUTTONS_BUTTON1 definition for the Minimus board - * - Fixed Still Image Host class driver exiting the descriptor search routine prematurely if the data pipes (but not event pipe) - * is found - * - Fixed missing call to Pipe_SetInfiniteINRequests() in the Pipe_ConfigurePipe() routine - * - Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus) - * - Fixed possible invalid program execution when in host mode if corrupt descriptor lengths are supplied by the attached device - * - Library Applications: - * - Fixed Benito project discarding incoming data from the USB virtual serial port when the USART is busy - * - Fixed broken DFU bootloader, added XPLAIN support for bootloader start when XCK jumpered to ground - * - Fixed broken HID_REQ_GetReport request handler in the Low Level GenericHID demo - * - Fixed possible lost data in the XPLAINBridge, USBtoSerial and Benito projects when the host exceeds the packet - * timeout period on received packets as set by USB_STREAM_TIMEOUT_MS (thanks to Justin Rajewski) - * - Fixed possible programming problem in the AVRISP-MKII clone project when programming specific patterns into a target - * memory space that is only byte (not page) addressable - * - Fixed errors in the incomplete Test and Measurement device demo preventing proper operation (thanks to Pavel Plotnikov) - * - Fixed programming errors in the AVRISP-MKII project when the programming packet is a round multiple of the endpoint bank - * size under avrdude (thanks to Steffan Woltjer) - * - * - * \section Sec_ChangeLog101122 Version 101122 - * New: - * - Core: - * - Added new SCSI_ASENSE_NOT_READY_TO_READY_CHANGE constant to the Mass Storage class driver, to indicate when a previously - * not ready removable medium has now become ready for the host's use (thanks to Martin Degelsegger) - * - Moved the Pipe and Endpoint stream related code to two new USB library core source files EndpointStream.c and PipeStream.c - * - Added new USB_Device_GetFrameNumber() and USB_Host_GetFrameNumber() functions to retrieve the current USB frame number - * - Added new USB_Host_EnableSOFEvents(), USB_Host_DisableSOFEvents() and EVENT_USB_Host_StartOfFrame() for the user application - * handling of USB Start of Frame events while in USB Host mode - * - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the - * Print Host Class driver - * - Added class specific descriptor alternative struct type defines with standard USB-IF element naming - * - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory - * - Added board hardware driver support for the Adafruit U4 breakout board - * - Added board hardware driver support for the Arduino Uno development board - * - Added board hardware driver support for the Blackcat USB JTAG board (thanks to the PSGroove team) - * - Added board hardware driver support for the Busware BUI development board - * - Added board hardware driver support for the Busware CUL V3 868MHZ radio board (thanks to Dirk Tostmann) - * - Added board hardware driver support for the Kernel Concepts USBFOO development board - * - Added board hardware driver support for the Linnix UDIP development board - * - Added board hardware driver support for the Olimex AVR-USB-162 development board (thanks to Steve Fawcett) - * - Added board hardware driver support for the Maximus board (thanks to the PSGroove team) - * - Added board hardware driver support for the Microsin AVR-USB162 breakout board - * - Added board hardware driver support for the Minimus board (thanks to the PSGroove team) - * - Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management - * tasks for each driver is called - * - Added standard keyboard HID report scan-code defines (thanks to Laszlo Monda) - * - Added new Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() and Endpoint_AbortPendingIN() functions - * - Library Applications: - * - Added default test tone generation mode to the Device mode AudioInput demos - * - Added new NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT and NO_LOCK_BYTE_WRITE_SUPPORT compile time options to the - * CDC class bootloader - * - Added new XCK_RESCUE_CLOCK_ENABLE compile time option to the AVRISP-MKII clone programmer project (thanks to Tom Light) - * - * Changed: - * - Core: - * - Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions - * depending of if the given bank size is a compile time constant, as the compiler does a better job of optimizing - * with basic code - * - Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove - * the need for extra casting inside the callback (thanks to Jonathan Kollasch) - * - Reduced HOST_DEVICE_SETTLE_DELAY_MS to 1000ms down from 1500ms to improve device compatibility while in USB Host mode - * - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode correctly now defaults to UID selection mode - * - Renamed and moved class driver common constant definitions to make the naming scheme more uniform - * - Moved the USB mode specifier constants into a new enum, so that they are semantically related to one another - * - Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of supported banks for - * the given endpoint - * - Better algorithm to extract and convert the internal device serial number into a string descriptor (if present) - * - All USB class drivers are now automatically included when LUFA/Drivers/USB.h is included, and no longer need to be separately included - * - The MIDI class drivers now automatically flushes the MIDI interface when the MIDI class driver's USBTask() function is called - * - Renamed the EVENT_USB_Device_UnhandledControlRequest() event to EVENT_USB_Device_ControlRequest() as it is now fired before the library - * request handlers, not afterwards - * - Library Applications: - * - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints - * - Added missing DataflashManager_CheckDataflashOperation() function to the MassStorageKeyboard demo, removed redundant - * SCSI_Codes.h file as these values are part of the MassStorage Class Driver - * - Added compile time error to the AVRISP-MKII project when built for the U4 chips, as the default VTARGET detection ADC channel - * does not exist on these chips (thanks to Marco) - * - Changed all Device mode LowLevel demos and Device Class drivers so that the control request is acknowledged and any data - * transferred as quickly as possible without any processing in between sections, so that long callbacks or event handlers will - * not break communications with the host by exceeding the maximum control request stage timeout period - * - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible - * to free up the Start of Frame flag for interrupt use in the user application - * - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany) - * - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive - * - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices - * - All LowLevel demos changed to use the constants and types defined in the USB class drivers - * - Changed AudioInput and AudioOutput demos to reload the next sample via an interrupt rather than polling the sample timer - * - Rescue clock of the AVRISP-MKII moved to the AVR's OCR1A pin, so that the clock can be generated at all times - * - Changed ClassDriver MIDI demos to process all incoming events in a loop until the bank becomes empty rather than one at a time - * - Changed LowLevel MIDI demos to only clear the incoming event bank once it has become empty to support packed event packets - * - * Fixed: - * - Core: - * - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist - * within the supplied report of a multiple report HID device - * - Fixed critical pipe/endpoint memory allocation issue where the bank memory address space could be silently overlapped - * in the USB controller if the endpoints or pipes were allocated in anything other than ascending order (thanks to Martin Degelsegger) - * - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev) - * - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts - * - Fixed USB_Host_ClearPipeStall() incorrectly determining the endpoint direction from the currently selected pipe - * - Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode - * - Fixed endpoint selection within the CALLBACK_HID_Device_CreateHIDReport() callback function causing broken GET REPORT requests - * - Fixed incorrect command name for EEPROM memory programming in the makefile dfu-ee target - * - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver - * - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set - * - Fixed SPI driver not explicitly setting /SS and MISO pins as inputs when SPI_Init() is called - * - Fixed random enumeration failure while in device mode due to interrupts causing the Set Address request to exceed maximum timings - * - Fixed MIDI_Host_Flush() not aborting early when the specified MIDI host interface was not configured - * - Fixed MIDI class driver send routines silently discarding packets if the endpoint or pipe is busy (thanks to Robin Green) - * - Library Applications: - * - Fixed MassStorage based demos and projects resetting the SCSI sense values before the command is executed, leading to - * missed SCSI sense values when the host retrieves the sense key (thanks to Martin Degelsegger) - * - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control - * request handler - * - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value - * - Fixed incorrect signature reported in the CDC class bootloader for the ATMEGA32U2 - * - Fixed BootloaderCDC project failing on some operating systems due to removed Line Encoding options (thanks to Alexey Belyaev) - * - Fixed broken FLASH/EEPROM programming in the AVRISP-MKII clone project when writing in non-paged mode and the polling byte cannot be used - * - Fixed ISR definition conflict in the XPLAIN bridge between the software UART and the AVRISP-MKII ISP modules - * - Fixed USBtoSerial and XPLAINBridge demos discarding data from the PC if the send buffer becomes full - * - Fixed broken input in the MagStripe reader project due to an incorrect HID report descriptor - * - Fixed incorrect PollingIntervalMS values in the demo/project/bootloader endpoint descriptors (thanks to MCS Electronics) - * - Fixed AVRISP-MKII clone project not starting the target's program automatically after exiting TPI programming mode - * - * - * \section Sec_ChangeLog100807 Version 100807 - * New: - * - Added new ADC_DisableChannel() function (thanks to Mich Davis) - * - Added new VTARGET_REF_VOLTS and VTARGET_SCALE_FACTOR compile time defines to the AVRISP-MKII programmer project to set - * the VTARGET reference voltage and scale factor - * - Added new pgm_read_ptr() macro to Common.h for reading of pointers out of flash memory space - * - Added new SWAPENDIAN_16() and SWAPENDIAN_32() macros to Common.h for statically initialized variables at compile time - * - Added new Drivers/USB/LowLevel/Device.c file to house Device mode specific functions that are more complicated than simple macros - * - Added new AVRStudio 4 project files for all library demos, projects and bootloaders - * - Added ability to set the serial baud rate via the user's terminal in the XPLAINBridge project - * - Added new LUFA module variables for the different source modules in the core library makefile to simplify project makefiles - * - Added start of a new Test and Measurement class demo (thanks to Peter Lawrence) - * - Added new SPI_ORDER_* data order masks to the SPI peripheral driver - * - Added support to the AVRISP-MKII project for ISP speeds slower than 125KHz via a new software SPI driver - * - Added support for the new button/LED on the latest model USBTINY-MKII - * - * Changed: - * - The RingBuff library code has been replaced in the XPLAINBridge, Benito and USBtoSerial projects with an ultra lightweight - * ring buffer to help improve the reliability of the projects - * - The EEPROM stream read/write functions now use eeprom_update_byte() instead of eeprom_write_byte(), so that only - * changed bytes are written to EEPROM to preserve its lifespan - * - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile - * parameters to EEPROM to preserve its lifespan - * - Removed unused line encoding data and control requests from the CDC Bootloader code, to save space - * - Renamed SERIAL_STREAM_ASSERT() macro to STDOUT_ASSERT() - * - The USB_Device_IsRemoteWakeupSent() and USB_Device_IsUSBSuspended() macros have been deleted, as they are now obsolete - * - Rewrote the implementation of the SwapEndian_16() and SwapEndian_32() functions so that they compile down in most instances to - * minimal loads and stores rather than complicated shifts - * - The software UART in the XPLAINBridge has been largely altered to try to improve upon its performance and reliability - * - The USBtoSerial and Benito projects now flushes received data via a flush timer, so that several bytes can be transmitted at once - * - Removed the automated checking of event names in the demo, project and bootloader makefiles due to inconsistencies between the - * behaviour of the command line tools used to perform the check on each platform - * - Internal USB driver source files renamed and moved to ease future possible architecture ports - * - All internal pseudo-function macros have been converted to true inline functions for type-safety and readability - * - Changed LED indicator masks for the AVRISP-MKII project, so that there are defined roles for each LED - * - Altered the CDC Device and Host Class drivers' receive byte routines, so that no data is indicated by the function returning a - * negative value (thanks to Andreas Paulin) - * - Added auto flushing of OUT data to the CDC Host Class driver's USBTask function to automatically flush the send pipe buffer - * - * Fixed: - * - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from - * the last page of FLASH (thanks to Gerard Sexton) - * - Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM - * instead of the split write-only command (thanks to Tim Margush) - * - Fixed RNDISEthernet demos crashing when calculating checksums for Ethernet/TCP packets of more than ~500 bytes due to - * an overflow in the checksum calculation loop (thanks to Kevin Malec) - * - Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host - * - Fixed incorrect signature for the ATMEGA32U2 in the DFU bootloader (thanks to Axel Rohde) - * - Fixed internal device serial not being accessible on the ATMEGAXXU2 AVRs (thanks to Axel Rohde) - * - Fixed void pointer arithmetic in ConfigDescriptor.h breaking C++ compatibility (thanks to Michael Hennebry) - * - Fixed broken PDI EEPROM Section Erase functionality in the AVRISP-MKII project - * - Fixed USB_Device_SendRemoteWakeup() not working when the USB clock was frozen during USB bus suspend (thanks to Brian Dickman) - * - Fixed occasional lockup of the AVRISP project due to the timeout extension code incorrectly extending the timeout in - * PDI and TPI programming modes infinitely - * - Fixed HID device class driver still using PrevReportINBuffer for GetReport control requests even when it has been - * set to NULL by the user application (thanks to Axel Rohde) - * - Fixed MIDI_Device_SendEventPacket() not correctly waiting for the endpoint to become ready (thanks to Robin Green) - * - Fixed Benito and USBtoSerial projects not turning off the USART before reconfiguring it, which could cause incorrect - * operation to occur (thanks to Bob Paddock) - * - Fixed Serial peripheral driver not turning off the USART before reconfiguring it, which would cause incorrect operation - * to occur (thanks to Bob Paddock) - * - Fixed software application start command broken in the DFU class bootloader when dfu-programmer is used due to application - * start address corruption - * - * - * \section Sec_ChangeLog100513 Version 100513 - * New: - * - Added incomplete MIDIToneGenerator project - * - Added new Relay Controller Board project (thanks to OBinou) - * - Added board hardware driver support for the Teensy, USBTINY MKII, Benito and JM-DB-U2 lines of third party USB AVR boards - * - Added new ATTR_NO_INIT variable attribute for global variables that should not be automatically cleared on startup - * - Added new ENDPOINT_*_BusSuspended error code to the Endpoint function, so that the stream functions early-abort if the bus - * is suspended before or during a transfer - * - Added new EVENT_CDC_Device_BreakSent() event and CDC_Host_SendBreak() function to the Device and Host CDC Class drivers - * - Added ReportType parameter to the HID device class driver CALLBACK_HID_Device_ProcessHIDReport() function so that FEATURE - * reports from the host to the device can be correctly processed - * - Added ReportType parameter to the HID host class driver HID_Host_SendReportByID() function so that FEATURE reports can be - * issued to the attached device - * - * Changed: - * - AVRISP programmer project now has a more robust timeout system - * - Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond - * - Webserver project now uses the board LEDs to indicate the current IP configuration state - * - Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired - * - Increased throughput of the USBtoSerial demo on systems that send multiple bytes per packet (thanks to Opendous Inc.) - * - Double bank CDC endpoints in the XPLAIN Bridge project, re-enable JTAG once the mode selection pin has been sampled. - * - Standardized the naming scheme given to configuration descriptor sub-elements in the Device mode demos, bootloaders - * and projects - * - All Class Driver Host mode demos now correctly set the board LEDs to READY once the enumeration process has completed - * - Added LIBUSB_FILTERDRV_COMPAT compile time option to the AVRISP programmer project to make the code compatible with Windows - * builds of avrdude at the expense of AVRStudio compatibility - * - Removed two-step endpoint/pipe bank clear and switch sequence for smaller, faster endpoint/pipe code - * - The USB_Init() function no longer calls sei() - the user is now responsible for enabling interrupts when they are ready - * for them to be enabled (thanks to Andrei Krainev) - * - The Audio_Device_IsSampleReceived() and Audio_Device_IsReadyForNextSample() functions are now inline, to reduce overhead - * - Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be - * selected (thanks to Steffan Woltjer) - * - Removed software PDI and TPI emulation from the AVRISP-MKII clone project as it was very buggy and slow - PDI and TPI must - * now be implemented via separate programming headers - * - The CDC class bootloader now uses a watchdog reset rather than a soft-reset when exited to ensure that all hardware is - * properly reset to their defaults - * - Device mode class driver callbacks are now fired before the control request status stage is sent to prevent the host from - * timing out if another request is immediately fired and the device has a lengthy callback routine - * - The TeensyHID bootloader has been removed, per request from Paul at PJRC - * - The LIBUSB_FILTERDRV_COMPAT compile time option in the XPLAINBridge and AVRISP-MKII projects has been renamed - * LIBUSB_DRIVER_COMPAT, as it applies to all software on all platforms using the libUSB driver - * - * Fixed: - * - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly - * selected when the ISR completes - * - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address - * boundary is crossed during programming or read back (thanks to Gerard Sexton) - * - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled - * - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin - * - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register - * - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus - * - Fixed ADC routines not correctly returning the last result when multiple channels were read - * - Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the - * U4 series USB AVR parts - * - Fixed LowLevel MassStorage demo broken on the U2 series USB AVRs due to unsupported double-banked endpoint modes used - * - Fixed compilation error in the AudioInput demos when MICROPHONE_BIASED_TO_HALF_RAIL is defined (thanks to C. Scott Ananian) - * - Fixed incorrect definition of HID_ALIGN_DATA() causing incorrect HID report item data alignment - * - Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending - * a valid session ID to the device - * - Removed invalid dfu and flip related targets from the bootloaders - bootloaders can only be replaced with an external programmer - * - Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host - * - Fixed HID Device Class Driver not allocating a temporary buffer when the host requests a report via the control endpoint and the - * user has set the PrevReportINBuffer driver configuration element to NULL (thanks to Lars Noschinski) - * - Fixed device state not being reset to DEVICE_STATE_Default if the host sets a 0x00 device address - * - Fixed device not stalling configuration requests before the device's address has been set - * - Fixed possibility of internal signature retrieval being corrupted if an interrupt occurs during a signature byte - * read (thanks to Andrei Krainev) - * - Fixed device state not being reset back to the default state if the host sets the address to 0 - * - Fixed Set Configuration requests not being stalled until the host has set the device's address - * - Fixed Host mode HID class driver not sending the correct report type when HID_Host_SendReportByID() was called and the - * HID_HOST_BOOT_PROTOCOL_ONLY compile time option is set - * - Fixed INTERRUPT_CONTROL_ENDPOINT compile time option preventing other interrupts from occurring while the control endpoint - * request is being processed, causing possible lockups if a USB interrupt occurs during a transfer - * - Remove incorrect Abstract Call Management class specific descriptor from the CDC demos, bootloaders and projects - * - * - * \section Sec_ChangeLog100219 Version 100219 - * - * New: - * - Added TPI programming support for 6-pin ATTINY devices to the AVRISP programmer project (thanks to Tom Light) - * - Added command timeout counter to the AVRISP project so that the device no longer freezes when incorrectly connected - * to a target - * - Added new TemperatureDataLogger application, a USB data logger which writes to the device's dataflash and appears to - * the host as a standard Mass Storage device when inserted - * - Added MIDI event packing support to the MIDI Device and Host mode Class drivers, allowing for multiple MIDI events to - * sent or received in packed form in a single USB packet - * - Added new MIDI send buffer flush routines to the MIDI Device and Host mode Class drivers, to flush packed events - * - Added master mode hardware TWI driver for easy TWI peripheral control - * - Added ADC MUX masks for the standard ADC input channels on all AVR models with an ADC, altered demos to use these masks - * as on some models, the channel number is not identical to its single-ended ADC MUX mask - * - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library - * - New BOARD value option BOARD_NONE (equivalent to not specifying BOARD) which will remove all board hardware drivers which - * do not adversely affect the code operation (currently only the LEDs driver) - * - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) and LED report masks (KEYBOARD_LED_*) to the HID class driver and - * Keyboard demos - * - Added .5MHz recovery clock to the AVRISP programmer project when in ISP programming mode to correct mis-set fuses - * - * Changed: - * - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors - * - Renamed the AVRISP project folder to AVRISP-MKII to reduce confusion - * - Renamed the RESET_LINE_* makefile tokens in the AVRISP MKII Project to AUX_LINE_*, as they are not always used for target - * reset - * - Changed over the MassStorageKeyboard Class driver device demo to use Start of Frame events rather than a timer to keep track - * of elapsed milliseconds - * - Inlined currently unused (but standardized) maintenance functions in the Device and Host Class drivers to save space - * - The XPLAINBridge project now selects between a USB to Serial bridge and a PDI programmer on startup, reading the JTAG port's - * TDI pin to determine which mode to use - * - Removed the stream example code from the Low Level VirtualSerial demos, as they were buggy and only served to add clutter - * - * Fixed: - * - Fixed AVRISP project not able to enter programming mode when ISP protocol is used - * - Fixed AVRISP PDI race condition where the guard time between direction changes could be interpreted as a start bit - * - Fixed ADC_IsReadingComplete() returning an inverted result - * - Fixed blocking CDC streams not aborting when the host is disconnected - * - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands - * - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa) - * - Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos (thanks to Renaud Cerrato) - * - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers - * - Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders - * - Fixed Benito project not resetting the target AVR automatically when programming has completed - * - Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming - * ranges are specified (thanks to Thomas Bleeker) - * - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two separate pipes, not one half-duplex pipe - * - Fixed Pipe_IsEndpointBound() not taking the endpoint's direction into account - * - Fixed EEPROM and FLASH ISP programming in the AVRISP project - * - Fixed incorrect values of USB_CONFIG_ATTR_SELFPOWERED and USB_CONFIG_ATTR_REMOTEWAKEUP tokens (thanks to Claus Christensen) - * - Fixed SerialStream driver blocking while waiting for characters to be received instead of returning EOF - * - Fixed SerialStream driver not setting stdin to the created serial stream (thanks to Mike Alexander) - * - Fixed USB_GetHIDReportSize() returning the number of bits in the specified report instead of bytes - * - Fixed AVRISP project not extending the command delay after each successful page/word/byte program - * - Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baud rates (thanks to Renaud Cerrato) - * - * - * \section Sec_ChangeLog091223 Version 091223 - * - * New: - * - Added activity LED indicators to the AVRISP project to indicate when the device is busy processing a command - * - The USB target family and allowable USB mode tokens are now public and documented (USB_CAN_BE_*, USB_SERIES_*_AVR) - * - Added new XPLAIN USB to Serial Bridge project (thanks to John Steggall for initial proof-of-concept, David Prentice - * and Peter Danneger for revised software USART code) - * - Added new RNDIS Ethernet Host LowLevel demo - * - Added new RNDIS Ethernet Host Class Driver - * - Added new RNDIS Ethernet Host ClassDriver demo - * - Added CDC_Host_Flush() function to the CDC Host Class driver to flush sent data to the attached device - * - Added PDI programming support for XMEGA devices to the AVRISP programmer project (thanks to Justin Mattair) - * - Added support for the XPLAIN board Dataflash, with new XPLAIN_REV1 board target for the different dataflash used - * on the first revision boards compared to the one mounted on later revisions - * - Added new HID_ALIGN_DATA() macro to return the pre-retrieved value of a HID report item, left-aligned to a given datatype - * - Added new PreviousValue to the HID Report Parser report item structure, for easy monitoring of previous report item values - * - Added new EVK527 board target - * - Added new USB_Host_GetDeviceStringDescriptor() convenience function - * - Added new LEDNotification project to the library, to give a visual LED notification on new events from the host - * - Added new NO_DEVICE_REMOTE_WAKEUP and NO_DEVICE_SELF_POWER compile time options - * - * Changed: - * - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of key codes - * as this relied on non-standard OS driver behaviour to repeat key groups - * - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class - * driver common defines, rather than being defined in the Host mode Class driver section only - * - The USB_MODE_HOST token is now defined even when host mode is not available - * - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to - * indicate the report type to generate - * - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function - * is called when no host/device is connected where possible - * - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line - * with the rest of the library error codes - * - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero, - * which some devices use instead of Note Off messages (thanks to Robin Green) - * - The CDC demos are now named "VirtualSerial" instead to indicate the demos' function rather than its implemented USB class, - * to reduce confusion and to be in line with the rest of the LUFA demos - * - The SImage_Host_SendBlockHeader() and SImage_Host_ReceiveBlockHeader() Still Image Host Class driver functions are now public - * - * Fixed: - * - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver - * - Fixed incorrect values for REPORT_ITEM_TYPE_* enum values causing corrupt data in the HID Host Parser - * - Fixed misnamed SI_Host_USBTask() and SI_Host_ConfigurePipes() functions - * - Fixed broken USB_GetNextDescriptor() function causing the descriptor to jump ahead double the expected amount - * - Fixed Pipe_IsEndpointBound() not masking the given Endpoint Address against PIPE_EPNUM_MASK - * - Fixed host state machine not enabling Auto VBUS mode when HOST_DEVICE_SETTLE_DELAY_MS is set to zero - * - Fixed misnamed Pipe_SetPipeToken() macro for setting a pipe's direction - * - Fixed CDCHost failing on devices with bidirectional endpoints - * - Fixed USB driver failing to define the PLL prescaler mask for the ATMEGA8U2 and ATMEGA16U2 - * - Fixed HID Parser not distributing the Usage Min and Usage Max values across an array of report items - * - Fixed Mass Storage Host Class driver and Low Level demo not clearing the error condition if an attached device returns a - * STALL to a GET MAX LUN request (thanks to Martin Luxen) - * - Fixed TeensyHID bootloader not properly shutting down the USB interface to trigger a disconnection on the host before resetting - * - Fixed MassStorageHost Class driver demo not having USB_STREAM_TIMEOUT_MS compile time option set properly to prevent slow - * devices from timing out the data pipes - * - Fixed the definition of the Endpoint_BytesInEndpoint() macro for the U4 series AVR parts - * - Fixed MIDI host Class driver MIDI_Host_SendEventPacket() routine not properly checking for Pipe ready before writing - * - Fixed use of deprecated struct initializers, removed library unused parameter warnings when compiled with -Wextra enabled - * - Fixed Still Image Host Class driver truncating the PIMA response code (thanks to Daniel Seibert) - * - Fixed USB_CurrentMode not being reset to USB_MODE_NONE when the USB interface is shut down and both Host and Device modes can be - * used (thanks to Daniel Levy) - * - Fixed TeensyHID bootloader not enumerating to the host correctly (thanks to Clint Fisher) - * - Fixed AVRISP project timeouts not checking for the correct timeout period (thanks to Carl Ott) - * - Fixed STK525 Dataflash driver using incorrect bit-shifting for Dataflash addresses (thanks to Tim Mitchell) - * - * - * \section Sec_ChangeLog091122 Version 091122 - * - * New: - * - Added new Dual Role Keyboard/Mouse demo - * - Added new HID_HOST_BOOT_PROTOCOL_ONLY compile time token to reduce the size of the HID Host Class driver when - * Report protocol is not needed - * - Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver - * - 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 - * - Added optional support for double banked endpoints and pipes in the Device and Host mode Class drivers - * - Added new stream creation function to the CDC Class drivers, to easily make standard I/O streams from CDC Class driver instances - * - * Changed: - * - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for syntax errors in the library - * - MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs - * - Cleanups to the Device mode Mass Storage demo application SCSI routines - * - Changed Audio Class driver sample read/write functions to be inline, to reduce the number of cycles needed to transfer - * samples to and from the device (allowing more time for sample processing and output) - * - Audio class Device mode demos now work at both 16MHz and 8MHz, rather than just at 8MHz - * - The previous USBtoSerial demo has been moved into the projects directory, as it was just a modified CDC demo - * - The Endpoint/Pipe functions now use the const qualifier on the input buffer - * - Changed the CALLBACK_HIDParser_FilterHIDReportItem() callback to pass a HID_ReportItem_t rather than just the current - * item's attributes, to expose more information on the item (including it's type, collection path, etc.) - * - Changed MouseHostWithParser demos to check that the report items have a Mouse usage collection as a parent at some point, - * to prevent Joysticks from enumerating with the demo - * - Corrected the name of the misnamed USB_GetDeviceConfigDescriptor() function to USB_Host_GetDeviceConfigDescriptor(). - * - Keyboard LowLevel/ClassDriver demos now support multiple simultaneous key presses (up to 6) per report - * - * Fixed: - * - Fixed PrinterHost demo returning invalid Device ID data when the attached device does not have a - * device ID (thanks to Andrei Krainev) - * - Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons easier - * - Fixed issue in the HID Host class driver's HID_Host_SendReportByID() routine using the incorrect mode (control/pipe) - * to send report to the attached device - * - Fixed ClassDriver AudioOutput device demo not selecting an audio output mode - * - Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos' descriptors - * - Fixed incorrect event name rule in demo/project/bootloader makefiles - * - Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called - * - Corrected HID descriptor in the Joystick Device demos - buttons should be placed outside the pointer collection - * - Fixed HID report parser collection paths invalid due to misplaced semicolon in the free path item search loop - * - Fixed HID host Class driver report send/receive report broken when issued through the control pipe - * - Fixed HOST_STATE_AS_GPIOR compile time option being ignored when in host mode (thanks to David Lyons) - * - Fixed LowLevel Keyboard demo not saving the issues report only after it has been sent to the host - * - Fixed Endpoint_Write_Control_Stream_* functions not sending a terminating IN when given data Length is zero - * - * - * \section Sec_ChangeLog090924 Version 090924 - * - * New: - * - Added new host mode class drivers and matching demos to the library for rapid application development - * - Added flag to the HID report parser to indicate if a device has multiple reports - * - Added new EVENT_USB_Device_StartOfFrame() event, controlled by the new USB_Device_EnableSOFEvents() and - * USB_Device_DisableSOFEvents() macros to give bus-synchronized millisecond interrupts when in USB device mode - * - Added new Endpoint_SetEndpointDirection() macro for bidirectional endpoints - * - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer - * - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use - * - Added new CDC_Device_Flush() command to the device mode CDC Class driver to flush Device->Host data - * - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set - * - Added new callback to the HID report parser, so that the user application can filter only the items it is interested - * in to be stored into the HIDReportInfo structure to save RAM - * - Added support for the officially recommended external peripheral layout for the BUMBLEB board (thanks to Dave Fletcher) - * - Added new Pipe_IsFrozen() macro to determine if the currently selected pipe is frozen - * - Added new USB_GetHIDReportSize() function to the HID report parser to retrieve the size of a given report by its ID - * - Added new combined Mass Storage and Keyboard demo (thanks to Matthias Hullin) - * - * Changed: - * - SetIdle requests to the HID device driver with a 0 idle period (send changes only) now only affect the requested - * HID interface within the device, not all HID interfaces - * - Added explicit attribute masks to the device mode demos' descriptors - * - Added return values to the CDC and MIDI class driver transmit functions - * - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size - * - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability - * - Added new "Common" section to the class drivers, to hold all mode-independent definitions for clarity - * - Moved SCSI command/sense constants into the Mass Storage Class driver, instead of the user-code - * - Altered the SCSI commands in the LowLevel Mass Storage Host to save on FLASH space by reducing function calls - * - Changed the parameters and behaviour of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks - * and data validations internally, to simplify user code - * - Changed HIDParser to only zero out important values in the Parsed HID Report Item Information structure to save cycles - * - The HID report parser now always processed FEATURE items - HID_ENABLE_FEATURE_PROCESSING token now has no effect - * - The HID report parser now always ignores constant-data items, HID_INCLUDE_CONSTANT_DATA_ITEMS token now has no effect - * - The Benito Programmer project now has its own unique VID/PID pair allocated from the Atmel donated LUFA VID/PID pool - * - Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names - * are used in a project - * - The HID Report Parser now gives information on the total length of each report within a HID interface - * - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate USB_Descriptor_* and - * USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so both may be used - * - * Fixed: - * - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the - * endpoint's bank - * - Fixed swapped parameters in the HID state memory copy call while processing a HID PUSH item in the HID report parser - * - Fixed memory corruption HID report parser when too many COLLECTION or PUSH items were processed - * - Fixed HID report parser not resetting the FEATURE item count when a REPORT ID item is encountered - * - Fixed USBtoSerial demos not reading in UDR1 when the USART receives data but the USB interface is not enumerated, - * causing continuous USART receive interrupts - * - Fixed misspelled event name in the Class driver USBtoSerial demo, preventing correct operation - * - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient - * - Added hardware USART receive interrupt and software buffering to the Benito project to ensure received data is not - * missed or corrupted - * - Fixed Device mode HID Class driver always sending IN packets, even when nothing to report - * - Fixed Device mode HID Class driver not explicitly initializing the ReportSize parameter to zero before calling callback - * routine, so that ignored callbacks don't cause incorrect data to be sent - * - Fixed StillImageHost not correctly freezing and unfreezing data pipes while waiting for a response block header - * - Fixed error in the PrinterHost demo preventing the full page data from being sent to the attached device (thanks to John Andrews) - * - Fixed CDC based demos and projects' INF driver files under 64 bit versions of Windows (thanks to Ronny Hanson, Thomas Bleeker) - * - Re-add in missing flip, flip-ee, dfu and dfu-ee targets to project makefiles (thanks to Opendous Inc.) - * - Fix allowable F_CPU values comment in project makefiles to more accurately reflect the allowable values on the USB AVRs - * - Fixed DFU and CDC class bootloaders on the series 2 USB AVRs, corrected invalid signatures, added support for the new - * ATMEGAxx2 series 2 variant AVRs to the DFU bootloader - * - Fixed Low Level USBtoSerial demo not storing received characters (thanks to Michael Cooper) - * - Fixed MIDI Device Class driver not sending/receiving MIDI packets of the correct size (thanks to Thomas Bleeker) - * - * - * \section Sec_ChangeLog090810 Version 090810 - * - * New: - * - Added new device class drivers and matching demos to the library for rapid application development - * - Added new PrinterHost demo (thanks to John Andrews) - * - Added USB Missile Launcher project, submitted by Dave Fletcher - * - Added new Benito Arduino Programmer project - * - Added incomplete device and host mode demos for later enhancement - * - Updated MassStorage device block write routines to use ping-pong Dataflash buffering to increase throughput by around 30% - * - Error status LEDs shown when device endpoint configuration fails to complete in all demos and projects - * - Added new USB_Host_SetDeviceConfiguration() convenience function for easy configuration selection of devices while in USB - * host mode - * - Added new USB_Host_ClearPipeStall() convenience function to clear a stall condition on an attached device's endpoint - * - Added new USB_Host_GetDeviceDescriptor() convenience function to retrieve the attached device's Device descriptor - * - Added new Endpoint_ClearStatusStage() convenience function to assist with the status stages of control transfers - * - Added new USE_INTERNAL_SERIAL define for using the unique serial numbers in some AVR models as the USB device's serial number, - * added NO_INTERNAL_SERIAL compile time option to turn off new serial number reading code - * - Added new DATAFLASH_CHIP_MASK() macro to the Dataflash driver, which returns the Dataflash select mask for the given chip index - * - Added new HOST_STATE_WaitForDeviceRemoval host state machine state for non-blocking disabling of device communications until the - * device has been removed (for use when an error occurs or communications with the device have completed) - * - Added new FAST_STREAM_TRANSFERS compile time option for faster stream transfers via multiple bytes copied per stream loop - * - Added stdio stream demo code to the CDC device demos, to show how to create standard streams out of the virtual serial ports - * - Added new EEPROM and FLASH buffer versions of the Endpoint and Pipe stream functions - * - Added new USE_FLASH_DESCRIPTORS and FIXED_NUM_CONFIGURATIONS compile time options - * - Added support for the new ATMEGA32U2, ATMEGA16U2 and ATMEGA8U2 AVR models - * - Added new USB_DeviceState variable to keep track of the current Device mode USB state - * - Added new LEDs_ToggleLEDs() function to the LEDs driver - * - Added new Pipe_BoundEndpointNumber() and Pipe_IsEndpointBound() functions - * - Added new DEVICE_STATE_AS_GPIOR and HOST_STATE_AS_GPIOR compile time options - * - Added 404 Not Found errors to the webserver in the RNDIS demos to indicate invalid URLs - * - * Changed: - * - Deprecated pseudo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused) - * - The device-mode CALLBACK_USB_GetDescriptor() function now has an extra parameter so that the memory space in which the requested - * descriptor is located can be specified. This means that descriptors can now be located in multiple memory spaces within a device. - * - Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality - * - Removed USB_IsSuspended global - test USB_DeviceState against DEVICE_STATE_Suspended instead - * - Extended USB_GetDeviceConfigDescriptor() routine to require the configuration number within the device to fetch - * - Dataflash_WaitWhileBusy() now always ensures that the dataflash is ready for the next command immediately after returning, - * no need to call Dataflash_ToggleSelectedChipCS() afterwards - * - Low level API MIDI device demo no longer blocks if a note change event is sent while the endpoint is not ready - * - Pipe_GetErrorFlags() now returns additional error flags for overflow and underflow errors - * - Pipe stream functions now automatically set the correct pipe token, so that bidirectional pipes can be used - * - Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling - * the existing Pipe_SetFiniteINRequests() function - * - Changed F_USB entries in project makefiles to alias to F_CPU by default, as this is the most common case - * - Host mode demos now use sane terminal escape codes, so that text is always readable and events/program output is visually distinguished - * from one another using foreground colours - * - Internal per-device preprocessing conditions changed to per-device series rather than per-controller group for finer-grain - * internal control - * - Interrupts are no longer disabled during the processing of Control Requests on the default endpoint while in device mode - * - AudioOutput demos now always output to board LEDs, regardless of output mode (removed AUDIO_OUT_LEDS project option) - * - Removed SINGLE_DEVICE_CONFIGURATION compile time option in favor of the new FIXED_NUM_CONFIGURATIONS option so that the exact number - * of device configurations can be defined statically - * - Removed VBUS events, as they are already exposed to the user application via the regular device connection and disconnection events - * - Renamed and altered existing events to properly separate out Host and Device mode events - * - All demos switched over from GNU99 standards mode to C99 standards mode, to reduce the dependencies on GCC-only language extensions - * - * Fixed: - * - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed to fix - * bootloaders on some of the USB AVR devices where avr-libc erroneously defines RAMPZ - * - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived() - * to only unfreeze and check one data pipe at a time) to prevent incorrect device enumerations and freezes while transferring data - * - Make Pipe_ConfigurePipe() mask the given endpoint number against PIPE_EPNUM_MASK to ensure the endpoint IN direction bit is - * cleared to prevent endpoint type corruption - * - Fixed issue opening CDC-ACM ports on hosts when the CDC device tries to send data before the host has set the line encoding - * - Fixed USB_OPT_MANUAL_PLL option being ignored during device disconnects on some models (thanks to Brian Dickman) - * - Fixed documentation mentioning Pipe_GetCurrentToken() function when correct function name is Pipe_GetPipeToken() - * - Fixed ADC driver for the ATMEGA32U4 and ATMEGA16U4 (thanks to Opendous Inc.) - * - Fixed CDCHost demo unfreezing the pipes at the point of configuration, rather than use - * - Fixed MassStorage demo not clearing the reset flag when a Mass Storage Reset is issued while not processing a command - * - Fixed USB_Host_SendControlRequest() not re-suspending the USB bus when initial device ready-wait fails - * - Fixed USB Pad regulator not being disabled on some AVR models when the USB_OPT_REG_DISABLED option is used - * - Fixed Host mode to Device mode UID change not causing a USB Disconnect event when a device was connected - * - Fixed Mouse/Keyboard demos not performing the correct arithmetic on the Idle period at the right times (thanks to Brian Dickman) - * - Fixed GenericHID failing HID class tests due to incorrect Logical Minimum and Logical Maximum values (thanks to Soren Greiner) - * - Fixed incorrect PIPE_EPNUM_MASK mask causing pipe failures on devices with endpoint addresses of 8 and above (thanks to John Andrews) - * - Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits - * - Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered - * - Fixed incorrect BUTTONS_BUTTON1 for the STK526 target - * - Fixed RNDIS demos freezing when more than one connection was attempted simultaneously, causing memory corruption - * - Fixed USBtoSerial demo receiving noise from the USART due to pull-up not being enabled - * - * - * \section Sec_ChangeLog090605 Version 090605 - * - * - Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data - * - Fixed documentation showing incorrect USB mode support on the supported AVRs list - * - Fixed RNDISEthernet not working under Linux due to Linux requiring an "optional" RNDIS request which was unhandled - * - Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman) - * - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues - * - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman) - * - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token - * - Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC - * interface is skipped - * - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype - * inside the library that is able to hold their defined value to save space - * - Removed DESCRIPTOR_ADDRESS() macro as it was largely superfluous and only served to obfuscate code - * - Rewritten event system to remove all macros, to make user code clearer - * - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley) - * - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code - * - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code - * - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed - * - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill) - * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the - * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preparation for the new USB class APIs - * - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure - * - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt - * - Fixed possible enumeration errors from spin-loops which may fail to exit if the USB connection is severed before the exit condition - * becomes true - * - * - * \section Sec_ChangeLog090510 Version 090510 - * - * - Added new GenericHIDHost demo - * - Corrections to the KeyboardHost and MouseHost demos' pipe handling to freeze and unfreeze the data pipes at the point of use - * - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR - * - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile - * time options - * - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected - * - Added new PIMA_DATA_SIZE() define to the Still Image Host demo - * - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the - * extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus() - * to early-abort (thanks to Dmitry Maksimov) - * - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory, - * where they are more suited - * - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the - * code without having to be itself patched and recompiled first - * - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to - * outdated avr-libc versions. - * - Added support to the CDCHost demo for devices with multiple CDC interfaces which are not the correct ACM type preceding the desired - * ACM CDC interface - * - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen) - * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley) - * - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint - * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet, - * and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis) - * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type - * pipes can be used with the function - * - The USB Host management task now saves and restores the currently selected pipe before and after the task completes - * - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei Krainev) - * - Removed Endpoint_ClearCurrentBank() and Pipe_ClearCurrentBank() in favor of new Endpoint_ClearIN(), Endpoint_ClearOUT(), - * Pipe_ClearIN() and Pipe_ClearOUT() macros (done to allow for the detection of packets of zero length) - * - Renamed *_ReadWriteAllowed() macros to *_IsReadWriteAllowed() to remain consistent with the rest of the LUFA API - * - Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(), Endpoint_ClearSetupReceived() macro has been - * renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the - * Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe - * bank management API - * - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG) - * - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity - * - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity - * - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway - * - Renamed the main Drivers/AT90USBXXX directory to Drivers/Peripheral, renamed the Serial_Stream driver to SerialStream - * - Fixed CDC and USBtoSerial demos freezing where buffers were full while still transmitting or receiving (thanks to Peter Hand) - * - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the - * device descriptor - * - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name - * - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman) - * - Capitalized the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and - * DSearch_Comp_Return_ErrorCodes_t enums - * - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums - * - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to - * USB_INITERROR_NoUSBModeSpecified - * - Renamed USB_PowerOnFail event to USB_InitFailure - * - Renamed OTG.h header functions to be more consistent with the rest of the library API - * - Changed over all deprecated GCC structure tag initializers to the standardized C99 format (thanks to Mike Alexander) - * - USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode - * rather than having the library pass only partially read header data to the application - * - The USB_UnhandledControlPacket event has had its parameters removed, in favor of accessing the new USB_ControlRequest structure - * - The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent - * - Fixed USB_RemoteWakeupEnabled flag never being set (the REMOTE WAKEUP Set Feature request was not being handled) - * - Renamed the FEATURELESS_CONTROL_ONLY_DEVICE compile-time token to CONTROL_ONLY_DEVICE - * - Endpoint configuration is now refined to give better output when all configurations have static inputs - removed the now useless - * STATIC_ENDPOINT_CONFIGURATION compile time token - * - Fixed SPI driver init function not clearing SPI2X bit when not needed - * - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex) - * - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus() - * - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke) - * - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given - * wLength value when reading in the device descriptor - * - Fixed missing semicolon in the ATAVRUSBRF01 LED board driver code (thanks to Morten Lund) - * - Changed LED board driver code to define dummy LED masks for the first four board LEDs, so that user code can be compiled for boards - * with less than four LEDs without code modifications (thanks to Morten Lund) - * - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button - * - Serial driver now correctly calculates the baud register value when in double speed mode - * - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values - * - * - * \section Sec_ChangeLog090401 Version 090401 - * - * - Fixed MagStripe project configuration descriptor containing an unused (blank) endpoint descriptor - * - Incorporated makefile changes by Denver Gingerich to retain compatibility with stock (non-WinAVR) AVR-GCC installations - * - Fixed makefile EEPROM programming targets programming FLASH data in addition to EEPROM data - * - LUFA devices now enumerate correctly with LUFA hosts - * - Fixed Configuration Descriptor search routine freezing when a comparator returned a failure - * - Removed HID report item serial dump in the MouseHostWithParser and KeyboardHostWithParser - useful only for debugging, and - * slowed down the enumeration of HID devices too much - * - Increased the number of bits per track which can be read in the MagStripe project to 8192 when compiled for the AT90USBXXX6/7 - * - Fixed KeyboardMouse demo discarding the wIndex value in the REQ_GetReport request - * - USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission - * next time the device is attached to a host. - * - Added new F_USB compile time constant to the library and makefiles, to give the raw input clock (used to feed the PLL before any - * clock prescaling is performed) frequency, so that the PLL prescale mask can be determined - * - Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with - * badly designed hosts or devices which greatly exceed the USB specification limits - * - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices - * - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions - * - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances - * - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions - * - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson) - * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded - * to also remove parts of the Get Status chapter 9 request to further reduce code usage - * - Makefile updated to include output giving the currently selected BOARD parameter value - * - Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks - * to Kenneth Clubb) - * - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy - * interfacing with a FAT library for dataflash file level access - * - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience - * - Fixed typos in the SPI driver SPI_SPEED_FCPU_DIV_64 and SPI_SPEED_FCPU_DIV_128 masks (thanks to Markus Zocholl) - * - Keyboard and Mouse device demos (normal, data interrupt and fully interrupt driven) combined into unified keyboard and mouse demos - * - Keyboard and Mouse host demos (normal and data interrupt driven) combined into unified keyboard and mouse demos - * - Removed AVRISP_Programmer project due to code quality concerns - * - Fixed CDC demo not sending an empty packet after each transfer to prevent the host from buffering incoming data - * - Fixed documentation typos and preprocessor checks relating to misspellings of the USE_RAM_DESCRIPTORS token (thanks to Ian Gregg) - * - Fixed USBTask.h not conditionally including HostChapter9.h only when USB_CAN_BE_HOST is defined (thanks to Ian Gregg) - * - Fixed incorrect ADC driver init register manipulation (thanks to Tobias) - * - Added new GenericHID device demo application - * - Fixed Still Image Host SImage_SendData() function not clearing the pipe bank after sending data - * - * - * \section Sec_ChangeLog090209 Version 090209 - * - * - PWM timer mode in AudioOut demo changed to Fast PWM for speed - * - Updated Magstripe project to work with the latest hardware revision - * - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups - * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to - * Nate Lawson) - * - Fixed serious data corruption issue in MassStorage demo dataflash write routine - * - Added new NO_CLEARSET_FEATURE_REQUEST compile time token - * - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled - * - Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration - * - Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint - * - ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES - * - Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing - * - Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump - * - Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers - * - SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer - * - MassStorage demo changed to use new fast one-way SPI transfers to increase throughput - * - MassStorage handling of Mass Storage Reset class request improved - * - Altered MassStorage demo dataflash block read code for speed - * - Added USB_IsSuspended global flag - * - Simplified internal Dual Mode (OTG) USB library code to reduce code size - * - Extended stream timeout period to 100ms from 50ms - * - Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum - * - Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event - * - VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff - * - Simplified low level backend so that device/host mode initialization uses the same code paths - * - Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request - * - Removed buggy Telnet application from the RNDIS demo - * - Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c - * - Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c - * - Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol - * - Added new "dfu" and "flip" programming targets to project makefiles - * - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful - * - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value - * - Serial driver now sets Tx line as output, enables pull-up on Rx line - * - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled - * - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated - * - Fixed KeyboardHostWithParser demo linking against the wrong global variables - * - Completed doxygen documentation of remaining library bootloaders, demos and projects - * - Fixed incorrect bootloader start address in the TeensyHID bootloader - * - Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo - * - Replaced printf_P(PSTR("%c"), {Variable}) calls with putchar() for speed and size savings - * - Serial driver now accepts baud rates over 16-bits in size, added double speed flag option - * - Fixed incorrect callback abort return value in Pipe.c - * - Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.) - * - Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems - * - Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning - * each time the task runs to allow for other tasks to execute - * - Added support for the Atmel ATAVRUSBRF01 board - * - Added AVRISP Programmer Project, courtesy of Opendous Inc. - * - Fixed CDC Host demo not searching through both CDC interfaces for endpoints - * - Fixed incorrect Product String descriptor length in the DFU class bootloader - * - * - * \section Sec_ChangeLog081224 Version 081224 - * - * - MyUSB name changed to LUFA, the Lightweight USB Framework for AVRs - * - Fixed Mass Storage Host demo's MassStore_SendCommand() delay in the incorrect place - * - Fixed USBtoSerial demo not calling ReconfigureUSART() after a change in the line encoding - * - Fixed infinite loop in host mode Host-to-Device control transfers with data stages - * - HID report parser now supports devices with multiple reports in one interface via Report IDs - * - Fixed RZUSBSTICK board LED driver header incorrect macro definition order causing compile errors - * - Calling USB_Init() when the USB interface is already configured now forces a complete interface reset - * and re-enumeration - fixes MyUSB DFU bootloader not switching to app code correctly when soft reset used - * - Fixed "No newline at end of file" warning when stream callbacks are enabled - * - DFU bootloader now uses fixed signature bytes per device, rather than reading them out dynamically for size - * - Added new FIXED_CONTROL_ENDPOINT_SIZE and USE_SINGLE_DEVICE_CONFIGURATION switches to statically define certain values to - * reduce compiled binary size - * - Added new NO_LIMITED_CONTROLLER_CONNECT switch to prevent the library from trying to determine bus connection - * state from the suspension and wake up events on the smaller USB AVRs - * - Added summary of all library compile time tokens to the documentation - * - Added overview of the LUFA scheduler to the documentation - * - Removed MANUAL_PLL_CONTROL compile time token, replaced with a mask for the USB_Init() Options parameter - * - CDC bootloader now uses the correct non-far or far versions of the pgm_* functions depending on if RAMPZ is defined - * - Doxygen documentation now contains documentation on all the projects, bootloaders and most demos included with the library - * - CDC bootloader now runs user application when USB disconnected rather than waiting for a hard reset - * - MouseHostWithParser and KeyboardHostWithParser now support multiple-report devices - * - RNDIS demo can now close connections correctly using the new TCP_APP_CLOSECONNECTION() macro - used in Webserver - * - Fixed the DFU bootloader, no longer freezes up when certain files are programmed into an AVR, made reading/writing faster - * - Fixed mouse/joystick up/down movements reversed - HID mouse X/Y coordinates use a left-handed coordinate system, not a normal - * right-handed system - * - Added stub code to the CDC and USBtoSerial demos showing how to read and set the RS-232 handshake lines - not currently used in - * the demos, but the example code and supporting defines are now in place - * - Interrupts are now disabled when processing a control request in device mode, to avoid exceeding the strict control request - * timing requirements. - * - All demos now use a central StatusUpdate() function rather than direct calls to the board LED functions, so that the demos can - * easily be altered to show different LED combinations (or do something else entirely) as the demo's status changes - * - Removed LED commands from the CDC bootloader, unused by most AVR910 programming software - * - Fixed RNDIS demo ICMP ping requests echoing back incorrect data - * - Added DHCP server code to RNDIS demo, allowing for hands-free auto configuration on any PC - * - Fixed DFU bootloader PID value for the ATMEGA16U4 AVR - * - Endpoint and Pipe configuration functions now return an error code indicating success or failure - * - USB Reset in device mode now resets and disables all device endpoints - * - Added intermediate states to the host mode state machine, reducing the USB task blocking time to no more than 1ms explicitly per - * invocation when in host mode - * - Added support for the ATMEGA32U6 microcontroller - * - Added STATIC_ENDPOINT_CONFIGURATION compile time option, enabled in the bootloaders to minimize space usage - * - Removed redundant code from the USB device GetStatus() chapter 9 processing routine - * - Added new TeensyHID bootloader, compatible with the Teensy HID protocol (http://www.pjrc.com/teensy/) - * - Versions are now numbered by release dates, rather than arbitrary major/minor revision numbers - * - USB_RemoteWakeupEnabled is now correctly set and cleared by SetFeature and ClearFeature requests from the host - * - Changed prototype of GetDescriptor, so that it now returns the descriptor size (or zero if the descriptor doesn't exist) - * rather than passing the size back to the caller through a parameter and returning a boolean - * - * - * \section Sec_ChangeLog153 Version 1.5.3 - Released 2nd October, 2008 - * - * - Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately - * - Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS) - * - Renamed bootloader directories to remove spaces, which were causing build problems on several OSes - * - Removed serial number strings from all but the MassStore demo where it is required - users were not - * modifying the code to either omit the descriptor or use a unique serial per device causing problems - * when multiple units of the same device were plugged in at the same time - * - AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host - * - Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo) - * - Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board - * driver creation easier - * - Extended MassStorage demo to support multiple LUNs, 2 by default - * - Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63 - * - Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled - * - Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly - * - Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values - * - Added DualCDC demo to demonstrate the use of Interface Association Descriptors - * - Added pipe NAK detection and clearing API - * - Added pipe status change (NAK, STALL, etc.) interrupt API - * - Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row - * - Host demos configuration descriptor routines now return a unique error code when the returned data does - * not have a valid configuration descriptor header - * - Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions - * - Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token - * - All demos now pass the USB.org automated Chapter 9 device compliance tests - * - All HID demos now pass the USB.org automated HID compliance tests - * - Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems - * - Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks - * - Mass Storage demo dataflash management routines changed to use the endpoint stream functions - * - Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file - * - Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes - * are reflected in the hardware (change was previously lost) - * - * - * \section Sec_ChangeLog152 Version 1.5.2 - Released 31st July, 2008 - * - * - Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types) - * - Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS - * implementations (where the notification endpoint is ignored in favor of polling the control endpoint) - * - Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token - * - Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo - * - Fixed DFU bootloader exit causing programming software to complain about failed writes - * - Fixed DFU bootloader EEPROM programming mode wiping first flash page - * - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process) - * - Added support for the ATMEGA16U4 AVR microcontroller - * - Library license changed from LGPLv3 to MIT license - * - * - * \section Sec_ChangeLog151 Version 1.5.1 - Released 7th July, 2008 - * - * - Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event - * rather than the USB_DeviceAttached event - * - HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove - * any referenced but not created usages - * - Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(), - * USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline) - * - Fixed USBtoSerial demo not sending data, only receiving - * - Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems - * - ConfigDescriptor functions made normal, instead of static inline - * - Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases - * - Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs - * - Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic - * approach was buggy and caused problems - * - Bootloaders now compile with -fno-inline-small-functions option to reduce code size - * - Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases - * to be in line with the specification (isochronous endpoints MUST be double banked) - * - Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN - * - Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure - * - Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID - * devices) to prevent problems on hosts expecting the boot protocol functions to be supported - * - Added read/write control stream functions to Endpoint.h - * - Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly - * - Added RNDISEthernet demo application - * - * - * \section Sec_ChangeLog150 Version 1.5.0 - Released 10 June, 2008 - * - * - Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages - * - Added CDC Host demo application - * - Added KeyboardFullInt demo application - * - Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction - * size bits not required for the routines (improves compatibility with devices) - * - Fixed AudioInput demo - now correctly sends sampled audio to the host PC - * - Fixed AudioOutput demo once more -- apparently Windows requires endpoint packets to be >=192 bytes - * - Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes - * - Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser - * - Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder - * - Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler - * - Added Still Image Host demo application - * - The USB device task now restores the previously selected endpoint, allowing control requests to be transparently - * handled via interrupts while other endpoints are serviced through polling - * - Fixed device signature being sent in reverse order in the CDC bootloader - * - Host demos now have a separate ConfigDescriptor.c/.h file for configuration descriptor processing - * - HostWithParser demos now have a separate HIDReport.c/.h file for HID report processing and dumping - * - Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value - * - CDC demos now send empty packets after sending a full one to prevent buffering issues on the host - * - Updated demo descriptors to use VID/PID values donated by Atmel - * - Added DoxyGen documentation to the source files - * - Fixed Serial_IsCharReceived() definition, was previously reversed - * - Removed separate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead - * - Removed unused Device Qualifier descriptor structure - * - Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged - * - Fixed MassStorageHost demo reading in the block data in reverse - * - Removed outdated typedefs in StdRequestType.h, superseded by the macro masks - * - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products - * - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration - * - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete - * - The value of USB_HOST_TIMEOUT_MS can now be overridden in the user project makefile to a custom fixed timeout value - * - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus() - * and USB_Host_IsBusSuspended() - * - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now - * Pipe_SetInterruptPeriod() to use the correct terminology - * - UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC - * Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays - * of ASCII characters - * - Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR - * model was given as the bank size - * - HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array - * - Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors - * - Cleaned up GetDescriptor device chapter 9 handler function - * - Added GET_REPORT class specific request to HID demos to make them complaint to the HID class - * - Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed - * - Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons - * - All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.) - * - Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names - * - * - * \section Sec_ChangeLog141 Version 1.4.1 - Released 19 May, 2008 - * - * - Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo - * - Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly - * - Corrected version number in Version.h - * - * - * \section Sec_ChangeLog140 Version 1.4.0 - Released 5 May, 2008 - * - * - Added HID Report Parser API to the library - * - Added Mouse and Keyboard host demo applications, using the new HID report parser engine - * - Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device - * - Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos - * - Added MIDI device demo application to the library - * - Fixed problem preventing USB devices from being resumed from a suspended state - * - Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol - * - Added header to each demo application indicating the mode, class, subclass, standards used and supported speed - * - Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or - * PIPE_PIPENUM_MASK - this should be manually added to code which requires it - * - Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time - * - Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor() - * to USB_Host_GetNextDescriptor() - * - Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines - * - Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file - * - Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the - * new comparator API - * - Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct - * big-endian for SCSI devices - * - Fixed macro/function naming consistency; USB_HOST is now USB_Host, USB_DEV is now USB_Device - * - Added better error reporting to host demos - * - Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls - * - * - * \section Sec_ChangeLog132 Version 1.3.2 - Released April 1st, 2008 - * - * - Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes - * are reflected in the hardware - * - Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the - * GetLineCoding request had an incorrect RequestType mask preventing it from being processed - * - Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full - * - Device control endpoint size is now determined from the device's descriptors rather than being fixed - * - Separated out SPI code into new SPI driver in AT90USBXXX driver directory - * - Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID - * - Added support for the RZUSBSTICK board - * - Bicolour driver removed in favor of generic LEDs driver - * - Added support for the ATMEGA32U4 AVR - * - Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL - * - * - * \section Sec_ChangeLog131 Version 1.3.1 - Released March 19th 2008 - * - * - Fixed USB to Serial demo - class value in the descriptors was incorrect - * - Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low - * speed mode devices to enumerate properly - * - USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work - * on USB AVRs with limited USB FIFO RAM - * - Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited - * USB device controller AVRs (AT90USB162, AT90USB82) to function correctly - * - Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output - * - Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile - * - Optimized Mass Storage demo for a little extra transfer speed - * - Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock - * - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions - * (including Big and Little Endian variants) - * - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file - * - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch) - * - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7) - * - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the - * directives in the datasheet - * - Fixed PLL prescaler defines for all AVR models and frequencies - * - Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions - * - Added interrupt driven keyboard and mouse device demos - * - Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code - * size savings - * - Added missing Pipe_GetCurrentPipe() macro to Pipe.h - * - * - * \section Sec_ChangeLog130 Version 1.3.0 - Released March 7th 2008 - * - * - Unnecessary control endpoint config removed from device mode - * - Fixed device standard request interpreter accidentally processing some class-specific requests - * - Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library - * to use descriptors stored in RAM or EEPROM rather than flash memory - * - All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader - * - USB_DEV_OPT_LOWSPEED option now works correctly - * - Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS - * compile time define - * - USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or - * if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options - * - USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS - * - Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the - * compiler can throw away the result more efficiently - * - Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be - * controlled by the new Scheduler_SetGroupTaskMode() routine - * - Added support for AT90USB162 and AT90USB82 AVR models - * - Added support for the STK525 and STK526 boards - * - Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and - * placing board drivers in {Application Directory}/Board/ - * - PLL is now stopped and USB clock is frozen when detached from host in device mode, to save power - * - Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY - * - Fixed USB_DEV_IsUSBSuspended() - now checks the correct register - * - Fixed data transfers to devices when in host mode - * - Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to - * USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with - * the real high speed mode, which is unavailable on the USB AVRs) - * - * - * \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008 - * - * - Added USB_DeviceEnumerationComplete event for host mode - * - Added new Scheduler_Init routine to prepare the scheduler, so that tasks can be started and - * stopped before the scheduler has been started (via Scheduler_Start) - * - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management - * task to be stopped when the USB is not connected to a host or device - * - All demos updated to stop the USB task when not in use via the appropriate USB events - * - Mass Storage Host demo application updated to function correctly with all USB flash disks - * - Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached - * device, and prints the first block as hexadecimal numbers rather than ASCII characters - * - Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags - * - Shifted error handling code in the host enum state machine to a single block, to reduce code complexity - * - Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing - * clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices - * - Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro - * - * - * \section Sec_ChangeLog130 Version 1.1.0 - Released January 25th 2008 - * - * - Fixed DCONNI interrupt being enabled accidentally after a USB reset - * - Fixed DDISCI interrupt not being disabled when a device is not connected - * - Added workaround for powerless pull-up devices causing false disconnect interrupts - * - Added USB_DeviceEnumerationFailed event for Host mode - * - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer - * pointer is passed - * - Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables - * dependant on size of memory parameters passed in via the user project's makefile - * - Fixed incorrect device reset routine being called in USBTask - * - Devices which do not connect within the standard 300mS are now supported - * - Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being - * started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects - * - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the - * need to have a task ID list - * - ID transition interrupt now raises the appropriate device/host disconnect event if device attached - * - Fixed double VBUS change (and VBUS -) event when detaching in device mode - * - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile - * - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and - * Endpoint_IsConfigured() after calling the config functions to determine success - */ - diff --git a/LUFA/ManPages/CompileTimeTokens.txt b/LUFA/ManPages/CompileTimeTokens.txt deleted file mode 100644 index e96f7c163..000000000 --- a/LUFA/ManPages/CompileTimeTokens.txt +++ /dev/null @@ -1,208 +0,0 @@ -/** \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. - */ - -/** \page Page_TokenSummary Summary of Compile Tokens - * - * The following lists all the possible tokens which can be defined in a project makefile, and passed to the - * compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behaviour, - * or remove features unused by a given application in order to save flash space. - * - * \note If the \c USE_LUFA_CONFIG_HEADER token is defined, the library will include a header file named \c LUFAConfig.h located - * in the user directory where the below compile time tokens may be defined. This allows for an alternative to makefile - * defined tokens for configuring the library. - * - * \section Sec_SummaryNonUSBTokens Non USB Related Tokens - * This section describes compile tokens which affect non-USB sections of the LUFA library. - * - * DISABLE_TERMINAL_CODES - (\ref Group_Terminal) - All Architectures \n - * If an application contains ANSI terminal control codes listed in TerminalCodes.h, it might be desired to remove them - * at compile time for use with a terminal which is non-ANSI control code aware, without modifying the source code. If - * this token is defined, all ANSI control codes in the application code from the TerminalCodes.h header are removed from - * the source code at compile time. - * - * - * \section Sec_SummaryUSBClassTokens USB Class Driver Related Tokens - * This section describes compile tokens which affect USB class-specific drivers in the LUFA library. - * - * HID_HOST_BOOT_PROTOCOL_ONLY - (\ref Group_USBClassHIDHost) - All Architectures \n - * By default, the USB HID Host class driver is designed to work with HID devices using either the Boot or Report HID - * communication protocols. On devices where the Report protocol is not used (i.e. in applications where only basic - * Mouse or Keyboard operation is desired, using boot compatible devices), the code responsible for the Report protocol - * mode can be removed to save space in the compiled application by defining this token. When defined, it is still necessary - * to explicitly put the attached device into Boot protocol mode via a call to \ref HID_Host_SetBootProtocol(). - * - * HID_STATETABLE_STACK_DEPTH=x - (\ref Group_HIDParser) - All Architectures \n - * Supported Architectures: All \n - * HID reports may contain PUSH and POP elements, to store and retrieve the current HID state table onto a stack. This - * allows for reports to save the state table before modifying it slightly for a data item, and then restore the previous - * state table in a compact manner. This token may be defined to a non-zero 8-bit value to give the maximum depth of the state - * table stack. If not defined, this defaults to the value indicated in the HID.h file documentation. - * - * HID_USAGE_STACK_DEPTH=x - (\ref Group_HIDParser) - All Architectures \n - * HID reports generally contain many USAGE elements, which are assigned to INPUT, OUTPUT and FEATURE items in succession - * when multiple items are defined at once (via REPORT COUNT elements). This allows for several items to be defined with - * different usages in a compact manner. This token may be defined to a non-zero 8-bit value to set the maximum depth of the - * usage stack, indicating the maximum number of USAGE items which can be stored temporarily until the next INPUT, OUTPUT - * and FEATURE item. If not defined, this defaults to the value indicated in the HID.h file documentation. - * - * HID_MAX_COLLECTIONS=x - (\ref Group_HIDParser) - All Architectures \n - * HID reports generally contain several COLLECTION elements, used to group related data items together. Collection information - * is stored separately in the processed usage structure (and referred to by the data elements in the structure) to save space. - * This token may be defined to a non-zero 8-bit value to set the maximum number of COLLECTION items which can be processed by the - * parser into the resultant processed report structure. If not defined, this defaults to the value indicated in the HID.h file - * documentation. - * - * HID_MAX_REPORTITEMS=x - (\ref Group_HIDParser) - All Architectures \n - * All HID reports contain one or more INPUT, OUTPUT and/or FEATURE items describing the data which can be sent to and from the HID - * device. Each item has associated usages, bit offsets in the item reports and other associated data indicating the manner in which - * the report data should be interpreted by the host. This token may be defined to a non-zero 8-bit value to set the maximum number of - * data elements which can be stored in the processed HID report structure, including INPUT, OUTPUT and (if enabled) FEATURE items. - * If a item has a multiple count (i.e. a REPORT COUNT of more than 1), each item in the report count is placed separately in the - * processed HID report table. If not defined, this defaults to the value indicated in the HID.h file documentation. - * - * HID_MAX_REPORT_IDS=x - (\ref Group_HIDParser) - All Architectures \n - * HID reports may contain several report IDs, to logically distinguish grouped device data from one another - for example, a combination - * keyboard and mouse might use report IDs to separate the keyboard reports from the mouse reports. In order to determine the size of each - * report, and thus know how many bytes must be read or written, the size of each report (IN, OUT and FEATURE) must be calculated and - * stored. This token may be defined to a non-zero 8-bit value to set the maximum number of report IDs in a device which can be processed - * and their sizes calculated/stored into the resultant processed report structure. If not defined, this defaults to the value indicated in - * the HID.h file documentation. - * - * NO_CLASS_DRIVER_AUTOFLUSH - (\ref Group_USBClassDrivers) - All Architectures \n - * Many of the device and host mode class drivers automatically flush any data waiting to be written to an interface, when the corresponding - * USB management task is executed. This is usually desirable to ensure that any queued data is sent as soon as possible once and new data is - * constructed in the main program loop. However, if flushing is to be controlled manually by the user application via the *_Flush() commands, - * the compile time token may be defined in the application's makefile to disable automatic flushing during calls to the class driver USB - * management tasks. - * - * \section Sec_SummaryUSBTokens General USB Driver Related Tokens - * This section describes compile tokens which affect USB driver stack as a whole in the LUFA library. - * - * ORDERED_EP_CONFIG - (\ref Group_EndpointManagement , \ref Group_PipeManagement) - AVR8, UC3 \n - * The USB AVRs do not allow for Endpoints and Pipes to be configured out of order; they must be configured in an ascending order to - * prevent data corruption issues. However, by default LUFA employs a workaround to allow for unordered Endpoint/Pipe initialization. This compile - * time token may be used to restrict the initialization order to ascending indexes only in exchange for a smaller compiled binary size. Use - * caution when applied to applications using the library USB Class drivers; the user application must ensure that all endpoints and pipes are - * allocated sequentially. - * - * USE_STATIC_OPTIONS=x - (\ref Group_USBManagement) - All Architectures \n - * By default, the USB_Init() function accepts dynamic options at runtime to alter the library behaviour, including whether the USB pad - * voltage regulator is enabled, and the device speed when in device mode. By defining this token to a mask comprised of the USB options - * mask defines usually passed as the Options parameter to USB_Init(), the resulting compiled binary can be decreased in size by removing - * the dynamic options code, and replacing it with the statically set options. When defined, the USB_Init() function no longer accepts an - * Options parameter. - * - * USB_DEVICE_ONLY - (\ref Group_USBManagement) - All Architectures \n - * For the USB AVR models supporting both device and host USB modes, the USB_Init() function contains a Mode parameter which specifies the - * mode the library should be initialized to. If only device mode is required, the code for USB host mode can be removed from the binary to - * save space. When defined, the USB_Init() function no longer accepts a Mode parameter. This define is irrelevant on smaller USB AVRs which - * do not support host mode. - * - * USB_HOST_ONLY - (\ref Group_USBManagement) - All Architectures \n - * Same as USB_DEVICE_ONLY, except the library is fixed to USB host mode rather than USB device mode. Not available on some USB AVR models. - * - * USB_STREAM_TIMEOUT_MS=x - (\ref Group_USBManagement) - All Architectures \n - * When endpoint and/or pipe stream functions are used, by default there is a timeout between each transfer which the connected device or host - * must satisfy, or the stream function aborts the remaining data transfer. This token may be defined to a non-zero 16-bit value to set the timeout - * period for stream transfers, specified in milliseconds. If not defined, the default value specified in LowLevel.h is used instead. - * - * NO_LIMITED_CONTROLLER_CONNECT - (\ref Group_Events) - AVR8 Only \n - * On the smaller USB AVRs, the USB controller lacks VBUS events to determine the physical connection state of the USB bus to a host. In lieu of - * VBUS events, the library attempts to determine the connection state via the bus suspension and wake up events instead. This however may be - * slightly inaccurate due to the possibility of the host suspending the bus while the device is still connected. If accurate connection status is - * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the USB_DeviceState global - * can be accurately set and the \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events manually raised by the RAISE_EVENT macro. - * When defined, this token disables the library's auto-detection of the connection state by the aforementioned suspension and wake up events. - * - * NO_SOF_EVENTS - (\ref Group_Events) - All Architectures \n - * By default, there exists a LUFA application event for the start of each USB frame while the USB bus is not suspended in either host or device mode. - * This event can be selectively enabled or disabled by calling the appropriate device or host mode function. When this compile time token is defined, - * the ability to receive USB Start of Frame events via the \ref EVENT_USB_Device_StartOfFrame() or \ref EVENT_USB_Host_StartOfFrame() events is removed, - * reducing the compiled program's binary size. - * - * \section Sec_SummaryUSBDeviceTokens USB Device Mode Driver Related Tokens - * This section describes compile tokens which affect USB driver stack of the LUFA library when used in Device mode. - * - * USE_RAM_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n - * Define this token to indicate to the USB driver that all device descriptors are stored in RAM, rather than being located in any one - * of the AVR's memory spaces. RAM descriptors may be desirable in applications where the descriptors need to be modified at runtime. - * - * USE_FLASH_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n - * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's FLASH memory rather than RAM. - * - * USE_EEPROM_DESCRIPTORS - (\ref Group_StdDescriptors) - AVR8 Only \n - * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's EEPROM memory rather than RAM. - * - * NO_INTERNAL_SERIAL - (\ref Group_StdDescriptors) - All Architectures \n - * Some AVR models contain a unique serial number which can be used as the device serial number, while in device mode. This allows - * the host to uniquely identify the device regardless of if it is moved between USB ports on the same computer, allowing allocated - * resources (such as drivers, COM Port number allocations) to be preserved. This is not needed in many apps, and so the code that - * performs this task can be disabled by defining this option and passing it to the compiler via the -D switch. - * - * FIXED_CONTROL_ENDPOINT_SIZE=x - (\ref Group_EndpointManagement) - All Architectures \n - * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor. - * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if - * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be - * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled - * binary. - * - * DEVICE_STATE_AS_GPIOR - (\ref Group_Device) - AVR8 Only \n - * One of the most frequently used global variables in the stack is the USB_DeviceState global, which indicates the current state of - * the Device State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token - * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR - * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except - * implicitly via the library APIs. - * - * FIXED_NUM_CONFIGURATIONS=x - (\ref Group_Device) - All Architectures \n - * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces - * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in - * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this value may be fixed via this token in the project - * makefile to reduce the compiled size of the binary at the expense of flexibility. - * - * CONTROL_ONLY_DEVICE - (\ref Group_Device) - All Architectures \n - * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication - * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device - * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided. - * - * INTERRUPT_CONTROL_ENDPOINT - (\ref Group_USBManagement) - All Architectures \n - * Some applications prefer to not call the USB_USBTask() management task regularly while in device mode, as it can complicate code significantly. - * Instead, when device mode is used this token can be passed to the library via the -D switch to allow the library to manage the USB control - * endpoint entirely via USB controller interrupts asynchronously to the user application. When defined, USB_USBTask() does not need to be called - * when in USB device mode. - * - * NO_DEVICE_REMOTE_WAKEUP - (\ref Group_Device) - All Architectures \n - * Many devices do not require the use of the Remote Wakeup features of USB, used to wake up the USB host when suspended. On these devices, - * the code required to manage device Remote Wakeup can be disabled by defining this token and passing it to the library via the -D switch. - * - * NO_DEVICE_SELF_POWER - (\ref Group_Device) - All Architectures \n - * USB devices may be bus powered, self powered, or a combination of both. When a device can be both bus powered and self powered, the host may - * query the device to determine the current power source, via \ref USB_Device_CurrentlySelfPowered. For solely bus powered devices, this global - * and the code required to manage it may be disabled by passing this token to the library via the -D switch. - * - * - * \section Sec_SummaryUSBHostTokens USB Host Mode Driver Related Tokens - * - * This section describes compile tokens which affect USB driver stack of the LUFA library when used in Host mode. - * - * HOST_STATE_AS_GPIOR - (\ref Group_Host) - AVR8 Only \n - * One of the most frequently used global variables in the stack is the USB_HostState global, which indicates the current state of - * the Host State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token - * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR - * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except - * implicitly via the library APIs. - * - * USB_HOST_TIMEOUT_MS=x - (\ref Group_Host) - All Architectures \n - * When a control transfer is initiated in host mode to an attached device, a timeout is used to abort the transfer if the attached - * device fails to respond within the timeout period. This token may be defined to a non-zero 16-bit value to set the timeout period for - * control transfers, specified in milliseconds. If not defined, the default value specified in Host.h is used instead. - * - * HOST_DEVICE_SETTLE_DELAY_MS=x - (\ref Group_Host) - All Architectures \n - * Some devices require a delay of up to 5 seconds after they are connected to VBUS before the enumeration process can be started, or - * they will fail to enumerate correctly. By placing a delay before the enumeration process, it can be ensured that the bus has settled - * back to a known idle state before communications occur with the device. This token may be defined to a 16-bit value to set the device - * settle period, specified in milliseconds. If not defined, the default value specified in Host.h is used instead. - */ - diff --git a/LUFA/ManPages/CompilingApps.txt b/LUFA/ManPages/CompilingApps.txt deleted file mode 100644 index 45cbdd678..000000000 --- a/LUFA/ManPages/CompilingApps.txt +++ /dev/null @@ -1,30 +0,0 @@ -/** \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. - */ - -/** \page Page_CompilingApps Compiling the Demos, Bootloaders and Projects - * - * The following details how to compile the included LUFA demos, applications and bootloaders using AVR-GCC. - * - * \section Sec_Prerequisites Prerequisites - * Before you can compile any of the LUFA library code or demos, you will need a recent distribution of avr-libc (1.6.2+) - * and the AVR-GCC (4.2+) compiler. For Windows users, the best way to obtain these is the WinAVR project - * (http://winavr.sourceforge.net) as this provides a single-file setup for everything required to compile your - * own AVR projects. - * - * \section Sec_Compiling Compiling a LUFA Application - * Compiling the LUFA demos, applications and/or bootloaders is very simple. LUFA comes with makefile scripts for - * each individual demo, bootloader and project folder, as well as scripts in the /Demos/, /Bootloaders/, /Projects/ - * and the LUFA root directory. This means that compilation can be started from any of the above directories, with - * a build started from an upper directory in the directory structure executing build of all child directories under it. - * This means that while a build inside a particular demo directory will build only that particular demo, a build stated - * from the /Demos/ directory will build all LUFA demo projects sequentially. - * - * To build a project from the source via the command line, the command "make all" should be executed from the command line in the directory - * of interest. To remove compiled files (including the binary output, all intermediately files and all diagnostic output - * files), execute "make clean". Once a "make all" has been run and no errors were encountered, the resulting binary will - * be located in the generated ".HEX" file. If your project makes use of pre-initialized EEPROM variables, the generated ".EEP" - * file will contain the project's EEPROM data. - */ diff --git a/LUFA/ManPages/ConfiguringApps.txt b/LUFA/ManPages/ConfiguringApps.txt deleted file mode 100644 index 6caf185c1..000000000 --- a/LUFA/ManPages/ConfiguringApps.txt +++ /dev/null @@ -1,89 +0,0 @@ -/** \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. - */ - -/** \page Page_ConfiguringApps Configuring the Demos, Bootloaders and Projects - * - * If the target microcontroller model, architecture, clock speed, board or other settings are different from the current - * settings, they must be changed and the project recompiled from the source code before being programmed into the microcontroller. - * Most project configuration options are located in the "makefile" build script inside each LUFA application's folder, however - * some demo or application-specific configuration settings (such as the output format in the AudioOut demo) are located in one or - * more of the source files of the project. See each project's individual documentation for application-specific configuration - * values. - * - * Each project "makefile" contains all the script and configuration data required to compile each project. When opened with - * any regular basic text editor such as Notepad or WordPad (ensure that the save format is a pure ASCII text format) the - * build configuration settings may be altered. - * - * Inside each makefile, a number of configuration variables are located, with the format " = ". For - * each application, the important variables which should be altered are: - * - * - MCU, the target processor model - * - ARCH, the target microcontroller architecture - * - BOARD, the target board hardware - * - F_CPU, the target CPU master clock frequency, after any prescaling - * - F_USB, the target raw input clock to the USB module of the processor - * - CDEFS, the C preprocessor defines which configure options the source code - * - LUFA_PATH, the path to the LUFA library source code - * - LUFA_OPTS, the compile time LUFA options which configure the library features - * - * These values should be changed to reflect the build hardware. - * - * \section Sec_MCU The MCU Parameter - * This parameter indicates the target microcontroller model for the compiled application. This should be set to the model of the target - * microcontroller (such as the AT90USB1287, or the ATMEGA32U4), in all lower-case (e.g. "at90usb1287"). Note that not all demos support all the - * microcontroller models and architectures, as they may make use of peripherals or modes only present in some devices. - * - * For supported processor models, see \ref Page_DeviceSupport. - * - * \section Sec_ARCH The ARCH Parameter - * This parameter indicates the target microcontroller architecture the library is to be compiled for. Different microcontroller - * architectures require different source files to be compiled into the final binary, and so this option must be set to the correct - * architecture for the selected platform. - * - * For supported processor architectures, see \ref Page_DeviceSupport. - * - * \section Sec_BOARD The BOARD Parameter - * This parameter indicates the target board hardware for the compiled application. Some LUFA library drivers are board-specific, - * such as the LED driver, and the library needs to know the layout of the target board. If you are using one of the board models listed - * on the main library page, change this parameter to the board name in all UPPER-case. - * - * If you are not using any board-specific drivers in the LUFA library, or you are using a custom board layout, change this to read - * "USER" (no quotes) instead of a standard board name. If the USER board type is selected and the application makes use of one or more - * board-specific hardware drivers inside the LUFA library, then the appropriate stub drives files should be copied from the \c /CodeTemplates/DriverStubs/ - * directory into a /Board/ folder inside the application directory, and the stub driver completed with the appropriate code to drive the - * custom board's hardware. - * - * For boards with built in hardware driver support within the LUFA library, see \ref Page_DeviceSupport. - * - * \section Sec_F_CPU The F_CPU Parameter - * This parameter indicates the target microcontroller's main CPU clock frequency, in Hz. This is used by many libraries (and applications) for - * timing related purposes, and should reflect the actual CPU speed after any prescaling or adjustments are performed. - * - * \section Sec_F_USB The F_USB Parameter - * This parameter indicates the raw input clock frequency to the USB module within the microcontroller in Hz. This may be very different on some platforms - * to the main CPU clock or other peripheral/bus clocks. - * - * \section Sec_CDEFS The CDEFS Parameter - * Many applications have features which can be controlled by the defining of specially named preprocessor tokens at the point of compilation - for example, - * an application might use a compile time token to turn on or off optional or mutually exclusive portions of code. Preprocessor tokens can be - * defined here by listing each one with the -D command line switch, and each token can optionally be defined to a specific value. When defined in the - * project makefile, these behave as if they were defined in every source file via a normal preprocessor define statement. - * - * Most applications will actually have multiple CDEF lines, which are concatenated together with the "+=" operator. This ensures that large - * numbers of configuration options remain readable by splitting up groups of options into separate lines. - * - * \section Sec_LUFA_PATH The LUFA_PATH Parameter - * As each LUFA program requires the LUFA library source code to compile correctly, the application must know where the LUFA library is located. This - * value specifies the path to the LUFA library base relative to the path of the project makefile. - * - * \section Sec_LUFA_OPTS The LUFA_OPTS Parameter - * This value is similar to the CDEFS parameter listed elsewhere -- indeed, it is simply a convenient place to group LUFA related tokens away from the - * application's compile time tokens. Normally, these options do not need to be altered to allow an application to compile and run correctly on a - * different board or microcontroller to the current configuration - if the options are incorrect, then the demo is most likely incompatible with the chosen - * microcontroller model and cannot be made to function through the altering of the makefile settings alone (or at all). Settings such as the USB mode - * (device, host or both), the USB interface speed and other LUFA configuration options can be set here - see \ref Page_TokenSummary documentation for details - * on the available LUFA compile time configuration options. - */ diff --git a/LUFA/ManPages/DevelopingWithLUFA.txt b/LUFA/ManPages/DevelopingWithLUFA.txt deleted file mode 100644 index 4ea379938..000000000 --- a/LUFA/ManPages/DevelopingWithLUFA.txt +++ /dev/null @@ -1,21 +0,0 @@ -/** \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. - */ - -/** - * \page Page_DevelopingWithLUFA Developing With LUFA - * - * This section of the manual contains information on LUFA development, such as Getting Started information, - * information on compile-time tuning of the library and other developer-related sections. - * - * Subsections: - * \li \subpage Page_TokenSummary - Summary of Compile Time Tokens - * \li \subpage Page_Migration - Migrating from an Older LUFA Version - * \li \subpage Page_VIDPID - Allocated USB VID and PID Values - * \li \subpage Page_BuildLibrary - Building as a Linkable Library - * \li \subpage Page_WritingBoardDrivers - How to Write Custom Board Drivers - * \li \subpage Page_SoftwareBootloaderStart - How to jump to the bootloader in software - */ - diff --git a/LUFA/ManPages/DeviceSupport.txt b/LUFA/ManPages/DeviceSupport.txt deleted file mode 100644 index b3af29b22..000000000 --- a/LUFA/ManPages/DeviceSupport.txt +++ /dev/null @@ -1,356 +0,0 @@ -/** \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. - */ - -/** - * \page Page_DeviceSupport Device and Hardware Support - * - * Atmel Microcontrollers: - * \li \subpage Page_AVR8Support - Atmel AVR8 Support - * \li \subpage Page_UC3Support - Atmel AVR32 UC3 Support - * \li \subpage Page_XMEGASupport - Atmel XMEGA Support - */ - -/** - * \page Page_AVR8Support Atmel 8-Bit AVR (AVR8) Support - * - * \section Sec_AVR8Support_Devices Supported Microcontroller Models - * - * Currently supported AVR8 models: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
PartUSB Device ModeUSB Host Mode
AT90USB82YesNo
ATMEGA8U2YesNo
AT90USB162YesNo
ATMEGA16U2YesNo
ATMEGA16U4YesNo
ATMEGA32U2YesNo
ATMEGA32U4YesNo
ATMEGA32U6YesNo
AT90USB646YesNo
AT90USB647YesYes
AT90USB1286YesNo
AT90USB1287YesYes
- * - * \section Sec_AVR8Support_Boards Supported Atmel Boards - * Currently supported Atmel AVR8 boards (see \ref Group_BoardTypes): - * - AT90USBKEY - * - ATAVRUSBRF01 - * - EVK527 - * - RZUSBSTICK - * - STK525 - * - STK526 - * - XPLAIN (Excluding the blue XPLAINED family boards) - * - * \section Sec_AVR8Support_ThirdParty Supported Third Party Models - * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): - * - Adafruit U4 Breakout Board - * - Arduino Uno - * - Busware BUI - * - Busware CUL V3 - * - Fletchtronics Bumble-B (using officially recommended peripheral layout) - * - Kernel Concepts USBFOO - * - Linnix UDIP - * - MattairTech JM-DB-U2 - * - Maximus USB - * - Microsin AVR-USB162 - * - Minimus USB - * - Olimex AVR-USB-162 - * - PJRC Teensy (all revisions and versions) - * - Sparkfun U2 Breakout Board - * - TCNISO Blackcat USB JTAG - * - Tempusdictum Benito - * - Tom's USBTINY-MKII (all revisions and versions) - * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) - */ - -/** - * \page Page_UC3Support Atmel 32-Bit UC3 AVR (UC3) - * Note: The AVR32 UC3 device support is currently experimental, and is included for preview purposes only. - * - * \section Sec_UC3Support_Devices Supported Microcontroller Models - * - * Currently supported UC3 models: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
PartUSB Device ModeUSB Host Mode
AT32UC3A064YesYes
AT32UC3A164YesYes
AT32UC3A364YesYes
AT32UC3A364SYesYes
AT32UC3A464YesYes
AT32UC3A464SYesYes
AT32UC3B064YesYes
AT32UC3B164YesYes
AT32UC3A0128YesYes
AT32UC3A1128YesYes
AT32UC3A3128YesYes
AT32UC3A3128SYesYes
AT32UC3A4128YesYes
AT32UC3A4128SYesYes
AT32UC3B0128YesYes
AT32UC3B1128YesYes
AT32UC3A0256YesYes
AT32UC3A1256YesYes
AT32UC3A3256YesYes
AT32UC3A3256SYesYes
AT32UC3A4256YesYes
AT32UC3A4256SYesYes
AT32UC3B0256YesYes
AT32UC3B1256YesYes
AT32UC3A0512YesYes
AT32UC3A1512YesYes
AT32UC3B0512YesYes
AT32UC3B1512YesYes
- * - * \section Sec_UC3Support_Boards Supported Atmel Boards - * - * Currently supported Atmel UC3 boards (see \ref Group_BoardTypes): - * - EVK1100 - * - EVK1101 - * - EVK1104 - * - * \section Sec_UC3Support_ThirdParty Supported Third Party Models - * - * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): - * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) - */ - -/** - * \page Page_XMEGASupport Atmel USB XMEGA AVR (XMEGA) - * Note: The XMEGA device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. - * - * \section Sec_XMEGASupport_Devices Supported Microcontroller Models - * - * Currently supported XMEGA models: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
PartUSB Device ModeUSB Host Mode
ATXMEGA16A4UYesNo
ATXMEGA32A4UYesNo
ATXMEGA64A3UYesNo
ATXMEGA128A3UYesNo
ATXMEGA192A3UYesNo
ATXMEGA256A3UYesNo
ATXMEGA256A3BUYesNo
ATXMEGA128A1UYesNo
- * - * \section Sec_XMEGASupport_Boards Supported Atmel Boards - * Currently supported Atmel XMEGA boards (see \ref Group_BoardTypes): - * - None - * - * \section Sec_XMEGASupport_ThirdParty Supported Third Party Models - * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): - * - Custom User Boards (with Board Drivers if desired, see \ref Page_WritingBoardDrivers) - */ - diff --git a/LUFA/ManPages/DirectorySummaries.txt b/LUFA/ManPages/DirectorySummaries.txt deleted file mode 100644 index e4ef0959a..000000000 --- a/LUFA/ManPages/DirectorySummaries.txt +++ /dev/null @@ -1,254 +0,0 @@ -/** \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. - */ - -/** \dir LUFA/Common - * \brief Common library header files. - * - * This folder contains header files which are common to all parts of the LUFA library. They may be used freely in - * user applications. - * - * \dir LUFA/Drivers - * \brief Library hardware and software drivers. - * - * This folder contains all the library hardware and software drivers for each supported board, architecture and - * microcontroller model. - * - * \dir LUFA/Drivers/Misc - * \brief Miscellaneous driver files. - * - * This folder contains drivers for aspects other than the USB interface, board hardware or microcontroller peripherals. - * - * \dir LUFA/Drivers/Peripheral - * \brief Microcontroller peripheral driver files. - * - * This folder contains drivers for various low level microcontroller peripherals, usually located on the microcontroller - * die within the same physical chip. - * - * \dir LUFA/Drivers/USB - * \brief USB controller peripheral driver files. - * - * This folder contains the complete LUFA USB stack and controller files, including the core driver and stack, as well - * as the USB class driver implementations. - * - * \dir LUFA/Drivers/USB/Core - * \brief Core USB driver files. - * - * This folder contains the core USB stack and controller driver files, to correctly implement USB functionality on the - * target architecture and microcontroller model. This - * - * \dir LUFA/Drivers/USB/Class - * \brief USB Class helper driver files. - * - * This folder contains drivers for implementing functionality of standardized USB classes. These are not used directly by the library, - * but provide a standard and library-maintained way of implementing functionality from some of the defined USB classes without extensive - * development effort. Is is recommended that these drivers be used where possible to reduce maintenance of user applications. - * - * \dir LUFA/Drivers/USB/Class/Device - * \brief USB Device Class helper driver files. - * - * Device mode drivers for the standard USB classes. - * - * \dir LUFA/Drivers/USB/Class/Host - * \brief USB Host Class helper driver files. - * - * Host mode drivers for the standard USB classes. - * - * \dir LUFA/Drivers/Board - * \brief Board hardware driver files. - * - * This folder contains drivers for interfacing with the physical hardware on supported commercial boards, primarily from - * the Atmel corporation. Header files in this folder should be included in user applications requiring the functionality of - * hardware placed on supported boards. - * - * \dir LUFA/Drivers/Board/AVR8/ADAFRUITU4 - * \brief ADAFRUITU4 board hardware driver files. - * - * This folder contains drivers for hardware on the Adafruit U4 breakout board (http://ladyada.net/products/atmega32u4breakout). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * \dir LUFA/Drivers/Board/AVR8/ATAVRUSBRF01 - * \brief ATAVRUSBRF01 board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel ATAVRUSBRF01 board, as used in several Atmel wireless demo kits. The header - * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in - * the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/BENITO - * \brief BENITO board hardware driver files. - * - * This folder contains drivers for hardware on the Benito boards (http://dorkbotpdx.org/wiki/benito). The header files in this - * folder should not be included directly in user applications; the similarly named dispatch header files located in the parent - * Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/BUMBLEB - * \brief BUMBLEB board hardware driver files. - * - * This folder contains drivers for hardware on the Fletchtronics Bumble-B board (http://fletchtronics.net/bumble-b). The header - * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in - * the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/BUI - * \brief BUI board hardware driver files. - * - * This folder contains drivers for hardware on the Busware BUI (http://www.busware.de/tiki-index.php?page=BUI). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/BLACKCAT - * \brief BLACKCAT board hardware driver files. - * - * This folder contains drivers for hardware on the TCNISO Blackcat USB JTAG (http://www.embeddedcomputers.net/products/BlackcatUSB/. - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/CULV3 - * \brief CULV3 board hardware driver files. - * - * This folder contains drivers for hardware on the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/EVK527 - * \brief EVK527 board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel EVK527 development board. The header files in this folder should - * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory - * should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/JMDBU2 - * \brief JM-DB-U2 board hardware driver files. - * - * This folder contains drivers for hardware on the JM-DB-U2 boards (http://u2.mattair.net/). The header files in this folder - * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board - * directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/MAXIMUS - * \brief MAXIMUS board hardware driver files. - * - * This folder contains drivers for hardware on the Maximus boards (http://www.avrusb.com/). The header files in this folder - * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board - * directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/MICROSIN162 - * \brief MICROSIN162 board hardware driver files. - * - * This folder contains drivers for hardware on the Microsin AVR-USB162 board (http://microsin.ru/content/view/685/44/). The - * header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/MINIMUS - * \brief MINIMUS board hardware driver files. - * - * This folder contains drivers for hardware on the Minimus boards (http://www.minimususb.com/). The header files in this folder - * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board - * directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/OLIMEX162 - * \brief Olimex USB-STK-162 board hardware driver files. - * - * This folder contains drivers for hardware on the Olimex AVR-USB-162 boards (http://www.olimex.com/dev/avr-usb-162.html). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/RZUSBSTICK - * \brief RZUSBSTICK board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel RZUSBSTICK board, as used in the Atmel "Raven" wireless kits. The header - * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in - * the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/SPARKFUN8U2 - * \brief SPARKFUN8U2 board hardware driver files. - * - * This folder contains drivers for hardware on the Sparkfun ATMEGA8U2 breakout board (http://www.sparkfun.com/products/10277). The - * header files in this folder should not be included directly in user applications; the similarly named dispatch header files located - * in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/STK525 - * \brief STK525 board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel STK525 development board. The header files in this folder should - * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory - * should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/STK526 - * \brief STK526 board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel STK526 development board. The header files in this folder should - * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory - * should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/TEENSY - * \brief TEENSY board hardware driver files. - * - * This folder contains drivers for hardware on all revisions of the PJRC Teensy boards (http://www.pjrc.com/teensy/). The header - * files in this folder should not be included directly in user applications; the similarly named dispatch header files located - * in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/TUL - * \brief TUL board hardware driver files. - * - * This folder contains drivers for hardware on the Busware TUL (http://busware.de/tiki-index.php?page=TUL). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/UDIP - * \brief UDIP board hardware driver files. - * - * This folder contains drivers for hardware on the Linnix UDIP boards (http://linnix.com/udip/). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/UNO - * \brief UNO board hardware driver files. - * - * This folder contains drivers for hardware on the Arduino Uno boards (http://www.arduino.cc). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/USBFOO - * \brief USBFOO board hardware driver files. - * - * This folder contains drivers for hardware on the USBFOO boards (http://shop.kernelconcepts.de/product_info.php?products_id=102). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/USBKEY - * \brief USBKEY board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel USBKEY demonstration board. The header files in this folder should - * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory - * should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/USBTINYMKII - * \brief USBTINY-MKII board hardware driver files. - * - * This folder contains drivers for hardware on all revisions of the USBTINY-MKII boards (http://tom-itx.dyndns.org:81/~webpage/). - * The header files in this folder should not be included directly in user applications; the similarly named dispatch header files - * located in the parent Board directory should be included instead. - * - * \dir LUFA/Drivers/Board/AVR8/XPLAIN - * \brief XPLAIN board hardware driver files. - * - * This folder contains drivers for hardware on the Atmel XPLAIN board (all hardware revisions). The header files in this folder - * should not be included directly in user applications; the similarly named dispatch header files located in the parent Board - * directory should be included instead. - * - * \dir LUFA/CodeTemplates - * \brief Code templates for use in LUFA powered applications. - * - * This contains code templates for board drivers, sample LUFA project makefiles and other similar templates that can be copied into - * a LUFA powered application and modified to speed up development. - * - * \dir LUFA/CodeTemplates/DriverStubs - * \brief Driver stub header files for custom boards, to allow the LUFA board drivers to operate. - * - * This contains stub files for the LUFA board drivers. If the LUFA board drivers are used with board hardware other than those - * directly supported by the library, the BOARD parameter of the application's makefile can be set to "USER", and these stub files - * copied to the "/Board/" directory of the application's folder. When fleshed out with working driver code for the custom board, - * the corresponding LUFA board APIs will work correctly with the non-standard board hardware. - */ - diff --git a/LUFA/ManPages/Donating.txt b/LUFA/ManPages/Donating.txt deleted file mode 100644 index ef9748788..000000000 --- a/LUFA/ManPages/Donating.txt +++ /dev/null @@ -1,24 +0,0 @@ -/** \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. - */ - -/** - * \page Page_Donating Donating to Support This Project - * - * \image html Author.jpg "Dean Camera, LUFA Developer" - * - * I am a 22 year old University student studying for a double degree in Computer Science and Electronics Engineering. - * The development and support of this library requires much effort from myself, as I am the sole developer, maintainer - * and supporter. Please consider donating a small amount to support this and my future Open Source projects - All - * donations are greatly appreciated. - * - * Note that commercial entities can remove the attribution portion of the LUFA license by a one-time fee - see - * \ref Page_LicenseInfo for more details (Note: Please do NOT pay this in advance through the donation link below - - * contact author for payment details.). - * - * \image html "http://www.pledgie.com/campaigns/6927.png?skin_name=chrome" - * Donate to this project via PayPal - Thanks in Advance! - */ - diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt deleted file mode 100644 index 83c48805b..000000000 --- a/LUFA/ManPages/FutureChanges.txt +++ /dev/null @@ -1,48 +0,0 @@ -/** \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. - */ - - /** \page Page_FutureChanges Future Changes - * - * Below is a list of future changes which are proposed for the LUFA library, but not yet started/complete. - * This gives an unordered list of future changes which may be available in future releases of the library. - * If you have an item to add to this list, please contact the library author via email, the LUFA mailing list, - * or post your suggestion as an enhancement request to the project bug tracker. - * - * Targeted for Future Releases: - * - Code Features - * -# Add hub support when in Host mode for multiple devices - * -# Investigate virtual hubs when in device mode instead of composite devices - * -# Change makefiles to allow for absolute LUFA location to be used - * -# Re-add interrupt Pipe/Endpoint support - * -# Add makefile includes to reduce boilerplate in user makefiles - * -# Update stream APIs to use DMA transfers on supported architectures - * -# Pull out third party libraries into a separate folder and reference them as required - * -# Add a LUFA_YIELD macro for integration into a third-party RTOS - * -# Abstract out Mass Storage byte send/receive to prevent low level API use in projects - * -# Consider switch from endpoint numbers to full endpoint addresses to ease future architecture expansion - * -# Fix HID report parser usage support for array types - * -# Add additional standard request helper functions to host mode - * -# Add Dataflash_SendCommand() - * -# Make HOST_DEVICE_SETTLE_DELAY_MS a global variable that can be changed - * -# Add MANDATORY_EVENT_FUNCTIONS compile time option - * -# Add watchdog support to the library and apps/bootloaders - * -# Re-run USBIF test suite on all classes to formally verify operation - * - Documentation/Support - * -# Add detailed overviews of how each demo works - * -# Add board overviews - * -# Write LUFA tutorials - * - Demos/Projects - * -# Device/Host USB bridge - * -# Finish incomplete demos and projects - * -# Add class driver support for Test and Measurement class - * -# Add class driver support for EEM class - * -# Add class driver support for ECM class - * - Ports - * -# Complete AVR32 port for existing devices, add UC3C support - * -# Atmel ARM7 series microcontrollers - * -# Other (commercial) C compilers - */ - diff --git a/LUFA/ManPages/GettingStarted.txt b/LUFA/ManPages/GettingStarted.txt deleted file mode 100644 index ab460cb6e..000000000 --- a/LUFA/ManPages/GettingStarted.txt +++ /dev/null @@ -1,27 +0,0 @@ -/** \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. - */ - -/** \page Page_GettingStarted Getting Started - * - * Out of the box, LUFA contains a large number of pre-made class demos for you to test, experiment with and - * ultimately build upon for your own projects. All the demos (where possible) come pre-configured to build and - * run correctly on the AT90USB1287 AVR microcontroller, mounted on the Atmel USBKEY board and running at an 8MHz - * master clock. This is due to two reasons; one, it is the hardware the author possesses, and two, it is the most - * popular Atmel USB demonstration board to date. To learn how to reconfigure, recompile and program the included - * LUFA applications using different settings, see the subsections below. - * - * Most of the included demos in the /Demos/ folder come in both ClassDriver and LowLevel varieties. If you are new - * to LUFA, it is highly recommended that you look at the ClassDriver versions first, which use the pre-made USB - * Class Drivers (\ref Group_USBClassDrivers) to simplify the use of the standard USB classes in user applications. - * - * For an overview of the included library applications, bootloaders and demos, see \ref Page_LibraryApps. - * - * Subsections: - * \li \subpage Page_ConfiguringApps - How to Configure the Included Demos, Projects and Bootloaders - * \li \subpage Page_CompilingApps - How to Compile the Included Demos, Projects and Bootloaders - * \li \subpage Page_ProgrammingApps - How to Program an AVR with the Included Demos, Projects and Bootloaders - */ - diff --git a/LUFA/ManPages/Groups.txt b/LUFA/ManPages/Groups.txt deleted file mode 100644 index bac362bf5..000000000 --- a/LUFA/ManPages/Groups.txt +++ /dev/null @@ -1,25 +0,0 @@ -/** \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. - */ - -/** @defgroup Group_BoardDrivers Board Drivers - * - * Functions, macros, variables, enums and types related to the control of physical board hardware. - */ - -/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers - * - * Functions, macros, variables, enums and types related to the control of AVR subsystems. - */ - -/** @defgroup Group_MiscDrivers Miscellaneous Drivers - * - * Miscellaneous driver Functions, macros, variables, enums and types. - */ - -/** @defgroup Group_PlatformDrivers System Platform Drivers - * - * Drivers relating to the general architecture platform, such as clock setup and interrupt management. - */ diff --git a/LUFA/ManPages/LUFA.png b/LUFA/ManPages/LUFA.png deleted file mode 100644 index 54fa1a664..000000000 Binary files a/LUFA/ManPages/LUFA.png and /dev/null differ diff --git a/LUFA/ManPages/LUFAPoweredProjects.txt b/LUFA/ManPages/LUFAPoweredProjects.txt deleted file mode 100644 index df72cbc0e..000000000 --- a/LUFA/ManPages/LUFAPoweredProjects.txt +++ /dev/null @@ -1,142 +0,0 @@ -/** \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. - */ - -/** \page Page_LUFAPoweredProjects User Projects Powered by LUFA - * - * LUFA is currently in use all around the world, in many applications both commercial and non-commercial. Below is a - * list of known public LUFA powered projects, which all use the LUFA library in some way. Feel free to visit each project's - * home page for more information on each project. - * - * If you have a project that you would like to add to this list, please contact me via the details on the main page of this - * documentation. - * - * \section Sec_BoardsUsingLUFA AVR-USB Development Boards Using LUFA - * - * The following is a list of known AVR USB development boards, which recommend using LUFA for the USB stack. Some of these - * are open design, and all are available for purchase as completed development boards suitable for project development. - * - * - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html - * - Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito - * - JM-DB-U2, an ATMEGA32U2 development board: http://u2.mattair.net/index.html - * - Micropendous, an open design/source set of AVR USB development boards: http://micropendous.org/ - * - Microsin AVR-USB162 breakout board, a DIY AT90USB162 development board: http://microsin.ru/content/view/685/44/ - * - Minimus USB, a board specially designed for PSGroove: http://www.minimususb.com/ - * - Nanduino, a do-it-yourself AT90USB162 board: http://www.makestuff.eu/wordpress/?page_id=569 - * - Sparkfun ATMEGA8U2 breakout board: http://www.sparkfun.com/products/10277 - * - Teensy and Teensy++, two other AVR USB development boards: http://www.pjrc.com/teensy/index.html - * - U2DIL/U4DIL, a set of DIP layout USB AVR boards: http://www.reworld.eu/re/en/products/u2dil/ - * - USBFOO 2, AT90USB162 based development board: http://shop.kernelconcepts.de/product_info.php?products_id=102 - * - * \section Sec_LUFAProjects Projects Using LUFA (Hobbyist) - * - * The following are known hobbyist projects using LUFA. Most are open source, and show off interesting ways that the LUFA library - * can be incorporated into many different applications. - * - * - Accelerometer Game Joystick: http://www.crictor.co.il/he/episodes/joystick/ - * - Arcade Controller: http://fletchtronics.net/arcade-controller-made-petunia - * - Arcade Joystick: http://jamie.lentin.co.uk/embedded/arcade-joystick/ - * - AVR USB Modem, a 3G Wireless Modem host: http://code.google.com/p/avrusbmodem/ - * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/ - * - Bluetooth Explorerbot: http://code.google.com/p/bluetooth-explorerbot/ - * - Bus Ninja, an AVR clone of the popular BusPirate project: http://blog.hodgepig.org/busninja/ - * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig - * - CD Driver Emulator Dongle for ISO Files: http://cdemu.blogspot.com/ - * - ClockTamer, a configurable clock generator: http://code.google.com/p/clock-tamer/ - * - Collection of alternative Arduino Uno firmwares: http://hunt.net.nz/users/darran/ - * - CULFW, a 868MHz RF packet encoder/decoder: http://www.koeniglich.de/culfw/culfw.html - * - Dashkey, a custom PC keyboard controller: http://geekhack.org/showwiki.php?title=Island:19096 - * - DIY PS3 controller emulator: https://code.google.com/p/diyps3controller/ - * - EMuSer, a USB-RS422 adapter for E-Mu samplers: http://www.emxp.net/EMuSer.htm - * - Estick JTAG, an ARM JTAG debugger: http://code.google.com/p/estick-jtag/ - * - "Fingerlicking Wingdinger" (WARNING: Bad language if no Javascript), a MIDI controller: http://noisybox.net/electronics/wingdinger/ - * - Flyatar, a real-time fly tracking system: https://github.com/peterpolidoro/Flyatar - * - Gamecube controller to USB adapter: https://www.facebook.com/media/set/?set=a.10150202447076304.310536.688776303&l=df53851c50 - * - Garmin GPS USB to NMEA standard serial sentence translator: http://github.com/nall/garmin-transmogrifier/tree/master - * - Generic HID Device Creator: http://generichid.sourceforge.net/ - * - Ghetto Drum, a MIDI drum controller: http://noisybox.net/art/gdrum/ - * - Hiduino, a USB-MIDI replacement firmware for the Arduino Uno: http://code.google.com/p/hiduino/ - * - Ikea RGB LED USB modification: http://slashhome.se/p/projects/id/ikea_dioder_usb/#project - * - IR Remote to Keyboard decoder: http://netzhansa.blogspot.com/2010/04/our-living-room-hi-fi-setup-needs-mp3.html - * - LED Panel controller: http://projects.peterpolidoro.net/caltech/panelscontroller/panelscontroller.htm - * - Linux Secure Storage Dongle: http://github.com/TomMD/teensy - * - LUFA powered DDR dance mat (French): http://logicien-parfait.fr/dokuwiki/doku.php?id=projet:ddr_repair - * - MakeTV Episode Dispenser: http://www.youtube.com/watch?v=BkWUi18hl3g - * - MidiMonster, a USB-to-MIDI gateway board: http://www.dorkbotpdx.org/wiki/midimonster - * - MIDI Theremin: http://baldwisdom.com/usb-midi-controller-theremin-style-on-arduino-uno/ - * - MiniBloq, a graphical Ardunio programming environment : http://minibloq.org/ - * - MiXley, a port of the Teacup 3D printer firmware for the USB AVRs: http://codaset.com/michielh/mixley - * - Mobo 4.3, a USB controlled all band (160-10m) HF SDR transceiver: http://sites.google.com/site/lofturj/mobo4_3 - * - Moco, a native Arduino Uno MIDI replacement firmware: http://web.mac.com/kuwatay/morecat_lab./MocoLUFA.html - * - Motherboard BIOS flasher: http://www.coreboot.org/InSystemFlasher - * - Multi-button Joystick (French): http://logicien-parfait.fr/dokuwiki/doku.php?id=projet:joystick - * - Music Playing Alarm Clock (Tutorial): http://www.instructables.com/id/Music-Playing-Alarm-Clock/ - * - NeroJTAG, a JTAG dongle: https://github.com/makestuff/neroJtag - * - NES Controller USB modification: http://projects.peterpolidoro.net/video/NESUSB.htm - * - Nikon wireless camera remote control (Norwegian): http://hekta.org/~hpe1119/ - * - Opendous-JTAG, an open source ARM JTAG debugger: http://code.google.com/p/opendous-jtag/ - * - Openkubus, an open source hardware-based authentication dongle: http://code.google.com/p/openkubus/ - * - Orbee, a USB connected RGB Orb for notifications: http://www.franksworkshop.com.au/Electronics/Orbee/Orbee.htm - * - Programmable keyboard controller: http://41j.com/blog/2011/10/a-programmable-keyboard-controller/ - * - Programmable XBOX controller: http://richard-burke.dyndns.org/wordpress/pan-galactic-gargantuan-gargle-brain-aka-xbox-360-usb-controller/ - * - PSGroove, a Playstation 3 Homebrew dongle: http://github.com/psgroove - * - PS/2 to USB adapter: https://github.com/makestuff/p2ukbd - * - Reprap with LUFA, a LUFA powered 3D printer: http://code.google.com/p/at90usb1287-code-for-arduino-and-eclipse/ - * - SD Card reader: http://elasticsheep.com/2010/04/teensy2-usb-mass-storage-with-an-sd-card/ - * - SDR1, a Software Defined Radio firmware: https://code.google.com/p/sdr-mk1/ - * - SEGA Megadrive/Genesis Development Cartridge: http://www.makestuff.eu/wordpress/?page_id=398 - * - Serial Line bus analyser: http://www.pjrc.com/teensy/projects/SerialAnalyzer.html - * - Smartcard Detective: https://code.google.com/p/smartcarddetective/ - * - SmartportVHD Apple II Mass Storage adapter: http://pcedric3.free.fr/SmartportVHD/ - * - Single LED Matrix Display: http://guysoft.wordpress.com/2009/10/08/bumble-b/ - * - Stripe Snoop, a Magnetic Card reader: http://www.ossguy.com/ss_usb/ - * - Teensy SD Card .WAV file player: http://elasticsheep.com/2010/04/teensy2-usb-wav-player-part-1/ - * - Touchscreen Input Device: http://capnstech.blogspot.com/2010/07/touchscreen-update.html - * - Universal USB AVR Module: http://usbavr.bplaced.net/ - * - USB2AX, a USB to Dynamixel network adapter: http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX - * - USB Interface for Playstation Portable Devices: http://forums.ps2dev.org/viewtopic.php?t=11001 - * - USB powered Geiger Counter: http://uhrheber.wordpress.com/2011/04/28/a-usb-powered-geiger-counter-for-the-z2-and-other-computers/ - * - Userial, a USB to Serial converter with SPI, I2C and other protocols: http://www.tty1.net/userial/ - * - Wireless MIDI Guitar system: http://www.ise.pw.edu.pl/~wzab/wireless_guitar_system/ - * - Xnormidi, a C MIDI library: http://x37v.info/projects/xnormidi - * - XUM1541, a Commodore 64 floppy drive to USB adapter: http://www.root.org/~nate/c64/xum1541/ - * - Zeus, a touch screen computer for music manipulation: http://www.benbengler.com/developments_zeus.html - * - * \section Sec_LUFACommercialProjects Projects Using LUFA (Commercial) - * - * The following is a list of known commercial products using LUFA. Some of these are open source, although many are "black-box" - * solutions with no source code given. Those companies which have purchased a Commercial License to LUFA (see \ref Page_LicenseInfo) - * are not listed here unless specifically requested. - * - * - Arduino Uno, the official Arduino board: http://www.arduino.cc - * - ARPS Locator: http://la3t.hamradio.no/lab//?id=tracker_en - * - CFFA3000, a CompactFlash interface for the Apple II: http://www.dreher.net/CFforAppleII - * - Digital Survey Instruments Magnetometer and Pointer: http://www.digitalsurveyinstruments.com/ - * - FinchRobot, a robot designed for educational use: http://www.finchrobot.com/ - * - Penguino, an Arduino Board With On-Board LUFA Powered Debugger/Programmer: http://wiki.icy.com.au/PenguinoAVR - * - PIR-1, an IR control interface for consumer electronics: http://www.promixis.com/pir-1.php - * - PIR-4, a USB Connected 4 port IR transmitter: http://promixis.com/pir-4.php - * - KeyGlove, an alternative input system: http://www.keyglove.net/ - * - Many of Busware's Products: http://www.busware.de/ - * - MIDIFighter, a USB-MIDI controller: http://www.midifighter.com/ - * - Norduino, a wireless Arduino: http://norduino.robomotic.com/norduino-is-now-usb-hid/ - * - Retrode, a USB Games Console Cartridge Reader: http://www.retrode.org - * - SmartCardDetective, a Smart Card analysis tool: http://www.smartcarddetective.com/ - * - USBTINY-MKII, an AVRISP-MKII Clone AVR Programmer: http://tom-itx.dyndns.org:81/~webpage/boards/USBTiny_Mkii/USBTiny_Mkii_index.php - * - VMeter, a USB MIDI touch strip controller: http://www.vmeter.net/ - * - XMEGA Development Board, using LUFA as an On-Board Programmer: http://xmega.mattair.net/ - * - Zeptoprog, a multifunction AVR programmer: http://www.mattairtech.com/index.php/featured/zeptoprog.html - * - * \section Sec_LUFAPublications Publications Mentioning LUFA - * - Elektor Magazine, "My First AVR-USB" by Antoine Authier (feature), January 2010 Issue - * - Elektor Magazine, "USB is Cool/Sucks" by Jerry Jacobs and Chris Vossen (minor mention), January 2010 Issue - * - Elektor Magazine, "20 x Open Source" by Jens Nickel, March 2010 Issue - * - Circuit Cellar Magazine, "Advanced USB Design Debugging" by Collin O'Flynn, August 2010 Issue - * - * \section Sec_LUFANotableMentions Other Notable Mentions of LUFA - * - Adafruit "Ask an Engineer", 7th November 2010 - * - Arduino 2010 Keynote speech - * - The Amp Hour podcast blog #11 - */ diff --git a/LUFA/ManPages/LUFA_thumb.png b/LUFA/ManPages/LUFA_thumb.png deleted file mode 100644 index efa538677..000000000 Binary files a/LUFA/ManPages/LUFA_thumb.png and /dev/null differ diff --git a/LUFA/ManPages/LUFAvsAtmelStack.txt b/LUFA/ManPages/LUFAvsAtmelStack.txt deleted file mode 100644 index 239c2772b..000000000 --- a/LUFA/ManPages/LUFAvsAtmelStack.txt +++ /dev/null @@ -1,52 +0,0 @@ -/** \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. - */ - -/** - * \page Page_LUFAvsAtmelStack LUFA vs the Atmel 8-bit USB AVR Stack - * - * Atmel offers an official 8-bit USB AVR stack, which may be incorporated into user projects and products. As LUFA and the Atmel - * stack aims to give roughly the same functionality to a design, it is often asked what advantages LUFA carries over the official - * Atmel USB stack for the 8-bit USB AVRs. Below are just some of the advantages to choosing LUFA over the official Atmel stack. - * - * - Licensing: - * LUFA is released under a very permissive MIT license (see \ref Page_LicenseInfo), while the Atmel stack carries several - * restrictions as to how and where it can be used. LUFA's licensing should be suitable for both Commercial and Non-Commercial - * entities alike. - * - * - Demos and Projects: - * Unlike the Atmel stack, LUFA comes with many different Device and Host mode Demos and Projects ready to run out of the box. - * Atmel favors separate downloads for each of their (small set) of USB AVR demos, which requires more time and offers less - * to the end-user. LUFA also contains several open source Bootloaders, which can be modified as the user wishes to suit his or - * her application, instead of being forced to use Atmel's single prebuilt (closed-source) DFU bootloader. - * - * - Central Library Code: - * LUFA is designed to allow the central library core code to be shared amongst several projects, so long as the compiled object - * files are cleaned between different projects. This is in direct contrast to the Atmel library, which is strongly coupled to the - * project it is integrated with. Using LUFA allows for only one copy of the library core to be needed for all applications, and - * makes updating the library used in all projects a trivial copy-and-paste process. - * - * - Clean API: - * One of the main design goals of LUFA is to make the API easy to use. While LUFA is a fluid project which has undergone many - * API improvements, the API is arguably much nicer to use and easier to understand than the equivalent Atmel stack code. LUFA's - * API is also more complete than the Atmel stack, and contains many features to speed up application development. - * - * - Full Hardware Support: - * LUFA supports the full range of Atmel's USB AVR microcontrollers (see \ref Page_DeviceSupport), with porting between chips being - * as simple as a single compile switch in many cases. Atmel's stack requires different libraries to be used based on the USB AVR - * microcontroller series, complicating the process of moving between USB AVR models. In addition, LUFA contains drivers for all the - * hardware contained on Atmel's USB AVR based boards, so you can get started quickly and easily. - * - * - Better Library Support: - * As many people are now using LUFA, there is a community being built around it. You can get answers to your LUFA related questions - * quickly by either emailing the library author (subject to author's schedule) or by posting to the official LUFA support mailing list. - * - * - More Compact Code: - * LUFA is written from the ground up to compile optimally, using clean code and good design. Two demos giving the same functionality - - * the LUFA Low Level API Mouse Demo vs. the Atmel AVR270 HID Mouse application note shows LUFA to be the clear size winner *. - * - * * LUFA Low Level Mouse Demo: 3510 bytes, Atmel AVR270 Mouse Application Note: 4222 bytes, using an identical build environment. - */ - diff --git a/LUFA/ManPages/LibraryApps.txt b/LUFA/ManPages/LibraryApps.txt deleted file mode 100644 index 43e7660c5..000000000 --- a/LUFA/ManPages/LibraryApps.txt +++ /dev/null @@ -1,126 +0,0 @@ -/** \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. - */ - -/** \page Page_LibraryApps Included Library Applications - * - * The LUFA library ships with several different host and device demos, located in the /Demos/ subdirectory. Within this - * directory the demos are separated by USB mode (Device, Host, OTG) and further separated by the use or non-use of the - * library USB Class drivers (which abstract out the actual implementation of the USB classes to simplify development even - * further at the expense of a loss of flexibility). - * - * With one or two exceptions (e.g. proprietary classes such as RNDIS) all the included demos will work across all OSes without - * the need for special drivers. On Windows, some demos require the supplied .INF file to be used as the device driver, which - * directs the OS to use its inbuilt class drivers for the device. - * - * Also included with the library are two fully functional bootloaders, located in the /Bootloaders/ subdirectory. - * The DFU class bootloader is compatible with Atmel's FLIP software or the open source dfu-programmer project, while - * the CDC class (AVR109 protocol) is compatible with such open source software as AVRDUDE and AVR-OSP. - * - * User-submitted projects are located in the /Projects/ subdirectory. If you wish to have your LUFA project included, - * please email it to the Library author. - * - * \section Sec_AppOverview Overview of Included Library Applications - * The following shows the folder structure of the included library applications, including demos, bootloaders and user-submitted - * open source projects. - * - * - * - * - Demos - * - Device - * - ClassDriver - * - AudioInput - Audio In (microphone) demo, using the library USB Audio Class driver framework - * - AudioOutput - Audio Out (speaker) demo, using the library USB Audio Class driver framework - * - DualVirtualSerial - Dual Virtual Serial Port demo, using the library USB CDC Class driver framework - * - GenericHID - Generic Human Interface Class demo, using the library USB HID Class driver framework - * - Joystick - USB Joystick demo, using the library USB HID Class driver framework - * - Keyboard - USB Keyboard demo, using the library USB HID Class driver framework - * - KeyboardMouse - Dual Keyboard/Mouse demo, using the library USB HID Class driver framework - * - KeyboardMouseMultiReport - Multi HID report Keyboard/Mouse demo, using the library USB HID Class driver framework - * - MassStorage - Dual Drive Mass Storage demo, using the library USB Mass Storage Class driver framework - * - MassStorageKeyboard - Mass Storage and Keyboard demo, using the library USB Mass Storage/HID Class driver frameworks - * - MIDI - MIDI In demo, using the library USB MIDI-Audio Class driver framework - * - Mouse - USB Mouse demo, using the library USB HID driver framework - * - RNDISEthernet - RNDIS Ethernet Webserver demo, using the library USB RNDIS driver framework - * - VirtualSerial - Virtual Serial Port demo, using the library USB CDC Class driver framework - * - VirtualSerialMassStorage - Virtual Serial Port and Mass Storage demo, using the library USB CDC and Mass Storage Class driver frameworks - * - VirtualSerialMouse - Virtual Serial Port and Mouse demo, using the library USB CDC and HID Class driver frameworks - * - LowLevel - * - AudioInput - Audio In (microphone) demo, using the low level LUFA APIs to implement the USB Audio class - * - AudioOutput - Audio Out (speaker) demo, using the low level LUFA APIs to implement the USB Audio class - * - DualVirtualSerial - Dual Virtual Serial Port demo, using the low level LUFA APIs to implement the USB CDC class - * - GenericHID - Generic Human Interface Class demo, using the low level LUFA APIs to implement the USB HID class - * - Joystick - USB Joystick demo, using the low level LUFA APIs to implement the USB HID class - * - Keyboard - USB Keyboard demo, using the low level LUFA APIs to implement the USB HID class - * - KeyboardMouse - Dual Keyboard/Mouse demo, using the low level LUFA APIs to implement the USB HID class - * - MassStorage - Dual Drive Mass Storage demo, using the low level LUFA APIs to implement the USB Mass Storage class - * - MIDI - MIDI In demo, using the low level LUFA APIs to implement the USB MIDI-Audio class - * - Mouse - USB Mouse demo, using the low level LUFA APIs to implement the USB HID class - * - RNDISEthernet - RNDIS Ethernet Webserver demo, using the low level LUFA APIs to implement the USB RNDIS class - * - VirtualSerial - Virtual Serial Port demo, using the low level LUFA APIs to implement the USB CDC class - * - Incomplete - * - SideShow - Incomplete Windows SideShow demo, using the low level LUFA APIs to implement the USB SideShow class - * - TestAndMeasurement - Incomplete Test and Measurement demo, using the low level LUFA APIs to implement the USB Test and - * Measurement class - * - Host - * - ClassDriver - * - AudioInputHost - Audio Input host demo, using the library USB Audio Class driver framework - * - AudioOutputHost - Audio Output host demo, using the library USB Audio Class driver framework - * - JoystickHostWithParser - Joystick host demo with HID Descriptor parser, using the library USB HID Class driver framework - * - KeyboardHost - USB Keyboard host demo, using the library USB HID Class driver framework - * - KeyboardHostWithParser - USB Keyboard host demo with HID Descriptor parser, using the library USB HID Class - * driver framework - * - MassStorageHost - Mass Storage host demo, using the library USB Mass Storage Class driver framework - * - MouseHost - Mouse host demo, using the library USB HID Class driver framework - * - MouseHostWithParser - Mouse host demo with HID Descriptor parser, using the library USB HID Class driver framework - * - RNDISHost - RNDIS Ethernet host demo, using the library USB RNDIS Class driver framework - * - StillImageHost - Still Image Camera host demo, using the library USB Still Image Class driver framework - * - VirtualSerialHost - Virtual Serial Port host demo, using the library USB CDC Class driver framework - * - LowLevel - * - AudioInputHost - Audio Input host demo, using the low level LUFA APIs to implement the USB Audio class - * - AudioOutputHost - Audio Output host demo, using the low level LUFA APIs to implement the USB Audio class - * - GenericHIDHost - Generic HID host demo, using the low level LUFA APIs to implement the USB HID class - * - JoystickHostWithParser - Joystick host demo with HID Descriptor parser, using the low level LUFA APIs to implement - * the USB HID class - * - KeyboardHost - USB Keyboard host demo, using the low level LUFA APIs to implement the USB HID class - * - KeyboardHostWithParser - USB Keyboard host demo with HID Descriptor parser, using the low level LUFA APIs to - * implement the USB HID class - * - MassStorageHost - Mass Storage host demo, using the low level LUFA APIs to implement the USB Mass Storage class - * - MouseHost - Mouse host demo, using the low level LUFA APIs to implement the USB HID class - * - MouseHostWithParser - Mouse host demo with HID Descriptor parser, using the low level LUFA APIs to implement the - * USB HID class - * - PrinterHost - Printer host demo, using the low level LUFA APIs to implement the USB Printer class - * - RNDISHost - RNDIS Ethernet host demo, using the low level LUFA APIs to implement the RNDIS class - * - StillImageHost - Still Image Camera host demo, using the low level LUFA APIs to implement the USB Still Image class - * - VirtualSerialHost - Virtual Serial Port host demo, using the low level LUFA APIs to implement the USB CDC class - * - Incomplete - * - BluetoothHost - Incomplete Bluetooth host demo, using the low level LUFA APIs to implement the USB Bluetooth class - * - DualRole - * - ClassDriver - * - MouseHostDevice - Dual role Mouse Host and Mouse Device demo, using the library USB CDC Class driver framework - * - Bootloaders - * - CDC - CDC Class USB bootloader, compatible with any AVR910 protocol programming software such as AVRDude - * - DFU - DFU Class USB bootloader, compatible with Atmel's FLIP and the open source dfu-programmer software - * - HID - HID Class USB bootloader, compatible with a modified PJRC TeensyHID protocol loader application software - * - Projects - * - AVRISP-MKII - AVRISP-MKII Programmer Clone project - * - Benito - Benito Board Arduino Programmer project - * - HIDReportViewer - HID Device Report Viewer project - * - LEDNotifier - USB LED Notification project - * - Magstripe - Magnetic Stripe Card Reader project - * - MediaController - Media Playback Controller project - * - MIDIToneGenerator - MIDI Note Tone Generator project - * - MissileLaucher - Toy Missile Launcher Host project - * - RelayBoard - Relay board controller, controllable via the "sismpctl" Linux application - * - TempDataLogger - Temperature Datalogging project, using the FatFS library - * - USBtoSerial - USB to USART Serial Converter project - * - Webserver - RNDIS Host Webserver with DHCP client, powered by uIP TCP/IP stack project and FatFS library - * - XPLAINBridge - XPLAIN alternative PDI Programmer/USB to Serial Bridge firmware project - * - Incomplete - * - StandaloneProgrammer - Incomplete Standalone AVR Programmer application, to program AVRs directly from a Mass Storage disk - * - * - */ - diff --git a/LUFA/ManPages/LibraryResources.txt b/LUFA/ManPages/LibraryResources.txt deleted file mode 100644 index 7137a56a0..000000000 --- a/LUFA/ManPages/LibraryResources.txt +++ /dev/null @@ -1,33 +0,0 @@ -/** \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. - */ - -/** - * \page Page_Resources Library Resources - * - * \section Sec_UnofficialResources Unofficial Resources - * Unofficial Russian LUFA documentation translation: http://microsin.ru/Download.cnt/doc/LUFA/ \n - * - * \section Sec_ProjectPages LUFA Related Webpages - * Project Homepage: http://www.lufa-lib.org \n - * Commercial Licenses: http://www.lufa-lib.org/license \n - * Author's Website: http://www.fourwalledcubicle.com \n - * Development Blog: http://www.fourwalledcubicle.com/blog \n - * - * \section Sec_ProjectHelp Assistance With LUFA - * Discussion Group: http://www.lufa-lib.org/support \n - * Author's Email: dean [at] fourwalledcubicle [dot] com \n - * - * \section Sec_InDevelopment Latest In-Development Source Code - * Issue Tracker: http://www.lufa-lib.org/tracker \n - * SVN Access: http://www.lufa-lib.org/svn \n - * GIT Access: http://www.lufa-lib.org/git \n - * Latest Repository Source Archive: http://www.lufa-lib.org/latest-archive \n - * Commit RSS Feed: http://www.lufa-lib.org/rss \n - * - * \section Sec_USBResources USB Resources - * USB-IF Website: http://www.usb.org \n - */ - diff --git a/LUFA/ManPages/LicenseInfo.txt b/LUFA/ManPages/LicenseInfo.txt deleted file mode 100644 index 447bec68c..000000000 --- a/LUFA/ManPages/LicenseInfo.txt +++ /dev/null @@ -1,22 +0,0 @@ -/** \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. - */ - -/** - * \page Page_LicenseInfo Source Code License - * - * The LUFA library is currently released under the MIT license, included below. - * - * Commercial entities can opt out of the public disclosure clause in this license - * for a one-time US$1500 payment. This provides a non-exclusive modified MIT licensed which - * allows for the free use of the LUFA library, bootloaders and (where the sole copyright - * is attributed to Dean Camera) demos without public disclosure within an organization, in - * addition to three free hours of consultation with the library author, and priority support. - * Please visit the Commercial License link on \ref Page_Resources for more information on - * ordering a commercial license for your company. - * - * \verbinclude License.txt - */ - diff --git a/LUFA/ManPages/MainPage.txt b/LUFA/ManPages/MainPage.txt deleted file mode 100644 index 0ab9d56dc..000000000 --- a/LUFA/ManPages/MainPage.txt +++ /dev/null @@ -1,48 +0,0 @@ -/** \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 - * - * \image html LUFA.png - * - * \n - * - * \n - * - * LUFA is donationware. For author and donation information, see \ref Page_Donating. - * - * LUFA is an open-source USB library for the USB-enabled AVR microcontrollers, released under the MIT license (see \ref Page_LicenseInfo). - * It supports a large number of USB AVR models and boards (see \ref Page_DeviceSupport). It is designed to provide an easy to use, - * feature rich framework for the development of USB peripherals and hosts. - * - * LUFA focuses on the microcontroller side of USB development only; it includes no PC host USB driver development facilities - other projects - * such as the Windows Driver Development Kit, Windows USB Device Mode Framework and libusb may be of interest for developing custom OS drivers. - * While custom USB devices can be made with LUFA using such tools, the included demos all use the inbuilt OS drivers for each USB class for - * simplicity. - * - * The library is currently in a stable release, suitable for download and incorporation into user projects for - * both host and device modes. For information about the project progression, see the blog link at \ref Page_Resources. - * - * LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the - * library API more streamlined and robust. You can download AVR-GCC for free in a convenient windows package, - * from the the WinAVR website (see \ref Page_Resources). - * - * The only required AVR peripherals for LUFA is the USB controller itself and interrupts - LUFA does not require the use of the - * microcontroller's timers or other hardware, leaving more hardware to the application developer. - * - * Accompanying LUFA in the download package is a set of example demo applications, plus several Bootloaders of different classes - * and open source LUFA powered projects. - * - * Subsections: - * \li \subpage Page_WhyUseLUFA - What are the advantages of using LUFA? - * \li \subpage Page_LUFAvsAtmelStack - How does LUFA compare to the Atmel USB AVR stack? - * \li \subpage Page_AlternativeStacks - Alternative USB AVR Stacks - * \li \subpage Page_LicenseInfo - Project source license and commercial use information - * \li \subpage Page_Donating - Donating to support this project - * \li \subpage Page_LibraryApps - Overview of included Demos, Bootloaders and Projects - */ - diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt deleted file mode 100644 index 14ac86bb4..000000000 --- a/LUFA/ManPages/MigrationInformation.txt +++ /dev/null @@ -1,622 +0,0 @@ -/** \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. - */ - -/** \page Page_Migration Migrating from Older Versions - * - * Below is migration information for updating existing projects based on previous versions of the LUFA library - * to the next version released. It does not indicate all new additions to the library in each version change, only - * areas relevant to making older projects compatible with the API changes of each new release. - * - * \section Sec_MigrationXXXXXX Migrating from 111009 to XXXXXX - * None - * - * \section Sec_Migration111009 Migrating from 110528 to 111009 - * Non-USB Library Components - * - The \c JTAG_DEBUG_ASSERT() macro has been renamed \ref JTAG_ASSERT() to be consistent with \ref STDOUT_ASSERT(). - * - * USB Core - * - By default, unordered Endpoint and Pipe configuration is now allowed once again, via the previous workaround of - * reconfiguring all Endpoints/Pipes in order each time a new Endpoint/Pipe is created. To minimize the compiled program - * size, the new \c ORDERED_EP_CONFIG compile time option may be defined in the project makefile to restrict the ordering - * in exchange for a smaller compiled binary size. - * - The previous \c F_CLOCK symbol, required in the project makefile, has been renamed to \c F_USB. This is due to the previous name - * being far too generic for use in future architecture ports, where multiple clock domains are used. - * - * Device Mode - * - The Endpoint stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter. - * This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes - * processed in the current transaction can be stored. If the \c BytesProcessed parameter is non \c NULL, each time the endpoint - * bank becomes full and the packet is sent, the routine will exit with the new \ref ENDPOINT_RWSTREAM_IncompleteTransfer - * error code to allow the user application to determine when to send the next chunk of data. - * - The \ref CDC_Device_SendString() function now expects a null terminated string instead of an explicit length. Existing code - * should use the new \ref CDC_Device_SendData() function, or remove the length parameter from the function call. - * - The \c Endpoint_ResetFIFO() function has been renamed to \ref Endpoint_ResetEndpoint(), to make the API function names more - * consistent. Existing applications using the old function name should simply replace it with a call to the new function name. - * - The \c Endpoint_*_Byte() functions have been renamed Endpoint_*_8() to ensure they are correct across all architectures. Existing - * code using these functions should replace the previous function names with the new function names. - * - The \c Endpoint_*_Word() functions have been renamed Endpoint_*_16() to ensure they are correct across all architectures. Existing - * code using these functions should replace the previous function names with the new function names. - * - The \c Endpoint_*_DWord() functions have been renamed Endpoint_*_32() to ensure they are correct across all architectures. Existing - * code using these functions should replace the previous function names with the new function names. - * - The Device mode RNDIS class driver no longer stores the incoming and outgoing packets in the class driver instance; the user is - * now expected to manually define a storage location for the packet data. Packets must now be sent and received manually via a call - * to \ref RNDIS_Device_ReadPacket() and/or \ref RNDIS_Device_SendPacket(). - * - The definition of the Audio class \ref USB_Audio_Descriptor_Format_t has been altered, to remove the fixed singular - * audio sample rate in the descriptor definition, and to rename the \c SampleFrequencyType to the more appropriate - * \c TotalDiscreteSampleRates. Existing applications will need to add an array of \ref USB_Audio_SampleFreq_t elements - * immediately following any \ref USB_Audio_Descriptor_Format_t descriptors, and insert the appropriate sampling rates - * supported by the device, as well as rename the descriptor elements to match the updated element names. - * - The device mode Audio class driver now requires a new user application callback, \ref CALLBACK_Audio_Device_GetSetEndpointProperty(). - * Existing applications must implement this new callback, however if multiple sample rates or pitch control is not used, - * this function may be hard-coded to always return false for previous behaviour to be retained. - * - The \c USB_ConfigurationNumber, \c USB_RemoteWakeupEnabled and \c USB_CurrentlySelfPowered globals have been renamed to - * \ref USB_Device_ConfigurationNumber, \ref USB_Device_RemoteWakeupEnabled and \ref USB_Device_CurrentlySelfPowered to clearly indicate - * the USB mode they relate to. Existing applications using these variables should rename all references to the previous names. - * - The \c ENDPOINT_DESCRIPTOR_DIR_IN and \c ENDPOINT_DESCRIPTOR_DIR_OUT macros have now been replaced by \ref ENDPOINT_DIR_IN and - * \ref ENDPOINT_DIR_OUT to improve code clarity. - * - The \ref HID_DESCRIPTOR_JOYSTICK() macro now takes an additional (first) parameter indicating the number of axis in the joystick. - * - * Host Mode - * - The Pipe stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter. - * This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes - * processed in the current transaction can be stored. If the BytesProcessed parameter is non \c NULL, each time the pipe - * bank becomes full and the packet is sent, the routine will exit with the new \ref PIPE_RWSTREAM_IncompleteTransfer - * error code to allow the user application to determine when to send the next chunk of data. - * - The \ref PRNT_Host_SendString() and \ref CDC_Host_SendString() functions now expect a null terminated string instead of an explicit - * length. Existing code should use the new \ref PRNT_Host_SendData() and \ref CDC_Host_SendData() functions, or remove the - * length parameter from the function call. - * - The \c Pipe_ClearErrorFlags() function has been removed, as the pipe error flags are now automatically cleared when the - * \ref Pipe_ClearError() function is called. - * - The \c Pipe_*_Byte() functions have been renamed Pipe_*_8() to ensure they are correct across all architectures. Existing code using - * these functions should replace the previous function names with the new function names. - * - The \c Pipe_*_Word() functions have been renamed Pipe_*_16() to ensure they are correct across all architectures. Existing code using - * these functions should replace the previous function names with the new function names. - * - The \c Pipe_*_DWord() functions have been renamed Pipe_*_32() to ensure they are correct across all architectures. Existing code using - * these functions should replace the previous function names with the new function names. - * - The \c USB_Host_ClearPipeStall() function has been renamed to USB_Host_ClearEndpointStall(), as it operates on a full endpoing address - * within the attached device and not a pipe within the host. Existing code using the old function name should update the function calls and - * check for correct usage. - * - * \section Sec_Migration101122 Migrating from 100807 to 101122 - * USB Core - * - A new USB driver source file, \c Drivers/USB/HighLevel/EndpointStream.c now exists. This source file should be added - * to all project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source - * variables. - * - A new USB driver source file, \c Drivers/USB/HighLevel/PipeStream.c now exists. This source file should be added to all - * project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables. - * - The \c EVENT_USB_InitFailure() event has been removed, as the \ref USB_Init() function will no longer fail; if not USB mode is - * specified, the controller will default to UID selection mode. - * - The USB mode specifier constants have been moved into a new enum and renamed. Existing projects should use the equivalent - * value in the new \ref USB_Modes_t enum. - * - All class driver headers are now included as part of the standard \c LUFA/Drivers/USB/USB.h master dispatch header, and should - * no longer be included separately. Class driver module source files must still be added as a separate module in the project's - * makefile if used. - * - * Device Mode - * - Endpoints MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application - * allocated endpoints in ascending order - or if your application uses the USB device mode class drivers, ensure that each instance's - * endpoint indexes are not overlapped with other interface's endpoints. - * - The signature for the \ref CALLBACK_USB_GetDescriptor() callback has changed, the \c void** \c const \c DescriptorAddress parameter is - * now \c const \c void** \c const \c DescriptorAddress. Existing applications should update their callback signatures to match this, and - * eliminate any casting of descriptor pointers to a non \c const pointer. - * - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation - * for each class driver for the new class specific descriptor type names. - * - The \c ENDPOINT_DOUBLEBANK_SUPPORTED() macro is has been renamed \ref ENDPOINT_BANKS_SUPPORTED() and now returns the total number of - * banks supported by the given endpoint. Existing code should switch to the new naming scheme, and test that the return value of the - * macro is equal to or greater than 2 to regain the previous functionality. - * - The \c EVENT_USB_Device_UnhandledControlRequest() event is now named \ref EVENT_USB_Device_ControlRequest() and fires before (not after) - * the internal library event handlers. Existing code should rename the event handlers in the user application to match the new event - * name, and should ensure that the new execution order does not affect the application's operation. - * - * Host Mode - * - Pipes MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application - * allocated pipes in ascending order - or if your application uses the USB host mode class drivers, ensure that each instance's - * pipe indexes are not overlapped with other interface's pipes. - * - The \c PRNT_Host_SendData() function has been renamed to \ref PRNT_Host_SendString(). Existing applications should simply - * replace all references to the obsolete function name with the new function name. - * - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation - * for each class driver for the new class specific descriptor type names. - * - The Still Image Host class' function prefix has been changed from \c SImage_ to \c SI_, to remain consistent with the rest of the - * driver's enums, type defines and constants. - * - * \section Sec_Migration100807 Migrating from 100513 to 100807 - * - * Non-USB Library Components - * - The Dataflash board driver stub file has changed, as dataflash functions previously located in the internal - * Dataflash driver of the library have now been moved to the individual board files. Existing drivers can - * copy-paste the new functions from the board Dataflash stub driver. - * - * USB Core - * - A new USB driver source file, \c Drivers/USB/LowLevel/Device.c now exists. This source file should be added to all project - * makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables. - * - The \c Drivers/USB/LowLevel/DevChapter9.c source file has moved to \c Drivers/USB/HighLevel/DeviceStandardReq.c - this should - * be updated in all project makefiles, or the makefile should be updated to use the new module source variables. - * - The \c Drivers/USB/LowLevel/HostChapter9.h source file has moved to \c Drivers/USB/HighLevel/HostStandardReq.c - this should - * be updated in all project makefiles, or the makefile should be updated to use the new module source variables. - * - The \c Drivers/USB/LowLevel/LowLevel.c source file has moved to \c Drivers/LowLevel/USBController.c - this should be updated - * in all project makefiles, or the makefile should be updated to use the new module source variables. - * - * Device Mode - * - The \c USB_Device_IsRemoteWakeupSent() macro has been removed, as the remote wakeup request is now fully handled by the - * enhanced \ref USB_Device_SendRemoteWakeup() function. Existing code may now discard any checks to \c USB_Device_IsRemoteWakeupSent(). - * - The \c USB_Device_IsUSBSuspended() macro has been removed, as it is obsolete. Existing code should compare \ref USB_DeviceState - * to see if it the device is in the \ref DEVICE_STATE_Suspended state instead. - * - The \ref CDC_Device_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was - * received. This allows for more efficient coding, as a call to \ref CDC_Device_BytesReceived() is no longer needed if the exact - * number of queued bytes received is not needed. - * - * Host Mode - * - The \ref CDC_Host_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was - * received. This allows for more efficient coding, as a call to \ref CDC_Host_BytesReceived() is no longer needed if the exact - * number of queued bytes received is not needed. - * - The \ref CDC_Host_USBTask() now calls \ref CDC_Host_Flush() automatically, flushing any queued data to the attached device. Manual - * flushing of the interface is no longer needed if the flushes should be in sync with calls to \ref CDC_Host_USBTask(). - * - * \section Sec_Migration100513 Migrating from 100219 to 100513 - * - * Non-USB Library Components - * - The \ref TWI_StartTransmission() function now takes in a timeout period, expressed in milliseconds, within which the addressed - * device must respond or the function will abort. - * - * Device Mode - * - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need - * to perform other initialization before it is ready to handle global interrupts. The user application is now responsible - * for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process - * functions correctly. - * - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel. - * Projects must update their makefile SRC values accordingly. - * - The HID Device Class driver's function signature for the \ref CALLBACK_HID_Device_ProcessHIDReport() function has been changed, to - * allow for a new \c ReportType parameter. This new parameter must be added in all user applications using the Device mode HID Class - * Driver, but may be ignored unless Host-to-Device FEATURE HID reports are used. - * - * Host Mode - * - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need - * to perform other initialization before it is ready to handle global interrupts. The user application is now responsible - * for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process - * functions correctly. - * - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel. - * Projects must update their makefile \c SRC values accordingly. - * - The HID Host Class driver's function signature for the \ref HID_Host_SendReportByID() function has been changed, to allow for a new - * ReportType parameter. Existing calls to this function should substitute \c REPORT_ITEM_TYPE_Out as this parameter's value. - * - * \section Sec_Migration100219 Migrating from 091223 to 100219 - * - * Non-USB Library Components - * - Due to some ADC channels not being identical to their ADC MUX selection masks for single-ended conversions on some AVR models, - * the ADC driver now has explicit masks for each of the standard ADC channels (see \ref Group_ADC). These masks should be used - * when calling the ADC functions to ensure proper operation across all AVR models. Note that the \ref ADC_SetupChannel() function - * is an exception, and should always be called with a channel number rather than a channel mask. - * - * Host Mode - * - The MIDI Host Class driver send and receive routines now operate on packed events, where multiple MIDI events may be - * packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send - * pipe bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually - * flush the queued event(s) to the device by calling \ref MIDI_Host_Flush(). - * - The \ref Pipe_IsEndpointBound() function now takes the endpoint's direction into account, by checking if the MSB of the endpoint's address - * is set to denote IN endpoints. If the previous functionality where the direction is to be discounted is required, mask the endpoint - * address against the \ref PIPE_EPNUM_MASK token before calling \ref Pipe_IsEndpointBound(). - * - * Device Mode - * - The MIDI Device Class driver send and receive routines now operate on packed events, where multiple MIDI events may be - * packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send - * endpoint bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually - * flush the queued event(s) to the host by calling \ref MIDI_Device_Flush(). - * - * \section Sec_Migration091223 Migrating from 091122 to 091223 - * - * Host Mode - * - The Still Image Host Class driver \ref SI_Host_USBTask() and \ref SI_Host_ConfigurePipes() functions were misnamed, and are - * now named \c SImage_Host_USBTask() and \c SImage_Host_ConfigurePipes() respectively. - * - The \c HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to \ref HOST_SENDCONTROL_DeviceDisconnected to be in - * line with the rest of the library error codes. - * - The HID Parser item usages no longer contain separate minimum and maximum values, as this was a violation of the HID - * specification. Instead, the values are distributed evenly across each item as its usage value, to ensure that all items - * can be distinguished from one-another. - * - * Device Mode - * - The \ref CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new \c ReportType parameter to - * indicate the report type to generate. Existing applications may simply add and ignore this additional parameter. - * - * \section Sec_Migration091122 Migrating from 090924 to 091122 - * - * Host Mode - * - The \c 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 \ref HID_ReportItem_t to the - * user application, instead of just its attributes. - * - The \c USB_GetDeviceConfigDescriptor() function was incorrectly named and is now called \ref USB_Host_GetDeviceConfigDescriptor(). - * - * \section Sec_Migration090924 Migrating from 090810 to 090924 - * - * Non-USB Library Components - * - The \c ADC_Off() function has been renamed to \c ADC_ShutDown() to be consistent with the rest of the library. - * - The \ref SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See - * the \ref SPI_Init() function documentation for more details - * - The \ref Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a - * call to \ref SPI_Init() before using the Dataflash driver - * - * Host Mode - * - The \c USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to - * preallocate the largest allowable buffer, and pass the size of the buffer to the function. This allows for a single - * call to the function to retrieve, size check and validate the Configuration Descriptor rather than having the user - * application perform these intermediary steps. - * - The HID report parser now requires a mandatory callback in the user code, to filter only the items the application - * is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem(). - * - The HID report parser now always parses FEATURE and always ignores constant-data items - the \c HID_ENABLE_FEATURE_PROCESSING - * and \c HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect. - * - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_* - * and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in - * the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants. - * - * Device Mode - * - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_* - * and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in - * the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants. - * - * \section Sec_Migration090810 Migrating from 090605 to 090810 - * - * All - * - The "Simple Scheduler" has been deprecated, as it was little more than an abstracted loop and caused much confusion. - * User applications using the scheduler should switch to regular loops instead. The scheduler code will be removed in a future - * release. - * - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never - * used in user applications. - * - * Non-USB Library Components - * - The \c ATTR_NOINLINE function attribute macro has been renamed to \ref ATTR_NO_INLINE to be in line with the rest of the function attribute - * macro names. - * - * Library Demos - * - Most demos now have a corresponding Class Driver implementation, which uses the new internal library class drivers for the standard - * USB classes. This allows for more rapid device and host development, and so should be used in preference to the low level APIs where - * possible so that fixes to the class drivers propagate to all applications which use them automatically with each new LUFA release. - * - * Host Mode - * - The \c HIDParser.c module has moved from \c LUFA/Drivers/USB/Class/ to \c LUFA/Drivers/USB/Class/Host/. - * - The \c USB_GetDeviceConfigDescriptor() function now requires the desired configuration index within the device as its first - * parameter, to add support for multi-configuration devices. Existing code should use a configuration index of 1 to indicate the - * first configuration descriptor within the device. - * - The non-standard "Ready" host state has been removed. Existing \ref HOST_STATE_Configured code should be moved to the end of - * the existing \ref HOST_STATE_Addressed state, and the existing HOST_STATE_Ready state code should be moved to the \ref HOST_STATE_Configured - * state. - * - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_HostState explicitly to ensure the host is - * in the desired state instead. - * - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode - * events. See the \ref Group_Events page for details on the new event names and firing conditions. - * - * Device Mode - * - The \ref CALLBACK_USB_GetDescriptor() function now takes an extra parameter to specify the descriptor's memory space so that - * descriptors in mixed memory spaces can be used. The previous functionality can be returned by defining the \c USE_FLASH_DESCRIPTORS - * token in the project makefile to fix all descriptors into FLASH space and remove the extra function parameter. - * - The \c USB_IsSuspended global has been removed - test \ref USB_DeviceState against \ref DEVICE_STATE_Suspended instead. - * - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_DeviceState explicitly to ensure the device - * is in the desired state instead. - * - The VBUS events have been removed, as they are already exposed to the user via the \c USB_Connect and \c USB_Disconnect events. - * - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode - * events. See the \ref Group_Events page for details on the new event names and firing conditions. - * - * \section Sec_Migration090605 Migrating from 090510 to 090605 - * - * Device Mode - * - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing - * projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can - * manage the control endpoint via interrupts automatically by compiling with the \c INTERRUPT_CONTROL_ENDPOINT token defined. - * - The \c DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory - * address. - * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See - * \ref Group_Events for new API details. - * - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular - * function signatures of a function accepting no arguments and returning a \c uint8_t value. - * - The \c Event_DeviceError() event no longer exists, as its sole caller (unlinked \c USB_GetDescriptor() function) now produces a - * compilation error rather than a runtime error. The \c StdDescriptors.c file no longer exists as a result, and should be removed - * from project makefiles. - * - The \c USB_GetDescriptor() function has been renamed to \ref CALLBACK_USB_GetDescriptor() to be in line with the new \c CALLBACK_ - * function prefixes for functions which must be implemented in the user application. - * - * Host Mode - * - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing - * projects using interrupts on non-control pipes should switch to polling. - * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See - * \ref Group_Events for new API details. - * - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular - * function signatures of a function accepting no arguments and returning a \c uint8_t value. - * - The \c DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with - * regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a \c uint8_t value. - * - * \section Sec_Migration090510 Migrating from 090401 to 090510 - * - * All - * - The \c ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all - * \c BUTTLOADTAG() elements, or download and extract \c ButtLoadTag.h header from the ButtLoad project. - * - The \c Drivers/AT90USBXXX/ directory has been renamed to \c Drivers/Peripheral/. - * - The \c Serial_Stream driver has been renamed to \c SerialStream to remain consistent with the rest of the library naming scheme. - * - The HWB driver has changed to the \c Buttons driver. See the board Buttons driver documentation for the new API. - * - * Dual Role Mode - * - The \c USB_PowerOnFail event has been renamed to \c USB_InitFailure. - * - The functions in \c OTG.h have been renamed to remain more consistent with the library API. See the functions in \c OTG.h for more - * details. - * - * Device Mode - * - The \c Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the \ref Endpoint_ClearIN(), \ref Endpoint_ClearOUT() - * macros. See \c Endpoint.h documentation for more details on the new endpoint management macros. - * - The \c Endpoint_ReadWriteAllowed() macro has been renamed to \ref Endpoint_IsReadWriteAllowed() to be more consistent with the rest of - * the API naming scheme. - * - The \c Endpoint_IsSetupINReady() and \c Endpoint_IsSetupOUTReceived() macros have been renamed to \ref Endpoint_IsINReady() and - * \ref Endpoint_IsOUTReceived() respectively. - * - The \c Endpoint_IsSetupReceived() macro has been renamed to \ref Endpoint_IsSETUPReceived(). - * - The \c Endpoint_ClearSetupReceived() macro has been renamed to \ref Endpoint_ClearSETUP(). - * - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Endpoint_Read_Word()) have - * been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions. - * - The \c USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of - * the Control Request header as all Control Request header data is now preloaded by the library and made available in the - * USB_ControlRequest structure. - * - The \c FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to \c CONTROL_ONLY_DEVICE. - * - The \c STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically. - * - The values of the \ref Endpoint_Stream_RW_ErrorCodes_t and \ref Endpoint_ControlStream_RW_ErrorCodes_t enums have had the \c ERROR_ portion - * of their names removed. - * - * Host Mode - * - The \ref USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on - * other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called - * in existing projects where the Control pipe is to be operated on. - * - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer - * need to manage this manually when calling the USB management task. - * - The \c Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See - * Pipe.h documentation for more details on the new pipe management macros. - * - The \c Pipe_ReadWriteAllowed() macro has been renamed to \ref Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API - * naming scheme. - * - The \c Pipe_IsSetupINReceived() and \c Pipe_IsOutReady() macros have been renamed to \ref Pipe_IsINReceived() and \ref Pipe_IsOUTReady() - * respectively. - * - The new \ref Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous \c Pipe_ClearSetupOUT() macro. - * - The \c Pipe_IsSetupSent() macro has been renamed to \ref Pipe_IsSETUPSent(). - * - The \c Pipe_ClearSetupSent() macro is no longer applicable and should be removed. - * - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Pipe_Read_Word()) have - * been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions. - * - The \c Host_IsResetBusDone() macro has been renamed to \c Host_IsBusResetComplete(). - * - The \c Pipe_Ignore_Word() and \c Pipe_Ignore_DWord() functions have been renamed to \c Pipe_Discard_Word() and \c Pipe_Discard_DWord() - * to remain consistent with the rest of the pipe API. - * - It is no longer needed to manually include the headers from \c LUFA/Drivers/USB/Class, as they are now included along with the rest - * of the USB headers when \c LUFA/Drivers/USB/USB.h is included. - * - Functions in the \c ConfigDescriptor.h header file no longer have \c Host_ as part of their names. - * - The \c ProcessHIDReport() has been renamed to \ref USB_ProcessHIDReport(), \c GetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo() - * and \c SetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo(). - * - The values of the \ref DSearch_Return_ErrorCodes_t and \ref DSearch_Comp_Return_ErrorCodes_t enums have had their respective \c Descriptor_Search - * and \c Descriptor_Search_Comp prefixes changed to all caps. - * - The \c USB_HostRequest global has been renamed to \ref USB_ControlRequest, and is used in Device mode also. The \c USB_Host_Request_Header_t - * structure type has been renamed to \ref USB_Request_Header_t. - * - The values of the \ref Pipe_Stream_RW_ErrorCodes_t enum have had the \c ERROR_ portion of their names removed. - * - * \section Sec_Migration090401 Migrating from 090209 to 090401 - * - * All - * - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant \c F_USB, - * defined in the project makefile and passed to the compiler via the -D switch. - * - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the - * EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called. - * - As the avr-libc macro has been corrected in recent avr-libc distributions, the \c SetSystemClockPrescaler() macro has been removed. - * Include \c and call \c clock_prescale_set(clock_div_1); instead on recent avr-libc distributions. - * - * Library Demos - * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission. - * - * Non-USB Library Components - * - The \c ATTR_ALWAYSINLINE function attribute macro has been renamed to \ref ATTR_ALWAYS_INLINE. - * - Custom board Dataflash drivers now require the implementation of \ref Dataflash_SelectChipFromPage() and \ref Dataflash_SendAddressBytes(). - * - * Device Mode - * - The \c NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to \c FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded - * to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the - * \c NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the \c FEATURELESS_CONTROL_ONLY_DEVICE token with no further - * modifications required. - * - * \section Sec_Migration090209 Migrating from 081217 to 090209 - * - * Device Mode - * - The \c ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c ENDPOINT_TOTAL_ENDPOINTS. - * - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user - * makefile if desired to restore the previous 50ms timeout. - * - * Host Mode - * - The \c PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c PIPE_TOTAL_ENDPOINTS. - * - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user - * makefile if desired to restore the previous 50ms timeout. - * - The \c USB_DeviceEnumerationFailed event now contains a second \c SubErrorCode parameter, giving the error code of the function - * which failed. - * - The \c HID_PARSE_Sucessful enum member constant name has been corrected to \ref HID_PARSE_Successful. - * - * Non-USB Library Components - * - The previous \c SPI_SendByte() functionality is now located in \ref SPI_TransferByte(). \ref SPI_SendByte() now discards the return byte - * for speed, to compliment the new \ref SPI_ReceiveByte() function. If bidirectional SPI transfers are required, calls to \ref SPI_SendByte() - * should be changed to \ref SPI_TransferByte(). - * - The serial driver now sets the Tx line as an output explicitly, and enables the pull-up of the Rx line. - * - The \ref Serial_Init() and \c SerialStream_Init() functions now take a second \c DoubleSpeed parameter, which indicates if the USART - * should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at the given AVR - * clock speed. - * - * \section Sec_Migration171208 Migrating from V1.5.3 to 081217 - * - * All - * - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names, - * have been changed to LUFA. - * - * Library Demos - * - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding - * parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version. - * - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and - * KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects - * built on either "WithParser" demo should update to the latest code. - * - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not - * recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes, - * as it is neither a full nor a standards compliant implementation. - * - * Non-USB Library Components - * - The Serial_IsCharReceived() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h. - * - * Device Mode - * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask - * to be used in the Options parameter of the USB_Init() function. - * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is - * currently initialized. - * - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library - * or user request processing code to exceed the strict USB timing requirements on control transfers. - * - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured - * after a Reset event, it should be altered to explicitly re-initialize all user endpoints. - * - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now - * returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified - * descriptor does not exist. - * - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the - * GetDescriptor function. - * - * Host Mode - * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask - * to be used in the Options parameter of the USB_Init() function. - * - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and - * SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the - * current report. If sending a report to a multi-report device, the first byte of the report is automatically - * set to the report ID of the given report item. - * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is - * currently initialized. - * - * \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3 - * - * Library Demos - * - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number - * string is required in Mass Storage devices, or devices which are to retain settings when moved between - * ports on a machine. As people were not changing the serial number value, this was causing conflicts and so - * the serial number descriptor has been removed from all but the Mass Storage demo, which requires it. - * - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated - * them. Projects built upon either demo should upgrade to the latest code. - * - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented. - * - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built - * on the MassStoreDemo code should update to the latest version. - * - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused - * problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade - * to the latest code. - * - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects - * built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code. - * - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should - * upgrade to the latest code. - * - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was - * previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update - * to the latest code. - * - * Device Mode - * - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream. - * If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The - * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired - * timeout duration in ms. - * - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled - * and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and - * USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details. - * - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated - * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing - * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. - * - * Host Mode - * - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream. - * If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The - * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired - * timeout duration in ms. - * - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures. - * - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated - * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing - * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. - * - * \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2 - * - * Library Demos - * - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations - * of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade - * to the latest code. - * - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where - * possible any existing devices upgrade to the latest bootloader code. - * - * \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1 - * - * Library Demos - * - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the - * global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo - * should upgrade to the latest code. - * - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID - * demos should upgrade to the latest code. - * - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors. - * Projects built upon the HID demos should upgrade to the latest code. - * - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo - * should upgrade to the latest code. - * - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power. - * Projects built upon the AudioOut demo should upgrade to the latest code. - * - * \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0 - * - * Library Demos - * - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To - * avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing - * projects should at least manually correct the BCD version numbers, or preferably update the descriptors to - * encode the version number in BCD format using the new macro. - * - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos - * based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the - * HID demos should also be updated accordingly. - * - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission. - * Failure to do this on projects which always or frequently send full packets will cause buffering issues on - * the host OS. All CDC user projects are advised to update their transmission routines in the same manner as - * the library CDC demos. - * - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected - * Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven - * demos should also update to properly save and restore the selected Endpoint/Pipe. - * - * Non-USB Library Components - * - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only - * compatible with avr-libc library versions newer than the time before the functionality of the deleted - * headers was available. - * - * Device Mode - * - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and - * functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API. - * The previously split Type and Index parameters are now passed as the original wValue parameter to the - * function, to make way for the USB specification wIndex parameter which is not the same as the - * previous Index parameter. - * - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the - * official USB specification. Existing code will need to be altered to use the new parameter names. - * - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more - * appropriate. It fires in an identical manner to the previously named event, thus the only change to be made - * is the event name itself in the user project. - * - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a - * pseudo-descriptor modeled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type - * descriptor as indicated in the USB specification, thus all device code must be updated accordingly. - * - The names of several Endpoint macros have been changed to be more consistent with the rest of the library, - * with no implementation changes. This means that existing code can be altered to use the new macro names - * with no other considerations required. See Endpoint.h for the new macro names. - * - The previous version of the MassStorage demo had an incorrect value in the SCSI_Request_Sense_Response_t - * structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this - * demo should correct the structure value to maintain compatibility across multiple OS platforms. - * - By default, the descriptor structures use the official USB specification names for the elements. Previous - * versions of the library used non-standard (but more verbose) names, which are still usable in the current - * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file - * documentation for more details. - * - * Host Mode - * - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its - * members renamed to the official USB specification names for requests. Existing code will need to be updated - * to use the new names. - * - The names of several Pipe macros have been changed to be more consistent with the rest of the library, - * with no implementation changes. This means that existing code can be altered to use the new macro names - * with no other considerations required. See Pipe.h for the new macro names. - * - By default, the descriptor structures use the official USB specification names for the elements. Previous - * versions of the library used non-standard (but more verbose) names, which are still usable in the current - * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file - * documentation for more details. - * - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h - * module documentation for the new macro names. - * - * Dual Role Mode - * - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing - * projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG - * header inside the library. - * - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has - * finished enumerating the device. Projects relying on the event only firing in Host mode should be updated - * so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST. - */ - diff --git a/LUFA/ManPages/ProgrammingApps.txt b/LUFA/ManPages/ProgrammingApps.txt deleted file mode 100644 index c1b2181c8..000000000 --- a/LUFA/ManPages/ProgrammingApps.txt +++ /dev/null @@ -1,27 +0,0 @@ -/** \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. - */ - -/** \page Page_ProgrammingApps Programming an Application into a USB AVR - * - * Once you have built an application, you will need a way to program in the resulting ".HEX" file (and, if your - * application uses EEPROM variables with initial values, also a ".EEP" file) into your USB AVR. Normally, the - * reprogramming of an AVR device must be performed using a special piece of programming hardware, through one of the - * supported AVR programming protocols - ISP, HVSP, HVPP, JTAG or dW. This can be done through a custom programmer, - * a third party programmer, or an official Atmel AVR tool - for more information, see the Atmel.com website. - * - * Alternatively, you can use the bootloader. From the Atmel factory, each USB AVR comes preloaded with the Atmel - * DFU (Device Firmware Update) class bootloader, a small piece of AVR firmware which allows the remainder of the - * AVR to be programmed through a non-standard interface such as the serial USART port, SPI, or (in this case) USB. - * Bootloaders have the advantage of not requiring any special hardware for programming, and cannot usually be erased - * or broken without an external programming device. They have disadvantages however; they cannot change the fuses of - * the AVR (special configuration settings that control the operation of the chip itself) and a small portion of the - * AVR's FLASH program memory must be reserved to contain the bootloader firmware, and thus cannot be used by the - * loaded application. Atmel's DFU bootloader is either 4KB (for the smaller USB AVRs) or 8KB (for the larger USB AVRs). - * - * If you wish to use the DFU bootloader to program in your application, refer to your DFU programmer's documentation. - * Atmel provides a free utility called FLIP which is USB AVR compatible, and an open source (Linux compatible) - * alternative exists called "dfu-programmer". - */ diff --git a/LUFA/ManPages/SoftwareBootloaderJump.txt b/LUFA/ManPages/SoftwareBootloaderJump.txt deleted file mode 100644 index 1fad85fb7..000000000 --- a/LUFA/ManPages/SoftwareBootloaderJump.txt +++ /dev/null @@ -1,71 +0,0 @@ -/** \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. - */ - -/** - * \page Page_SoftwareBootloaderStart Entering the Bootloader via Software - * - * A common requirement of many applications is the ability to jump to the programmed bootloader of a chip - * on demand, via the code's firmware (i.e. not as a result of any physical user interaction with the - * hardware). This might be required because the device does not have any physical user input, or simply - * just to streamline the device upgrade process on the host PC. - * - * The following C code snippets may be used to enter the bootloader upon request by the user application. - * By using the watchdog to physically reset the controller, it is ensured that all system hardware is - * completely reset to their defaults before the bootloader is run. This is important; since bootloaders - * are written to occupy a very limited space, they usually make assumptions about the register states based - * on the default values after a hard-reset of the chip. - * - * \section Sec_SoftareBootAVR8 AVR8 Architecture - * The following software bootloader jump code is written for the AVR8 architecture. - * - * \code - * #include - * #include - * #include - * - * #include - * #include - * - * uint32_t Boot_Key ATTR_NO_INIT; - * - * #define MAGIC_BOOT_KEY 0xDC42ACCA - * #define BOOTLOADER_START_ADDRESS (FLASH_SIZE_BYTES - BOOTLOADER_SEC_SIZE_BYTES) - * - * void Bootloader_Jump_Check(void) ATTR_INIT_SECTION(3); - * void Bootloader_Jump_Check(void) - * { - * // If the reset source was the bootloader and the key is correct, clear it and jump to the bootloader - * if ((MCUSR & (1 << WDRF)) && (Boot_Key == MAGIC_BOOT_KEY)) - * { - * Boot_Key = 0; - * ((void (*)(void))BOOTLOADER_START_ADDRESS)(); - * } - * } - * - * void Jump_To_Bootloader(void) - * { - * // If USB is used, detach from the bus and reset it - * USB_Disable(); - * - * // Disable all interrupts - * cli(); - * - * // Wait two seconds for the USB detachment to register on the host - * Delay_MS(2000); - * - * // Set the bootloader key to the magic value and force a reset - * Boot_Key = MAGIC_BOOT_KEY; - * wdt_enable(WDTO_250MS); - * for (;;); - * } - * \endcode - * - * Note that the bootloader magic key can be any arbitrary value. The FLASH_SIZE_BYTES and - * BOOTLOADER_SEC_SIZE_BYTES tokens should be replaced with the total flash size of the AVR - * in bytes, and the allocated size of the bootloader section for the target AVR. - * - */ - diff --git a/LUFA/ManPages/VIDAndPIDValues.txt b/LUFA/ManPages/VIDAndPIDValues.txt deleted file mode 100644 index 17d9e1782..000000000 --- a/LUFA/ManPages/VIDAndPIDValues.txt +++ /dev/null @@ -1,424 +0,0 @@ -/** \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. - */ - -/** \page Page_VIDPID VID and PID values - * - * \section Sec_VIDPID_Allocations - * The LUFA library uses VID/PID combinations generously donated by Atmel. The following VID/PID combinations - * are used within the LUFA demos, and thus may be re-used by derivations of each demo. Free PID values may be - * used by future LUFA demo projects. - * - * These VID/PID values should not be used in commercial designs under any circumstances. Private projects - * may use the following values freely, but must accept any collisions due to other LUFA derived private projects - * sharing identical values. It is suggested that private projects using interfaces compatible with existing - * demos share the same VID/PID value. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
- * VID - * - * PID - * - * Usage - *
- * 0x03EB - * - * 0x2040 - * - * Test VID/PID (See below) - *
- * 0x03EB - * - * 0x2041 - * - * Mouse Demo Application - *
- * 0x03EB - * - * 0x2042 - * - * Keyboard Demo Application - *
- * 0x03EB - * - * 0x2043 - * - * Joystick Demo Application - *
- * 0x03EB - * - * 0x2044 - * - * CDC Demo Application - *
- * 0x03EB - * - * 0x2045 - * - * Mass Storage Demo Application - *
- * 0x03EB - * - * 0x2046 - * - * Audio Output Demo Application - *
- * 0x03EB - * - * 0x2047 - * - * Audio Input Demo Application - *
- * 0x03EB - * - * 0x2048 - * - * MIDI Demo Application - *
- * 0x03EB - * - * 0x2049 - * - * MagStripe Project - *
- * 0x03EB - * - * 0x204A - * - * CDC Bootloader - *
- * 0x03EB - * - * 0x204B - * - * USB to Serial Demo Application - *
- * 0x03EB - * - * 0x204C - * - * RNDIS Demo Application - *
- * 0x03EB - * - * 0x204D - * - * Combined Keyboard and Mouse Demo Application - *
- * 0x03EB - * - * 0x204E - * - * Dual CDC Demo Application - *
- * 0x03EB - * - * 0x204F - * - * Generic HID Demo Application - *
- * 0x03EB - * - * 0x2060 - * - * Benito Programmer Project - *
- * 0x03EB - * - * 0x2061 - * - * Combined Mass Storage and Keyboard Demo - *
- * 0x03EB - * - * 0x2062 - * - * Combined CDC and Mouse Demo - *
- * 0x03EB - * - * 0x2063 - * - * Mass Storage/HID Interface Datalogger Project - *
- * 0x03EB - * - * 0x2064 - * - * Interfaceless Control-Only LUFA Devices - *
- * 0x03EB - * - * 0x2065 - * - * Test and Measurement Demo - *
- * 0x03EB - * - * 0x2066 - * - * Multiple Report Keyboard/Mouse HID Demo - *
- * 0x03EB - * - * 0x2067 - * - * HID Class Bootloader - *
- * 0x03EB - * - * 0x2068 - * - * Virtual Serial/Mass Storage Demo - *
- * 0x03EB - * - * 0x2069 - * - * Webserver Project - *
- * 0x03EB - * - * 0x206A - * - * Media Control Project - *
- * 0x03EB - * - * 0x206B - * - * Currently Unallocated - *
- * 0x03EB - * - * 0x206C - * - * Currently Unallocated - *
- * 0x03EB - * - * 0x206D - * - * Currently Unallocated - *
- * 0x03EB - * - * 0x206E - * - * Currently Unallocated - *
- * 0x03EB - * - * 0x206F - * - * Currently Unallocated - *
- * - * \section Sec_Test_VIDPID The Test VID/PID Combination: - * For use in testing of LUFA powered devices during development only, by non-commercial entities. - * All devices must accept collisions on this VID/PID range (from other in-development LUFA devices) - * to be resolved by using a unique release number in the Device Descriptor. No devices using this - * VID/PID combination may be released to the general public. - */ - diff --git a/LUFA/ManPages/WhyUseLUFA.txt b/LUFA/ManPages/WhyUseLUFA.txt deleted file mode 100644 index 5644be07c..000000000 --- a/LUFA/ManPages/WhyUseLUFA.txt +++ /dev/null @@ -1,43 +0,0 @@ -/** \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. - */ - -/** - * \page Page_WhyUseLUFA Why Use LUFA? - * - * The LUFA Library has many advantages over implementing the code required to drive the USB AVRs directly. - * It is much more preferable to incorporate LUFA into your existing projects - or even make a new project - * using LUFA - than it is to start from scratch and use the USB AVR registers directly. Some of these reasons - * are: - * - * - Portability: - * The LUFA stack is designed to run (at some capacity) on the entire Atmel range of USB AVRs, regardless of the - * exact USB controller revision used. If you decide to implement your own USB stack, you will either need to - * code around the differences between each USB AVR controller's implementation between different chip models, or - * require your code to run on only one specific USB AVR model series. - * - * - Speed of Development: - * LUFA ships with a wide range of pre-made demos, bootloaders and projects for you to try, learn and extend. Each - * of these demos are tested (where possible) across as many USB AVRs and Operating Systems as possible, to ensure - * that they work under as many conditions as possible. In addition, there are inbuilt class drivers for several of - * the USB classes which you can make use of in your projects with minimal effort. - * - * - Maintainability: - * As LUFA takes care of much of the USB implementation, you can be left to focusing on your actual project's - * functionality, rather than being held back developing and debugging the USB stack code. Since LUFA uses clear APIs - * for USB development, your code will be more readable than if it had the low level USB stack code integrated into - * it directly. Updating the LUFA library is a simple folder-replacement and gives new features and bug fixes in - * seconds each time a new release is made. - * - * - Size: - * Not just requiring less code to make complex USB devices, LUFA is written to compile down as much as possible into - * optimal code, to occupy only a small space for its feature set. - * - * - Support: - * Since many people are now using LUFA in their own projects, you can take advantage of other's knowledge when you run - * into difficulties or need some advice. In addition, you can also email the library author to receive personalized - * support when you need it (subject to author's schedule). - */ - diff --git a/LUFA/ManPages/WritingBoardDrivers.txt b/LUFA/ManPages/WritingBoardDrivers.txt deleted file mode 100644 index e09e7d0d9..000000000 --- a/LUFA/ManPages/WritingBoardDrivers.txt +++ /dev/null @@ -1,27 +0,0 @@ -/** \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. - */ - -/** \page Page_WritingBoardDrivers Writing LUFA Board Drivers - * - * LUFA ships with several basic pre-made board drivers, to control hardware present on the supported board - * hardware - such as Dataflash ICs, LEDs, Joysticks, or other hardware peripherals. When compiling an application - * which makes use of one or more board drivers located in LUFA/Drivers/Board, you must also indicate what board - * hardware you are using in your project makefile. This is done by defining the BOARD macro using the -D switch - * passed to the compiler, with a constant of BOARD_{Name}. For example -DBOARD=BOARD_USBKEY instructs the - * compiler to use the USBKEY board hardware drivers. - * - * If your application does not use *any* board level drivers, you can omit the definition of the BOARD macro. - * However, some users may wish to write their own custom board hardware drivers which are to remain compatible - * with the LUFA hardware API. To do this, the BOARD macro should be defined to the value BOARD_USER. This indicates - * that the board level drivers should be located in a folder named "Board" located inside the application's folder. - * - * When used, the driver stub files located in the LUFA/CodeTemplates/DriverStubs folder should be copied to the user - * Board/ directory, and fleshed out to include the values and code needed to control the custom board hardware. Once - * done, the existing LUFA board level APIs (accessed in the regular LUFA/Drivers/Board/ folder) will redirect to the - * user board drivers, maintaining code compatibility and allowing for a different board to be selected through the - * project makefile with no code changes. - */ - diff --git a/LUFA/ManPages/footer.htm b/LUFA/ManPages/footer.htm deleted file mode 100644 index 318a485fb..000000000 --- a/LUFA/ManPages/footer.htm +++ /dev/null @@ -1 +0,0 @@ -LUFA Project Page | Support Mailing List | Donate | Four Walled Cubicle - LUFA, the Lightweight USB Framework for AVRs \ No newline at end of file -- cgit v1.2.3