+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_AboutLUFA About LUFA\r
- *\r
- * This section of the manual contains information about the library as a whole, including its supported targets,\r
- * past and planned changes, and links to other projects incorporating LUFA.\r
- *\r
- * <b>Subsections:</b>\r
- * - \subpage Page_DeviceSupport Current Device and Hardware Support\r
- * - \subpage Page_Resources LUFA and USB Related Resources\r
- * - \subpage Page_ChangeLog Project Changelog\r
- * - \subpage Page_FutureChanges Planned Changes to the Library\r
- * - \subpage Page_LUFAPoweredProjects Other Projects Using LUFA\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_BuildLibrary Building as a Linkable Library\r
- *\r
- * The LUFA library can be built as a proper linkable library (with the extention .a) under AVR-GCC, so that\r
- * the library does not need to be recompiled with each revision of a user project. Instructions for creating\r
- * a library from a given source tree can be found in the AVR-GCC user manual included in the WinAVR install\r
- * /Docs/ directory.\r
- *\r
- * However, building the library is <b>not recommended</b>, as the static (compile-time) options will be\r
- * unable to be changed without a recompilation of the LUFA code. Therefore, if the library is to be built\r
- * from the LUFA source, it should be made to be application-specific and compiled with the static options\r
- * that are required for each project (which should be recorded along with the library).\r
- *\r
- * Normal library use has the library components compiled in at the same point as the application code, as\r
- * demonstrated in the library demos and applications. This is the preferred method, as the library is recompiled\r
- * each time to ensure that all static options for a particular application are applied.\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
- /** \page Page_ChangeLog Project Changelog\r
- *\r
- * \section Sec_ChangeLogXXXXXX Version XXXXXX\r
- *\r
- * - Removed psuedo-scheduler, dynamic memory block allocator from the library (no longer needed and not used respectively)\r
- * - Added new class drivers and matching demos to the library for rapid application development\r
- * - Added incomplete device and host mode demos for later enhancement\r
- * - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed\r
- * - Error status LEDs shown when device endpoint configuration fails to complete in all demos and projects\r
- * - Low level API MIDI device demo no longer blocks if a note change event is sent while the endpoint is not ready\r
- * - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived()\r
- * to only unfreeze and check one data pipe at a time)\r
- * - Internal per-device preprocessing conditions changed to per-device series rather than per controller group for finer-grain\r
- * internal control\r
- *\r
- *\r
- * \section Sec_ChangeLog090605 Version 090605\r
- *\r
- * - Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data\r
- * - Fixed documentation showing incorrect USB mode support on the supported AVRs list\r
- * - Fixed RNDISEthernet not working under Linux due to Linux requiring an "optional" RNDIS request which was unhandled\r
- * - Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman)\r
- * - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues\r
- * - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)\r
- * - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token\r
- * - Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC\r
- * interface is skipped\r
- * - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype\r
- * inside the library that is able to hold their defined value to save space\r
- * - Removed DESCRIPTOR_ADDRESS() macro as it was largely supurflous and only served to obfuscate code\r
- * - Rewritten event system to remove all macros, to make user code clearer\r
- * - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley)\r
- * - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code\r
- * - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code\r
- * - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed\r
- * - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)\r
- * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the\r
- * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs\r
- * - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure\r
- * - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt\r
- *\r
- *\r
- * \section Sec_ChangeLog090510 Version 090510\r
- *\r
- * - Added new GenericHIDHost demo\r
- * - Corrections to the KeyboardHost and MouseHost demos' pipe handling to freeze and unfreeze the data pipes at the point of use\r
- * - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR\r
- * - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile\r
- * time options\r
- * - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected\r
- * - Added new PIMA_DATA_SIZE() define to the Still Image Host demo\r
- * - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the\r
- * extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus()\r
- * to early-abort (thanks to Dmitry Maksimov)\r
- * - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory,\r
- * where they are more suited\r
- * - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the\r
- * code without having to be itself patched and recompiled first\r
- * - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to\r
- * outdated avr-libc versions.\r
- * - Added support to the CDCHost demo for devices with multiple CDC interfaces which are not the correct ACM type preceding the desired\r
- * ACM CDC interface\r
- * - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen)\r
- * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley)\r
- * - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint\r
- * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet,\r
- * and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis)\r
- * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type\r
- * pipes can be used with the function\r
- * - The USB Host management task now saves and restores the currently selected pipe before and after the task completes\r
- * - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei Krainev)\r
- * - Removed Endpoint_ClearCurrentBank() and Pipe_ClearCurrentBank() in favour of new Endpoint_ClearIN(), Endpoint_ClearOUT(),\r
- * Pipe_ClearIN() and Pipe_ClearOUT() macros (done to allow for the detection of packets of zero length)\r
- * - Renamed *_ReadWriteAllowed() macros to *_IsReadWriteAllowed() to remain consistent with the rest of the LUFA API\r
- * - Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(), Endpoint_ClearSetupReceived() macro has been\r
- * renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the\r
- * Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe\r
- * bank management API\r
- * - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG)\r
- * - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity\r
- * - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity\r
- * - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway\r
- * - Renamed the main Drivers/AT90USBXXX directory to Drivers/Peripheral, renamed the Serial_Stream driver to SerialStream\r
- * - Fixed CDC and USBtoSerial demos freezing where buffers were full while still transmitting or receiving (thanks to Peter Hand)\r
- * - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the\r
- * device descriptor\r
- * - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name\r
- * - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman)\r
- * - Capitalised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and\r
- * DSearch_Comp_Return_ErrorCodes_t enums\r
- * - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums\r
- * - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to\r
- * USB_INITERROR_NoUSBModeSpecified\r
- * - Renamed USB_PowerOnFail event to USB_InitFailure\r
- * - Renamed OTG.h header functions to be more consistent with the rest of the library API\r
- * - Changed over all deprecated GCC structure tag initializers to the standardized C99 format (thanks to Mike Alexander)\r
- * - USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode\r
- * rather than having the library pass only partially read header data to the application\r
- * - The USB_UnhandledControlPacket event has had its parameters removed, in favour of accessing the new USB_ControlRequest structure\r
- * - The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent\r
- * - Fixed USB_RemoteWakeupEnabled flag never being set (the REMOTE WAKEUP Set Feature request was not being handled)\r
- * - Renamed the FEATURELESS_CONTROL_ONLY_DEVICE compile-time token to CONTROL_ONLY_DEVICE\r
- * - Endpoint configuration is now refined to give better output when all configurations have static inputs - removed the now useless\r
- * STATIC_ENDPOINT_CONFIGURATION compile time token\r
- * - Fixed SPI driver init function not clearing SPI2X bit when not needed\r
- * - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex)\r
- * - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus()\r
- * - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke)\r
- * - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given\r
- * wLength value when reading in the device descriptor\r
- * - Fixed missing semicolon in the ATAVRUSBRF01 LED board driver code (thanks to Morten Lund)\r
- * - 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\r
- * with less than four LEDs without code modifications (thanks to Morten Lund)\r
- * - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button\r
- * - Serial driver now correctly calculates the baud register value when in double speed mode\r
- * - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values\r
- * \r
- *\r
- * \section Sec_ChangeLog090401 Version 090401\r
- *\r
- * - Fixed MagStripe project configuration descriptor containing an unused (blank) endpoint descriptor\r
- * - Incorporated makefile changes by Denver Gingerich to retain compatibility with stock (non-WinAVR) AVR-GCC installations\r
- * - Fixed makefile EEPROM programming targets programming FLASH data in addition to EEPROM data\r
- * - LUFA devices now enumerate correctly with LUFA hosts\r
- * - Fixed Configuration Descriptor search routine freezing when a comparator returned a failure\r
- * - Removed HID report item serial dump in the MouseHostWithParser and KeyboardHostWithParser - useful only for debugging, and\r
- * slowed down the enumeration of HID devices too much\r
- * - Increased the number of bits per track which can be read in the MagStripe project to 8192 when compiled for the AT90USBXXX6/7\r
- * - Fixed KeyboardMouse demo discarding the wIndex value in the REQ_GetReport request\r
- * - USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission\r
- * next time the device is attached to a host.\r
- * - Added new F_CLOCK compile time constant to the library and makefiles, to give the raw input clock (used to feed the PLL before any\r
- * clock prescaling is performed) frequency, so that the PLL prescale mask can be determined\r
- * - Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with\r
- * badly designed hosts or devices which greatly exceed the USB specification limits\r
- * - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices\r
- * - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions\r
- * - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances\r
- * - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions\r
- * - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson)\r
- * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded\r
- * to also remove parts of the Get Status chapter 9 request to further reduce code usage\r
- * - Makefile updated to include output giving the currently selected BOARD parameter value\r
- * - Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks\r
- * to Kenneth Clubb)\r
- * - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy\r
- * interfacing with a FAT library for dataflash file level access\r
- * - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience\r
- * - Fixed typos in the SPI driver SPI_SPEED_FCPU_DIV_64 and SPI_SPEED_FCPU_DIV_128 masks (thanks to Markus Zocholl)\r
- * - Keyboard and Mouse device demos (normal, data interrupt and fully interrupt driven) combined into unified keyboard and mouse demos\r
- * - Keyboard and Mouse host demos (normal and data interrupt driven) combined into unified keyboard and mouse demos\r
- * - Removed AVRISP_Programmer project due to code quality concerns\r
- * - Fixed CDC demo not sending an empty packet after each transfer to prevent the host from buffering incoming data\r
- * - Fixed documentation typos and preprocessor checks relating to misspellings of the USE_RAM_DESCRIPTORS token (thanks to Ian Gregg)\r
- * - Fixed USBTask.h not conditionally including HostChapter9.h only when USB_CAN_BE_HOST is defined (thanks to Ian Gregg)\r
- * - Fixed incorrect ADC driver init register manipulation (thanks to Tobias)\r
- * - Added new GenericHID device demo application\r
- * - Fixed Still Image Host SImage_SendData() function not clearing the pipe bank after sending data\r
- *\r
- *\r
- * \section Sec_ChangeLog090209 Version 090209\r
- *\r
- * - PWM timer mode in AudioOut demo changed to Fast PWM for speed\r
- * - Updated Magstripe project to work with the latest hardware revision\r
- * - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups\r
- * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to\r
- * Nate Lawson)\r
- * - Fixed serious data corruption issue in MassStorage demo dataflash write routine\r
- * - Added new NO_CLEARSET_FEATURE_REQUEST compile time token\r
- * - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled\r
- * - Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration\r
- * - Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint\r
- * - ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES\r
- * - Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing\r
- * - Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump\r
- * - Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers\r
- * - SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer\r
- * - MassStorage demo changed to use new fast one-way SPI transfers to increase throughput\r
- * - MassStorage handling of Mass Storage Reset class request improved\r
- * - Altered MassStorage demo dataflash block read code for speed\r
- * - Added USB_IsSuspended global flag\r
- * - Simplified internal Dual Mode (OTG) USB library code to reduce code size\r
- * - Extended stream timeout period to 100ms from 50ms\r
- * - Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum\r
- * - Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event\r
- * - VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff\r
- * - Simplified low level backend so that device/host mode initialization uses the same code paths\r
- * - Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request\r
- * - Removed buggy Telnet application from the RNDIS demo\r
- * - Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c\r
- * - Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c\r
- * - Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol\r
- * - Added new "dfu" and "flip" programming targets to project makefiles\r
- * - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful\r
- * - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value\r
- * - Serial driver now sets Tx line as output, enables pullup on Rx line\r
- * - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled\r
- * - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated\r
- * - Fixed KeyboardHostWithParser demo linking against the wrong global variables\r
- * - Completed doxygen documentation of remaining library bootloaders, demos and projects\r
- * - Fixed incorrect bootloader start address in the TeensyHID bootloader\r
- * - Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo\r
- * - Replaced printf_P(PSTR("%c"), {Variable}) calls with putchar(<Variable>) for speed and size savings\r
- * - Serial driver now accepts baud rates over 16-bits in size, added double speed flag option\r
- * - Fixed incorrect callback abort return value in Pipe.c\r
- * - Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.)\r
- * - Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems\r
- * - Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning\r
- * each time the task runs to allow for other tasks to execute\r
- * - Added support for the Atmel ATAVRUSBRF01 board\r
- * - Added AVRISP Programmer Project, courtesy of Opendous Inc.\r
- * - Fixed CDC Host demo not searching through both CDC interfaces for endpoints\r
- * - Fixed incorrect Product String descriptor length in the DFU class bootloader\r
- *\r
- *\r
- * \section Sec_ChangeLog081224 Version 081224\r
- *\r
- * - MyUSB name changed to LUFA, the Lightweight USB Framework for AVRs\r
- * - Fixed Mass Storage Host demo's MassStore_SendCommand() delay in the incorrect place\r
- * - Fixed USBtoSerial demo not calling ReconfigureUSART() after a change in the line encoding\r
- * - Fixed infinite loop in host mode Host-to-Device control transfers with data stages\r
- * - HID report parser now supports devices with multiple reports in one interface via Report IDs\r
- * - Fixed RZUSBSTICK board LED driver header incorrect macro definition order causing compile errors\r
- * - Calling USB_Init() when the USB interface is already configured now forces a complete interface reset\r
- * and re-enumeration - fixes MyUSB DFU bootloader not switching to app code correctly when soft reset used\r
- * - Fixed "No newline at end of file" warning when stream callbacks are enabled\r
- * - DFU bootloader now uses fixed signature bytes per device, rather than reading them out dynamically for size\r
- * - Added new FIXED_CONTROL_ENDPOINT_SIZE and USE_SINGLE_DEVICE_CONFIGURATION switches to statically define certain values to\r
- * reduce compiled binary size\r
- * - Added new NO_LIMITED_CONTROLLER_CONNECT switch to prevent the library from trying to determine bus connection\r
- * state from the suspension and wake up events on the smaller USB AVRs\r
- * - Added summary of all library compile time tokens to the documentation\r
- * - Added overview of the LUFA scheduler to the documentation\r
- * - Removed MANUAL_PLL_CONTROL compile time token, replaced with a mask for the USB_Init() Options parameter\r
- * - CDC bootloader now uses the correct non-far or far versions of the pgm_* functions depending on if RAMPZ is defined\r
- * - Doxygen documentation now contains documentation on all the projects, bootloaders and most demos included with the library\r
- * - CDC bootloader now runs user application when USB disconnected rather than waiting for a hard reset\r
- * - MouseHostWithParser and KeyboardHostWithParser now support multiple-report devices\r
- * - RNDIS demo can now close connections correctly using the new TCP_APP_CLOSECONNECTION() macro - used in Webserver \r
- * - Fixed the DFU bootloader, no longer freezes up when certain files are programmed into an AVR, made reading/writing faster\r
- * - Fixed mouse/joystick up/down movements reversed - HID mouse X/Y coordinates use a left-handed coordinate system, not a normal \r
- * right-handed system\r
- * - Added stub code to the CDC and USBtoSerial demos showing how to read and set the RS-232 handshake lines - not currently used in\r
- * the demos, but the example code and supporting defines are now in place\r
- * - Interrupts are now disabled when processing a control request in device mode, to avoid exceeding the strict control request\r
- * timing requirements.\r
- * - All demos now use a central StatusUpdate() function rather than direct calls to the board LED functions, so that the demos can\r
- * easily be altered to show different LED combinations (or do something else entirely) as the demo's status changes\r
- * - Removed LED commands from the CDC bootloader, unused by most AVR910 programming software\r
- * - Fixed RNDIS demo ICMP ping requests echoing back incorrect data\r
- * - Added DHCP server code to RNDIS demo, allowing for hands-free auto configuration on any PC\r
- * - Fixed DFU bootloader PID value for the ATMEGA16U4 AVR\r
- * - Endpoint and Pipe configuration functions now return an error code indicating success or failure\r
- * - USB Reset in device mode now resets and disables all device endpoints\r
- * - Added intermediate states to the host mode state machine, reducing the USB task blocking time to no more than 1ms explicitly per\r
- * invocation when in host mode\r
- * - Added support for the ATMEGA32U6 microcontroller\r
- * - Added STATIC_ENDPOINT_CONFIGURATION compile time option, enabled in the bootloaders to minimize space usage\r
- * - Removed redundant code from the USB device GetStatus() chapter 9 processing routine\r
- * - Added new TeensyHID bootloader, compatible with the Teensy HID protocol (http://www.pjrc.com/teensy/)\r
- * - Versions are now numbered by release dates, rather than arbitrary major/minor revision numbers\r
- * - USB_RemoteWakeupEnabled is now correctly set and cleared by SetFeature and ClearFeature requests from the host\r
- * - Changed prototype of GetDescriptor, so that it now returns the descriptor size (or zero if the descriptor doesn't exist)\r
- * rather than passing the size back to the caller through a parameter and returning a boolean\r
- *\r
- *\r
- * \section Sec_ChangeLog153 Version 1.5.3 - Released 2nd October, 2008\r
- *\r
- * - Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately\r
- * - Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS)\r
- * - Renamed bootloader directories to remove spaces, which were causing build problems on several OSes\r
- * - Removed serial number strings from all but the MassStore demo where it is required - users were not\r
- * modifying the code to either omit the descriptor or use a unique serial per device causing problems\r
- * when multiple units of the same device were plugged in at the same time\r
- * - AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host\r
- * - Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo)\r
- * - Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board\r
- * driver creation easier\r
- * - Extended MassStorage demo to support multiple LUNs, 2 by default\r
- * - Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63\r
- * - Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled\r
- * - Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly\r
- * - Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values\r
- * - Added DualCDC demo to demonstrate the use of Interface Association Descriptors\r
- * - Added pipe NAK detection and clearing API\r
- * - Added pipe status change (NAK, STALL, etc.) interrupt API\r
- * - Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row\r
- * - Host demos configuration descriptor routines now return a unique error code when the returned data does\r
- * not have a valid configuration descriptor header\r
- * - Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions\r
- * - Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token\r
- * - All demos now pass the USB.org automated Chapter 9 device compliance tests\r
- * - All HID demos now pass the USB.org automated HID compliance tests\r
- * - Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems\r
- * - Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks\r
- * - Mass Storage demo dataflash management routines changed to use the endpoint stream functions \r
- * - Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file\r
- * - Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes\r
- * are reflected in the hardware (change was previously lost)\r
- *\r
- *\r
- * \section Sec_ChangeLog152 Version 1.5.2 - Released 31st July, 2008\r
- *\r
- * - Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types)\r
- * - Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS\r
- * implementations (where the notification endpoint is ignored in favour of polling the control endpoint)\r
- * - Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token\r
- * - Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo\r
- * - Fixed DFU bootloader exit causing programming software to complain about failed writes\r
- * - Fixed DFU bootloader EEPROM programming mode wiping first flash page\r
- * - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process)\r
- * - Added support for the ATMEGA16U4 AVR microcontroller\r
- * - Library licence changed from LGPLv3 to MIT license\r
- *\r
- *\r
- * \section Sec_ChangeLog151 Version 1.5.1 - Released 31st July, 2008\r
- *\r
- * - Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event\r
- * rather than the USB_DeviceAttached event\r
- * - HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove\r
- * any referenced but not created usages\r
- * - Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(),\r
- * USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline)\r
- * - Fixed USBtoSerial demo not sending data, only receiving\r
- * - Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems\r
- * - ConfigDescriptor functions made normal, instead of static inline\r
- * - Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases\r
- * - Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs\r
- * - Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic\r
- * approach was buggy and caused problems\r
- * - Bootloaders now compile with -fno-inline-small-functions option to reduce code size\r
- * - Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases\r
- * to be in line with the specification (isochronous endpoints MUST be double banked)\r
- * - Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN\r
- * - Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure\r
- * - Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID\r
- * devices) to prevent problems on hosts expecting the boot protocol functions to be supported\r
- * - Added read/write control stream functions to Endpoint.h\r
- * - Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly\r
- * - Added RNDISEthernet demo application\r
- *\r
- *\r
- * \section Sec_ChangeLog150 Version 1.5.0 - Released 10 June, 2008\r
- *\r
- * - Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages\r
- * - Added CDC Host demo application\r
- * - Added KeyboardFullInt demo application\r
- * - Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction\r
- * size bits not required for the routines (improves compatibility with devices)\r
- * - Fixed AudioInput demo - now correctly sends sampled audio to the host PC\r
- * - Fixed AudioOutput demo once more -- apparently Windows requires endpoint packets to be >=192 bytes\r
- * - Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes\r
- * - Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser\r
- * - Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder\r
- * - Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler\r
- * - Added Still Image Host demo application\r
- * - The USB device task now restores the previously selected endpoint, allowing control requests to be transparently\r
- * handled via interrupts while other endpoints are serviced through polling\r
- * - Fixed device signature being sent in reverse order in the CDC bootloader\r
- * - Host demos now have a separate ConfigDescriptor.c/.h file for configuration descriptor processing\r
- * - HostWithParser demos now have a separate HIDReport.c/.h file for HID report processing and dumping\r
- * - Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value\r
- * - CDC demos now send empty packets after sending a full one to prevent buffering issues on the host\r
- * - Updated demo descriptors to use VID/PID values donated by Atmel\r
- * - Added DoxyGen documentation to the source files\r
- * - Fixed Serial_IsCharRecieved() definition, was previously reversed\r
- * - Removed separate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead\r
- * - Removed unused Device Qualifier descriptor structure\r
- * - Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged\r
- * - Fixed MassStorageHost demo reading in the block data in reverse\r
- * - Removed outdated typedefs in StdRequestType.h, superseded by the macro masks\r
- * - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products\r
- * - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration\r
- * - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete\r
- * - USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value\r
- * - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()\r
- * and USB_Host_IsBusSuspended()\r
- * - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now\r
- * Pipe_SetInterruptPeriod() to use the correct terminology\r
- * - UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC\r
- * Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays\r
- * of ASCII characters\r
- * - Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR\r
- * model was given as the bank size\r
- * - HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array\r
- * - Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors\r
- * - Cleaned up GetDescriptor device chapter 9 handler function\r
- * - Added GET_REPORT class specific request to HID demos to make them complaint to the HID class\r
- * - Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed\r
- * - Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons\r
- * - All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.)\r
- * - Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names\r
- *\r
- *\r
- * \section Sec_ChangeLog141 Version 1.4.1 - Released 5 May, 2008\r
- *\r
- * - Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo\r
- * - Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly\r
- * - Corrected version number in Version.h\r
- *\r
- *\r
- * \section Sec_ChangeLog140 Version 1.4.0 - Released 5 May, 2008\r
- *\r
- * - Added HID Report Parser API to the library\r
- * - Added Mouse and Keyboard host demo applications, using the new HID report parser engine\r
- * - Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device\r
- * - Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos\r
- * - Added MIDI device demo application to the library\r
- * - Fixed problem preventing USB devices from being resumed from a suspended state\r
- * - Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol\r
- * - Added header to each demo application indicating the mode, class, subclass, standards used and supported speed\r
- * - Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or\r
- * PIPE_PIPENUM_MASK - this should be manually added to code which requires it\r
- * - Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time\r
- * - Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor()\r
- * to USB_Host_GetNextDescriptor()\r
- * - Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines\r
- * - Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file\r
- * - Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the\r
- * new comparator API\r
- * - Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct\r
- * big-endian for SCSI devices\r
- * - Fixed macro/function naming consistency; USB_HOST is now USB_Host, USB_DEV is now USB_Device\r
- * - Added better error reporting to host demos\r
- * - Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls\r
- *\r
- *\r
- * \section Sec_ChangeLog132 Version 1.3.2 - Released April 1st, 2008\r
- *\r
- * - Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes\r
- * are reflected in the hardware\r
- * - Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the \r
- * GetLineCoding request had an incorrect RequestType mask preventing it from being processed\r
- * - Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full\r
- * - Device control endpoint size is now determined from the device's descriptors rather than being fixed\r
- * - Separated out SPI code into new SPI driver in AT90USBXXX driver directory\r
- * - Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID\r
- * - Added support for the RZUSBSTICK board\r
- * - Bicolour driver removed in favour of generic LEDs driver\r
- * - Added support for the ATMEGA32U4 AVR\r
- * - Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL\r
- *\r
- *\r
- * \section Sec_ChangeLog131 Version 1.3.1 - Released March 19th 2008\r
- *\r
- * - Fixed USB to Serial demo - class value in the descriptors was incorrect\r
- * - Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low\r
- * speed mode devices to enumerate properly\r
- * - USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work\r
- * on USB AVRs with limited USB FIFO RAM\r
- * - Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited\r
- * USB device controller AVRs (AT90USB162, AT90USB82) to function correctly\r
- * - Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output\r
- * - Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile\r
- * - Optimized Mass Storage demo for a little extra transfer speed\r
- * - Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock\r
- * - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions\r
- * (including Big and Little Endian variants)\r
- * - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file\r
- * - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch)\r
- * - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7)\r
- * - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the\r
- * directives in the datasheet\r
- * - Fixed PLL prescaler defines for all AVR models and frequencies\r
- * - Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions\r
- * - Added interrupt driven keyboard and mouse device demos\r
- * - Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code\r
- * size savings\r
- * - Added missing Pipe_GetCurrentPipe() macro to Pipe.h\r
- *\r
- *\r
- * \section Sec_ChangeLog130 Version 1.3.0 - Released March 7th 2008\r
- *\r
- * - Unnecessary control endpoint config removed from device mode\r
- * - Fixed device standard request interpreter accidentally processing some class-specific requests\r
- * - Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library\r
- * to use descriptors stored in RAM or EEPROM rather than flash memory\r
- * - All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader\r
- * - USB_DEV_OPT_LOWSPEED option now works correctly\r
- * - Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS\r
- * compile time define\r
- * - USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or\r
- * if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options\r
- * - USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS\r
- * - Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the\r
- * compiler can throw away the result more efficiently\r
- * - Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be\r
- * controlled by the new Scheduler_SetGroupTaskMode() routine\r
- * - Added support for AT90USB162 and AT90USB82 AVR models\r
- * - Added support for the STK525 and STK526 boards\r
- * - Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and\r
- * placing board drivers in {Application Directory}/Board/\r
- * - PLL is now stopped and USB clock is frozen when detached from host in device mode, to save power\r
- * - Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY\r
- * - Fixed USB_DEV_IsUSBSuspended() - now checks the correct register\r
- * - Fixed data transfers to devices when in host mode\r
- * - Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to\r
- * USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with\r
- * the real high speed mode, which is unavailable on the USB AVRs)\r
- *\r
- *\r
- * \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008\r
- *\r
- * - Added USB_DeviceEnumerationComplete event for host mode\r
- * - Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and\r
- * stopped before the scheduler has been started (via Scheduler_Start)\r
- * - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management\r
- * task to be stopped when the USB is not connected to a host or device\r
- * - All demos updated to stop the USB task when not in use via the appropriate USB events\r
- * - Mass Storage Host demo application updated to function correctly with all USB flash disks\r
- * - Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached\r
- * device, and prints the first block as hexadecimal numbers rather than ASCII characters\r
- * - Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags\r
- * - Shifted error handling code in the host enum state machine to a single block, to reduce code complexity\r
- * - Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing\r
- * clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices\r
- * - Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro\r
- *\r
- *\r
- * \section Sec_ChangeLog130 Version 1.1.0 - Released January 25th 2008\r
- *\r
- * - Fixed DCONNI interrupt being enabled accidentally after a USB reset\r
- * - Fixed DDISCI interrupt not being disabled when a device is not connected\r
- * - Added workaround for powerless pullup devices causing false disconnect interrupts\r
- * - Added USB_DeviceEnumerationFailed event for Host mode\r
- * - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer\r
- * pointer is passed\r
- * - Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables\r
- * dependant on size of memory parameters passed in via the user project's makefile\r
- * - Fixed incorrect device reset routine being called in USBTask\r
- * - Devices which do not connect within the standard 300mS are now supported\r
- * - Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being\r
- * started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects\r
- * - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the\r
- * need to have a task ID list\r
- * - ID transistion interrupt now raises the appropriate device/host disconnect event if device attached\r
- * - Fixed double VBUS change (and VBUS -) event when detatching in device mode\r
- * - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile\r
- * - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and \r
- * Endpoint_IsConfigured() after calling the config functions to determine success\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_TokenSummary Summary of Compile Tokens\r
- *\r
- * The following lists all the possible tokens which can be defined in a project makefile, and passed to the\r
- * compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behaviour,\r
- * or remove features unused by a given application in order to save flash space.\r
- *\r
- *\r
- * \section Sec_SummaryNonUSBTokens Non USB Related Tokens\r
- * This section describes compile tokens which affect non-USB sections of the LUFA library.\r
- *\r
- * <b>DISABLE_TERMINAL_CODES</b> - ( \ref Group_Terminal ) \n\r
- * If an application contains ANSI terminal control codes listed in TerminalCodes.h, it might be desired to remove them\r
- * at compile time for use with a terminal which is non-ANSI control code aware, without modifying the source code. If\r
- * this token is defined, all ANSI control codes in the application code from the TerminalCodes.h header are removed from\r
- * the source code at compile time.\r
- *\r
- * \section Sec_SummaryUSBClassTokens USB Class Driver Related Tokens\r
- * This section describes compile tokens which affect USB class-specific drivers in the LUFA library.\r
- *\r
- * <b>HID_ENABLE_FEATURE_PROCESSING</b> - ( \ref Group_HIDParser ) \n\r
- * Define this token to enable the processing of FEATURE HID report items, if any, into the processed HID structure.\r
- * By default FEATURE items (which are device features settable by the host but not directly visible by the user) are\r
- * skipped when processing a device HID report.\r
- *\r
- * <b>HID_INCLUDE_CONSTANT_DATA_ITEMS</b> - ( \ref Group_HIDParser ) \n\r
- * By default, constant data items (usually used as spacers to align separate report items to a byte or word boundary)\r
- * in the HID report are skipped during report processing. It is highly unusual for an application to make any use of\r
- * constant data items (as they do not carry any useful data and only occupy limited RAM) however if required defining\r
- * this switch will put constant data items into the processed HID report structure.\r
- *\r
- * <b>HID_STATETABLE_STACK_DEPTH</b> - ( \ref Group_HIDParser ) \n\r
- * HID reports may contain PUSH and POP elements, to store and retrieve the current HID state table onto a stack. This\r
- * allows for reports to save the state table before modifying it slightly for a data item, and then restore the previous\r
- * 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\r
- * table stack. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
- *\r
- * <b>HID_USAGE_STACK_DEPTH</b> - ( \ref Group_HIDParser ) \n\r
- * HID reports generally contain many USAGE elements, which are assigned to INPUT, OUTPUT and FEATURE items in succession\r
- * when multiple items are defined at once (via REPORT COUNT elements). This allows for several items to be defined with\r
- * 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\r
- * usage stack, indicating the maximum number of USAGE items which can be stored temporarily until the next INPUT, OUTPUT\r
- * and FEATURE item. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
- *\r
- * <b>HID_MAX_COLLECTIONS</b> - ( \ref Group_HIDParser ) \n\r
- * HID reports generally contain several COLLECTION elements, used to group related data items together. Collection information\r
- * is stored separately in the processed usage structure (and referred to by the data elements in the structure) to save space.\r
- * 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\r
- * parser into the resultant processed report structure. If not defined, this defaults to the value indicated in the HID.h file\r
- * documentation.\r
- *\r
- * <b>HID_MAX_REPORTITEMS</b> - ( \ref Group_HIDParser ) \n\r
- * 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\r
- * device. Each item has associated usages, bit offsets in the item reports and other associated data indicating the manner in which\r
- * 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\r
- * data elements which can be stored in the processed HID report structure, including INPUT, OUTPUT and (if enabled) FEATURE items.\r
- * 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\r
- * processed HID report table. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
- *\r
- *\r
- * \section Sec_SummaryUSBTokens USB Driver Related Tokens\r
- * This section describes compile tokens which affect USB driver stack as a whole in the LUFA library.\r
- *\r
- * <b>USE_RAM_DESCRIPTORS</b> - ( \ref Group_Descriptors ) \n\r
- * Define this token to indicate to the USB driver that device descriptors are stored in RAM, rather than the default of\r
- * the AVR's flash. RAM descriptors may be desirable in applications where speed or minimizing flash usage is more important\r
- * than RAM usage, or applications where the descriptors need to be modified at runtime.\r
- *\r
- * <b>USE_EEPROM_DESCRIPTORS</b> - ( \ref Group_Descriptors ) \n\r
- * Similar to USE_RAM_DESCRIPTORS, but descriptors are stored in the AVR's EEPROM memory rather than RAM.\r
- *\r
- * <b>USE_NONSTANDARD_DESCRIPTOR_NAMES</b> - ( \ref Group_Descriptors ) \n\r
- * The USB 2.0 standard gives some rather obscure names for the elements in the standard descriptor types (device, configuration,\r
- * string, endpoint, etc.). By default the LUFA library uses these names in its predefined descriptor structure types for\r
- * compatibility. If this token is defined, the structure element names are switched to the LUFA-specific but more descriptive\r
- * names documented in the StdDescriptors.h source file.\r
- *\r
- * <b>FIXED_CONTROL_ENDPOINT_SIZE</b> - ( \ref Group_EndpointManagement ) \n\r
- * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor.\r
- * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if\r
- * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be\r
- * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled\r
- * binary.\r
- *\r
- * <b>USE_SINGLE_DEVICE_CONFIGURATION</b> - ( \ref Group_Device ) \n\r
- * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces\r
- * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in\r
- * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, many USB device projects use only a single configuration.\r
- * Defining this token enables single-configuration mode, reducing the compiled size of the binary at the expense of flexibility.\r
- *\r
- * <b>CONTROL_ONLY_DEVICE</b> \n\r
- * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication\r
- * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device\r
- * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided.\r
- *\r
- * <b>NO_STREAM_CALLBACKS</b> - ( \ref Group_EndpointPacketManagement , \ref Group_PipePacketManagement )\n\r
- * Both the endpoint and the pipe driver code contains stream functions, allowing for arrays of data to be sent to or from the\r
- * host easily via a single function call (rather than complex routines worrying about sending full packets, waiting for the endpoint/\r
- * pipe to become ready, etc.). By default, these stream functions require a callback function which is executed after each byte processed,\r
- * allowing for early-aborts of stream transfers by the application. If callbacks are not required in an application, they can be removed\r
- * by defining this token, reducing the compiled binary size. When removed, the stream functions no longer accept a callback function as\r
- * a parameter.\r
- *\r
- * <b>USB_HOST_TIMEOUT_MS</b> - ( \ref Group_Host ) \n\r
- * When a control transfer is initiated in host mode to an attached device, a timeout is used to abort the transfer if the attached\r
- * 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\r
- * control transfers, specified in milliseconds. If not defined, the default value specified in Host.h is used instead.\r
- *\r
- * <b>HOST_DEVICE_SETTLE_DELAY_MS</b> - ( \ref Group_Host ) \n\r
- * Some devices require a delay of up to 5 seconds after they are connected to VBUS before the enumeration process can be started, or\r
- * they will fail to enumerate correctly. By placing a delay before the enumeration process, it can be ensured that the bus has settled\r
- * back to a known idle state before communications occur with the device. This token may be defined to a non-zero 16-bit value to set\r
- * the device settle period, specified in milliseconds. If not defined, the default value specified in Host.h is used instead.\r
- *\r
- * <b>USE_STATIC_OPTIONS</b> - ( \ref Group_USBManagement ) \n\r
- * By default, the USB_Init() function accepts dynamic options at runtime to alter the library behaviour, including whether the USB pad\r
- * voltage regulator is enabled, and the device speed when in device mode. By defining this token to a mask comprised of the USB options\r
- * mask defines usually passed as the Options parameter to USB_Init(), the resulting compiled binary can be decreased in size by removing\r
- * the dynamic options code, and replacing it with the statically set options. When defined, the USB_Init() function no longer accepts an\r
- * Options parameter.\r
- *\r
- * <b>USB_DEVICE_ONLY</b> - ( \ref Group_USBManagement ) \n\r
- * For the USB AVR models supporting both device and host USB modes, the USB_Init() function contains a Mode parameter which specifies the\r
- * 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\r
- * save space. When defined, the USB_Init() function no longer accepts a Mode parameter. This define is irrelevant on smaller USB AVRs which\r
- * do not support host mode.\r
- *\r
- * <b>USB_HOST_ONLY</b> - ( \ref Group_USBManagement ) \n\r
- * 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.\r
- *\r
- * <b>USB_STREAM_TIMEOUT_MS</b> - ( \ref Group_USBManagement ) \n\r
- * When endpoint and/or pipe stream functions are used, by default there is a timeout between each transfer which the connected device or host\r
- * 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\r
- * period for stream transfers, specified in milliseconds. If not defined, the default value specified in LowLevel.h is used instead.\r
- *\r
- * <b>NO_LIMITED_CONTROLLER_CONNECT</b> - ( \ref Group_Events ) \n\r
- * 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\r
- * VBUS events, the library attempts to determine the connection state via the bus suspension and wake up events instead. This however may be\r
- * slightly inaccurate due to the possibility of the host suspending the bus while the device is still connected. If accurate connection status is\r
- * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the USB_IsConnected global\r
- * can be accurately set and the USB_Connect and USB_Disconnect events manually raised by the RAISE_EVENT macro. When defined, this token disables\r
- * the library's auto-detection of the connection state by the aforementioned suspension and wake up events.\r
- *\r
- * <b>INTERRUPT_CONTROL_ENDPOINT</b> - ( \ref Group_USBManagement ) \n\r
- * Some applications prefer to not call the USB_USBTask() management task reguarly while in device mode, as it can complicate code significantly.\r
- * 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\r
- * endpoint entirely via interrupts asynchronously to the user application.\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_DevelopingWithLUFA Developing With LUFA\r
- *\r
- * \subpage Page_BuildLibrary\r
- * \subpage Page_TokenSummary\r
- * \subpage Page_GettingStarted\r
- * \subpage Page_Migration\r
- * \subpage Page_VIDPID\r
- * \subpage Page_WritingBoardDrivers\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_DevelopingWithLUFA Developing With LUFA\r
- *\r
- * This section of the manual contains information on LUFA development, such as Getting Started information,\r
- * information on compile-time tuning of the library and other developer-related sections.\r
- *\r
- * <b>Subsections:</b>\r
- * - \subpage Page_GettingStarted Getting Started\r
- * - \subpage Page_TokenSummary Summary of Compile Time Tokens\r
- * - \subpage Page_Migration Migrating from an Older LUFA Version\r
- * - \subpage Page_VIDPID Allocated USB VID and PID Values\r
- * - \subpage Page_BuildLibrary Building as a Linkable Library\r
- * - \subpage Page_WritingBoardDrivers How to Write Custom Board Drivers\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_DeviceSupport Device and Hardware Support\r
- *\r
- * Currently supported AVR models:\r
- * - AT90USB1286 (USB Device Only)\r
- * - AT90USB1287 (USB Host and Device)\r
- * - AT90USB646 (USB Device Only)\r
- * - AT90USB647 (USB Host and Device)\r
- * - AT90USB82 (USB Device Only)\r
- * - AT90USB162 (USB Device Only)\r
- * - ATMEGA16U4 (USB Device Only)\r
- * - ATMEGA32U4 (USB Device Only)\r
- * - ATMEGA32U6 (USB Device Only)\r
- *\r
- * Currently supported Atmel boards:\r
- * - AT90USBKEY\r
- * - STK525\r
- * - STK526\r
- * - RZUSBSTICK\r
- * - ATAVRUSBRF01\r
- * - Custom User Boards\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \dir LUFA/Common\r
- * \brief Common library header files.\r
- * \r
- * This folder contains header files which are common to all parts of the LUFA library. They may be used freely in\r
- * user applications.\r
- *\r
- * \dir LUFA/Drivers\r
- * \brief Library hardware and software drivers.\r
- * \r
- * This folder contains all the library hardware and software drivers for each supported board and USB AVR\r
- * microcontroller model.\r
- * \r
- * \dir LUFA/Drivers/Misc\r
- * \brief Miscellaneous driver files.\r
- * \r
- * This folder contains drivers for aspects other than the USB interface, board hardware or AVR peripherals.\r
- * \r
- * \dir LUFA/Drivers/Peripheral\r
- * \brief USB AVR peripheral driver files.\r
- * \r
- * This folder contains drivers for several of the AVR internal peripherals such as the USART, compatible with\r
- * all USB AVR models.\r
- *\r
- * \dir LUFA/Drivers/Peripheral/AT90USBXXX67\r
- * \brief AT90USBXXX6, AT90USBXXX7 and ATMEGAXXU4 AVR model peripheral driver files. Its original name is due to legacy\r
- * reasons.\r
- * \r
- * This folder contains drivers for several of the AVR internal peripherals such as the USART, compatible only with\r
- * the AT90USBXXX6, AT90USBXXX7 and ATMEGAXXU4 USB AVR models, such as the AT90USB1287. Its contents should <b>not</b> be\r
- * included by the user application - the dispatch header file located in the parent AT90USBXXX directory should be used\r
- * instead.\r
- *\r
- * \dir LUFA/Drivers/USB\r
- * \brief USB controller peripheral driver files.\r
- * \r
- * This folder contains the main header files required to implement the USB interface in the USB supporting AVR models.\r
- * The header files contained directly in this folder should be included in the user application in order to gain USB\r
- * functionality, and the appropriate C source files in the LowLevel and HighLevel driver folders added to the compile\r
- * and link stages.\r
- *\r
- * \dir LUFA/Drivers/USB/LowLevel\r
- * \brief Low level USB driver files.\r
- * \r
- * This folder contains low level USB driver source files required to implement USB functionality on the USB AVR microcontrollers.\r
- *\r
- * \dir LUFA/Drivers/USB/HighLevel\r
- * \brief High level USB driver files.\r
- * \r
- * This folder contains high level USB driver source files required to implement USB functionality on the USB AVR microcontrollers.\r
- *\r
- * \dir LUFA/Drivers/USB/Class\r
- * \brief USB Class helper driver files.\r
- * \r
- * This folder contains drivers for implementing functionality of standardized USB classes. These are not used directly by the library,\r
- * but provide a standard and library-maintained way of implementing functionality from some of the defined USB classes without extensive\r
- * development effort. Is is recommended that these drivers be used where possible to reduce maintenance of user applications.\r
- *\r
- * \dir LUFA/Drivers/USB/Class/Device\r
- * \brief USB Device Class helper driver files.\r
- * \r
- * Device mode drivers for the standard USB classes.\r
- *\r
- * \dir LUFA/Drivers/USB/Class/Host\r
- * \brief USB Host Class helper driver files.\r
- * \r
- * Host mode drivers for the standard USB classes.\r
- *\r
- * \dir LUFA/Drivers/Board\r
- * \brief Board hardware driver files.\r
- * \r
- * This folder contains drivers for interfacing with the physical hardware on supported commercial boards, primarily from\r
- * the Atmel corporation. Header files in this folder should be included in user applications requiring the functionality of\r
- * hardware placed on supported boards.\r
- *\r
- * \dir LUFA/Drivers/Board/USBKEY\r
- * \brief USBKEY board hardware driver files.\r
- * \r
- * This folder contains drivers for hardware on the Atmel USBKEY demonstration board. The header files in this folder should\r
- * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
- * should be included instead.\r
- *\r
- * \dir LUFA/Drivers/Board/STK526\r
- * \brief STK526 board hardware driver files.\r
- * \r
- * This folder contains drivers for hardware on the Atmel STK526 development board. The header files in this folder should\r
- * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
- * should be included instead.\r
- *\r
- * \dir LUFA/Drivers/Board/STK525\r
- * \brief STK525 board hardware driver files.\r
- * \r
- * This folder contains drivers for hardware on the Atmel STK525 development board. The header files in this folder should\r
- * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
- * should be included instead.\r
- *\r
- * \dir LUFA/Drivers/Board/RZUSBSTICK\r
- * \brief RZUSBSTICK board hardware driver files.\r
- * \r
- * This folder contains drivers for hardware on the Atmel RZUSBSTICK board, as used in the Atmel "Raven" wireless kits. The header\r
- * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in\r
- * the parent Board directory should be included instead.\r
- *\r
- * \dir LUFA/Drivers/Board/ATAVRUSBRF01\r
- * \brief ATAVRUSBRF01 board hardware driver files.\r
- * \r
- * This folder contains drivers for hardware on the Atmel ATAVRUSBRF01 board, as used in several Atmel wireless demo kits. The header\r
- * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in\r
- * the parent Board directory should be included instead.\r
- *\r
- * \dir LUFA/DriverStubs\r
- * \brief Driver stub header files for custom boards, to allow the LUFA board drivers to operate.\r
- * \r
- * This contains stub files for the LUFA board drivers. If the LUFA board drivers are used with board hardware other than those\r
- * directly supported by the library, the BOARD parameter of the application's makefile can be set to "USER", and these stub files\r
- * copied to the "/Board/" directory of the application's folder. When fleshed out with working driver code for the custom board,\r
- * the corresponding LUFA board APIs will work correctly with the non-standard board hardware.\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_Donating Donating to Support This Project\r
- *\r
- * \image html Author.jpg "Dean Camera, LUFA Developer"\r
- *\r
- * I am a 20 year old University student studying for a double degree in Computer Science and Electronics Engineering.\r
- * The development and support of this library requires much effort from myself, as I am the sole developer, maintainer\r
- * and supporter. Please consider donating a small amount to support this and my future Open Source projects - All\r
- * donations are <i>greatly</i> appreciated.\r
- *\r
- * <b>Donate to this project at http://www.fourwalledcubicle.com </b> via PayPal - Thanks in Advance!\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
- /** \page Page_FutureChanges Future Changes\r
- *\r
- * Below is a list of future changes which are proposed for the LUFA library, but not yet started/complete.\r
- * This gives an unordered list of future changes which will be available in future releases of the library.\r
- * If you have an item to add to this list, please contact the library author via email, the LUFA mailing list,\r
- * or post your suggestion as an enhancement request to the project bug tracker.\r
- *\r
- * - Make new host class drivers\r
- * - Document new host class drivers\r
- * - Convert Host mode demos to class drivers\r
- * - Add standardized descriptor names to class driver structures, controlled by USE_NONSTANDARD_DESCRIPTOR_NAMES\r
- * - Add multiple-report HID demo to the library\r
- * - Add dual role Mouse Host/Keyboard Device demo to the library\r
- * - Port LUFA to the AVR32 UC3B series microcontrollers\r
- * - Port LUFA to the Atmel ARM7 series microcontrollers\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_GettingStarted Getting Started\r
- *\r
- * Out of the box, LUFA contains a large number of pre-made class demos for you to test, experiment with and\r
- * ultimately build upon for your own projects. All the demos come pre-configured to build and run correctly\r
- * on the AT90USB1287 AVR microcontroller, mounted on the Atmel USBKEY board and running at an 8MHz master clock.\r
- * This is due to two reasons; one, it is the hardware the author possesses, and two, it is the most popular Atmel\r
- * USB demonstration board to date.\r
- *\r
- *\r
- * \section Sec_Prerequisites Prerequisites\r
- * Before you can compile any of the LUFA library code or demos, you will need a recent distribution of avr-libc (1.6.2+)\r
- * and the AVR-GCC (4.2+) compiler. For Windows users, the best way to obtain these is the WinAVR project\r
- * (http://winavr.sourceforge.net) as this provides a single-file setup for everything required to compile your\r
- * own AVR projects.\r
- *\r
- *\r
- * \section Sec_Configuring Configuring the Demos, Bootloaders and Projects\r
- * If the target AVR model, clock speed, board or other settings are different to the current settings, they must be changed\r
- * and the project recompiled from the source code before being programmed into the AVR microcontroller. Most project\r
- * configuration options are located in the "makefile" build script inside each LUFA application's folder, however some\r
- * demo or application-specific configuration settings (such as the output format in the AudioOut demo) are located in the\r
- * main .c source file of the project. See each project's individual documentation for application-specific configuration\r
- * values.\r
- *\r
- * Each project "makefile" contains all the script and configuration data required to compile each project. When opened with\r
- * any regular basic text editor such as Notepad or WordPad (ensure that the save format is a pure ASCII text format) the\r
- * build configuration settings may be altered.\r
- *\r
- * Inside each makefile, a number of configuration variables are located, with the format "<VARIABLE NAME> = <VALUE>". For\r
- * each application, the important variables which should be altered are:\r
- *\r
- * - <b>MCU</b>, the target AVR processor.\r
- * - <b>BOARD</b>, the target board hardware\r
- * - <b>F_CLOCK</b>, the target raw master clock frequency, before any prescaling is performed\r
- * - <b>F_CPU</b>, the target AVR CPU master clock frequency, after any prescaling\r
- * - <b>CDEFS</b>, the C preprocessor defines which configure the source code\r
- *\r
- * These values should be changed to reflect the build hardware.\r
- *\r
- * \subsection SSec_MCU The MCU Parameter\r
- * This parameter indicates the target AVR model for the compiled application. This should be set to the model of the target AVR\r
- * (such as the AT90USB1287, or the ATMEGA32U4), in all lower-case (e.g. "at90usb1287"). Note that not all demos support all the\r
- * USB AVR models, as they may make use of peripherals or modes only present in some devices.\r
- *\r
- * For supported library AVR models, see main documentation page.\r
- *\r
- * \subsection SSec_BOARD The BOARD Parameter\r
- * This parameter indicates the target AVR board hardware for the compiled application. Some LUFA library drivers are board-specific,\r
- * 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\r
- * on the main library page, change this parameter to the board name in all UPPER-case.\r
- *\r
- * 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\r
- * "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\r
- * board-specific hardware drivers inside the LUFA library, then the appropriate stub drives files should be copied from the /BoardStubs/\r
- * directory into a /Board/ folder inside the application directory, and the stub driver completed with the appropriate code to drive the\r
- * custom board's hardware.\r
- *\r
- * \subsection SSec_F_CLOCK The F_CLOCK Parameter\r
- * This parameter indicates the target AVR's input clock frequency, in Hz. This is the actual clock input, before any prescaling is performed. In the\r
- * USB AVR architecture, the input clock before any prescaling is fed directly to the PLL subsystem, and thus the PLL is derived directly from the\r
- * clock input. The PLL then feeds the USB and other sections of the AVR with the correct upscaled frequencies required for those sections to function.\r
- *\r
- * <b>Note that this value does not actually *alter* the AVR's input clock frequency</b>, it is just a way to indicate to the library the clock frequency\r
- * of the AVR as set by the AVR's fuses. If this value does not reflect the actual running frequency of the AVR, incorrect operation of one of more\r
- * library components will occur.\r
- *\r
- * \subsection SSec_F_CPU The F_CPU Parameter\r
- * This parameter indicates the target AVR's master CPU clock frequency, in Hz.\r
- *\r
- * <b>Note that this value does not actually *alter* the AVR's CPU clock frequency</b>, it is just a way to indicate to the library the clock frequency\r
- * of the AVR core as set by the AVR's fuses. If this value does not reflect the actual running frequency of the AVR, incorrect operation of one of more\r
- * library components will occur.\r
- *\r
- * \subsection SSec_CDEFS The CDEFS Parameter\r
- * Most applications will actually have multiple CDEF lines, which are concatenated together with the "+=" operator. This ensures that large\r
- * numbers of configuration options remain readable by splitting up groups of options into separate lines.\r
- *\r
- * Normally, these options do not need to be altered to allow an application to compile and run correctly on a different board or AVR to the\r
- * current configuration - if the options are incorrect, then the demo is most likely incompatible with the chosen USB AVR model and cannot be\r
- * 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\r
- * interface speed (Low or Full speed) and other LUFA configuration options can be set here - refer to the library documentation for details on the\r
- * configuration parameters.\r
- *\r
- *\r
- * \section Sec_Compiling Compiling a LUFA Application\r
- * Compiling the LUFA demos, applications and/or bootloaders is very simple. LUFA comes with makefile scripts for\r
- * each individual demo, bootloader and project folder, as well as scripts in the /Demos/, /Bootloaders/, /Projects/\r
- * and the LUFA root directory. This means that compilation can be started from any of the above directories, with\r
- * a build started from an upper directory in the directory structure executing build of all child directories under it.\r
- * This means that while a build inside a particular demo directory will build only that particular demo, a build stated\r
- * from the /Demos/ directory will build all LUFA demo projects sequentially.\r
- *\r
- * \subsection SSec_CommandLine Via the Command Line\r
- * To build a project from the source via the command line, the command <b>"make all"</b> should be executed from the command line in the directory\r
- * of interest. To remove compiled files (including the binary output, all intermediately files and all diagnostic output\r
- * files), execute <b>"make clean"</b>. Once a "make all" has been run and no errors were encountered, the resulting binary will\r
- * be located in the generated ".HEX" file. If your project makes use of pre-initialized EEPROM variables, the generated ".EEP"\r
- * file will contain the project's EEPROM data.\r
- *\r
- * \subsection SSec_AVRStudio Via AVRStudio\r
- * Each demo, project and bootloader contains an AVRStudio project (.aps) which can be used to build each project. Once opened\r
- * in AVRStudio, the project can be built and cleaned using the GUI buttons or menus. Note that the AVRStudio project files make\r
- * use of the external project makefile, thus the procedure for configuring a demo remains the same regardless of the build environment.\r
- *\r
- *\r
- * \section Sec_Programming Programming a USB AVR\r
- * Once you have built an application, you will need a way to program in the resulting ".HEX" file (and, if your\r
- * application uses EEPROM variables with initial values, also a ".EEP" file) into your USB AVR. Normally, the\r
- * reprogramming an AVR device must be performed using a special piece of programming hardware, through one of the\r
- * supported AVR programming protocols - ISP, HVSP, HVPP, JTAG or dW. This can be done through a custom programmer,\r
- * a third party programmer, or an official Atmel AVR tool - for more information, see the Atmel.com website.\r
- *\r
- * Alternatively, you can use the bootloader. From the Atmel factory, each USB AVR comes preloaded with the Atmel\r
- * DFU (Device Firmware Update) class bootloader, a small piece of AVR firmware which allows the remainder of the\r
- * AVR to be programmed through a non-standard interface such as the serial USART port, SPI, or (in this case) USB.\r
- * Bootloaders have the advantage of not requiring any special hardware for programming, and cannot usually be erased\r
- * or broken without an external programming device. They have disadvantages however; they cannot change the fuses of\r
- * the AVR (special configuration settings that control the operation of the chip itself) and a small portion of the\r
- * AVR's FLASH program memory must be reserved to contain the bootloader firmware, and thus cannot be used by the\r
- * loaded application. Atmel's DFU bootloader is either 4KB (for the smaller USB AVRs) or 8KB (for the larger USB AVRs).\r
- *\r
- * If you wish to use the DFU bootloader to program in your application, refer to your DFU programmer's documentation.\r
- * Atmel provides a free utility called FLIP which is USB AVR compatible, and an open source (Linux compatible)\r
- * alternative exists called "dfu-programmer".\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** @defgroup Group_BoardDrivers Board Drivers\r
- *\r
- * Functions, macros, variables, enums and types related to the control of physical board hardware.\r
- */\r
-\r
-/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers\r
- *\r
- * Functions, macros, variables, enums and types related to the control of AVR subsystems.\r
- */\r
- \r
-/** @defgroup Group_MiscDrivers Miscellaneous Drivers\r
- *\r
- * Miscellaneous driver Functions, macros, variables, enums and types.\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_LUFAPoweredProjects User Projects Powered by LUFA\r
- *\r
- * LUFA is currently in use all around the world, in many applications both commercial and non-commercial. Below is a\r
- * list of known public LUFA powered projects, which all use the LUFA library in some way. Feel free to visit each project's\r
- * home page for more information on each project.\r
- *\r
- * 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\r
- * documentation.\r
- *\r
- *\r
- * - Benito #7, an AVR Programmer: http://www.dorkbotpdx.org/blog/feurig/benito_7_the_next_big_thing\r
- * - Stripe Snoop, a Magnetic Card reader: http://www.ossguy.com/ss_usb/\r
- * - USB10 AKA "The Ferret", a USB162 development board: http://www.soc-machines.com\r
- * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/\r
- * - Digital Survey Instruments Magnetometer and Pointer: http://www.digitalsurveyinstruments.com/\r
- * - ARPS Locator: http://la3t.hamradio.no/lab//?id=tracker_en\r
- * - Lightweight CC110x USB dongle for 868MHz Protocols: http://busware.de/tiki-index.php?page=CUL\r
- * - AVROpendous, an open design/source AT90USB162 development board: http://avropendous.org/\r
- * - USB Interface for Playstation Portable Devices: http://forums.ps2dev.org/viewtopic.php?t=11001\r
- * - USB to Serial Bridge, via SPI and I2C: http://www.tty1.net/userial/\r
- * - Teensy, another tiny AT90USB162 development board: http://www.pjrc.com/teensy/index.html\r
- * - SEGA Megadrive/Genesis Development Cartridge: http://www.spritesmind.net/_GenDev/forum/viewtopic.php?t=464\r
- * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig\r
- * - Opendous-JTAG, an open source JTAG device: http://code.google.com/p/opendous-jtag/\r
- * - Openkubus, an open source hardware-based authentication dongle: http://code.google.com/p/openkubus/\r
- */
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
- \r
-/**\r
- * \page Page_Resources Library Resources\r
- *\r
- * Project Homepage: http://www.fourwalledcubicle.com/LUFA.php \n\r
- * Development Blog: http://www.fourwalledcubicle.com/blog \n\r
- * Discussion Group: http://groups.google.com/group/myusb-support-list \n\r
- * SVN Access, Bug Reports and Feature Requests: http://code.google.com/p/lufa-lib/ \n\r
- * Author's Website: http://www.fourwalledcubicle.com \n\r
- *\r
- * WinAVR Website: http://winavr.sourceforge.net \n\r
- * avr-libc Website: http://www.nongnu.org/avr-libc/ \n\r
- *\r
- * USB-IF Website: http://www.usb.org \n\r
- */\r
-
\ No newline at end of file
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \page Page_Licence License\r
- *\r
- * The LUFA library is currently released under the MIT licence, included below.\r
- *\r
- * Commercial entities can opt out of the public disclosure clause in this license\r
- * for a one-time US$1500 payment. This provides a non-exclusive modified MIT licensed which\r
- * allows for the free use of the LUFA library, bootloaders and (where the sole copyright\r
- * is attributed to Dean Camera) demos without public disclosure within an organisation. Please\r
- * contact the author for more information.\r
- *\r
- * \verbatim\r
- * Permission to use, copy, modify, and distribute this software\r
- * and its documentation for any purpose and without fee is hereby\r
- * granted, provided that the above copyright notice appear in all\r
- * copies and that both that the copyright notice and this\r
- * permission notice and warranty disclaimer appear in supporting\r
- * documentation, and that the name of the author not be used in\r
- * advertising or publicity pertaining to distribution of the\r
- * software without specific, written prior permission.\r
- *\r
- * The author disclaim all warranties with regard to this\r
- * software, including all implied warranties of merchantability\r
- * and fitness. In no event shall the author be liable for any\r
- * special, indirect or consequential damages or any damages\r
- * whatsoever resulting from loss of use, data or profits, whether\r
- * in an action of contract, negligence or other tortious action,\r
- * arising out of or in connection with the use or performance of\r
- * this software.\r
- * \endverbatim\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/**\r
- * \mainpage General Information\r
- *\r
- * Lightweight USB Framework for AVRs Library, written by Dean Camera. \r
- *\r
- * Originally based on the AT90USBKEY from Atmel, it is an open-source USB library for the USB-enabled AVR\r
- * microcontrollers, released under the MIT license. It now supports a large number of USB AVR models and boards.\r
- *\r
- * The library is currently in a stable release, suitable for download and incorporation into user projects for\r
- * both host and device modes. For information about the project progression, check out my blog.\r
- *\r
- * LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the\r
- * library API more streamlined and robust. You can download AVR-GCC for free in a convenient windows package, \r
- * from the the WinAVR website.\r
- *\r
- * \section Sec_Demos Demos and Bootloaders\r
- * The LUFA library ships with several different host and device demos, located in the /Demos/ subdirectory.\r
- * If this directory is missing, please re-download the project from the project homepage.\r
- *\r
- * Also included with the library are three fully functional bootloaders, located in the /Bootloaders/ subdirectory.\r
- * The DFU class bootloader is compatible with Atmel's FLIP software or the open source dfu-programmer project, the\r
- * CDC class (AVR109 protocol) is compatible with such open source software as AVRDUDE and AVR-OSP, and the TeensyLoader\r
- * HID class bootloader is compatible with the software from PJRC (http://www.pjrc.com/teensy/index.html).\r
- *\r
- * <b>Subsections:</b>\r
- * - \subpage Page_Licence Project License\r
- * - \subpage Page_Donating Donating to Support this Project\r
- */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \page Page_AboutLUFA About LUFA\r
+ *\r
+ * This section of the manual contains information about the library as a whole, including its supported targets,\r
+ * past and planned changes, and links to other projects incorporating LUFA.\r
+ *\r
+ * <b>Subsections:</b>\r
+ * - \subpage Page_DeviceSupport Current Device and Hardware Support\r
+ * - \subpage Page_Resources LUFA and USB Related Resources\r
+ * - \subpage Page_ChangeLog Project Changelog\r
+ * - \subpage Page_FutureChanges Planned Changes to the Library\r
+ * - \subpage Page_LUFAPoweredProjects Other Projects Using LUFA\r
+ */\r
+
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_BuildLibrary Building as a Linkable Library\r
+ *\r
+ * The LUFA library can be built as a proper linkable library (with the extention .a) under AVR-GCC, so that\r
+ * the library does not need to be recompiled with each revision of a user project. Instructions for creating\r
+ * a library from a given source tree can be found in the AVR-GCC user manual included in the WinAVR install\r
+ * /Docs/ directory.\r
+ *\r
+ * However, building the library is <b>not recommended</b>, as the static (compile-time) options will be\r
+ * unable to be changed without a recompilation of the LUFA code. Therefore, if the library is to be built\r
+ * from the LUFA source, it should be made to be application-specific and compiled with the static options\r
+ * that are required for each project (which should be recorded along with the library).\r
+ *\r
+ * Normal library use has the library components compiled in at the same point as the application code, as\r
+ * demonstrated in the library demos and applications. This is the preferred method, as the library is recompiled\r
+ * each time to ensure that all static options for a particular application are applied.\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+ /** \page Page_ChangeLog Project Changelog\r
+ *\r
+ * \section Sec_ChangeLogXXXXXX Version XXXXXX\r
+ *\r
+ * - Removed psuedo-scheduler, dynamic memory block allocator from the library (no longer needed and not used respectively)\r
+ * - Added new class drivers and matching demos to the library for rapid application development\r
+ * - Added incomplete device and host mode demos for later enhancement\r
+ * - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed\r
+ * - Error status LEDs shown when device endpoint configuration fails to complete in all demos and projects\r
+ * - Low level API MIDI device demo no longer blocks if a note change event is sent while the endpoint is not ready\r
+ * - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived()\r
+ * to only unfreeze and check one data pipe at a time)\r
+ * - Internal per-device preprocessing conditions changed to per-device series rather than per controller group for finer-grain\r
+ * internal control\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog090605 Version 090605\r
+ *\r
+ * - Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data\r
+ * - Fixed documentation showing incorrect USB mode support on the supported AVRs list\r
+ * - Fixed RNDISEthernet not working under Linux due to Linux requiring an "optional" RNDIS request which was unhandled\r
+ * - Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman)\r
+ * - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues\r
+ * - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)\r
+ * - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token\r
+ * - Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC\r
+ * interface is skipped\r
+ * - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype\r
+ * inside the library that is able to hold their defined value to save space\r
+ * - Removed DESCRIPTOR_ADDRESS() macro as it was largely supurflous and only served to obfuscate code\r
+ * - Rewritten event system to remove all macros, to make user code clearer\r
+ * - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley)\r
+ * - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code\r
+ * - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code\r
+ * - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed\r
+ * - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)\r
+ * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the\r
+ * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs\r
+ * - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure\r
+ * - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog090510 Version 090510\r
+ *\r
+ * - Added new GenericHIDHost demo\r
+ * - Corrections to the KeyboardHost and MouseHost demos' pipe handling to freeze and unfreeze the data pipes at the point of use\r
+ * - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR\r
+ * - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile\r
+ * time options\r
+ * - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected\r
+ * - Added new PIMA_DATA_SIZE() define to the Still Image Host demo\r
+ * - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the\r
+ * extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus()\r
+ * to early-abort (thanks to Dmitry Maksimov)\r
+ * - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory,\r
+ * where they are more suited\r
+ * - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the\r
+ * code without having to be itself patched and recompiled first\r
+ * - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to\r
+ * outdated avr-libc versions.\r
+ * - Added support to the CDCHost demo for devices with multiple CDC interfaces which are not the correct ACM type preceding the desired\r
+ * ACM CDC interface\r
+ * - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen)\r
+ * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley)\r
+ * - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint\r
+ * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet,\r
+ * and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis)\r
+ * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type\r
+ * pipes can be used with the function\r
+ * - The USB Host management task now saves and restores the currently selected pipe before and after the task completes\r
+ * - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei Krainev)\r
+ * - Removed Endpoint_ClearCurrentBank() and Pipe_ClearCurrentBank() in favour of new Endpoint_ClearIN(), Endpoint_ClearOUT(),\r
+ * Pipe_ClearIN() and Pipe_ClearOUT() macros (done to allow for the detection of packets of zero length)\r
+ * - Renamed *_ReadWriteAllowed() macros to *_IsReadWriteAllowed() to remain consistent with the rest of the LUFA API\r
+ * - Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(), Endpoint_ClearSetupReceived() macro has been\r
+ * renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the\r
+ * Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe\r
+ * bank management API\r
+ * - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG)\r
+ * - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity\r
+ * - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity\r
+ * - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway\r
+ * - Renamed the main Drivers/AT90USBXXX directory to Drivers/Peripheral, renamed the Serial_Stream driver to SerialStream\r
+ * - Fixed CDC and USBtoSerial demos freezing where buffers were full while still transmitting or receiving (thanks to Peter Hand)\r
+ * - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the\r
+ * device descriptor\r
+ * - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name\r
+ * - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman)\r
+ * - Capitalised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and\r
+ * DSearch_Comp_Return_ErrorCodes_t enums\r
+ * - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums\r
+ * - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to\r
+ * USB_INITERROR_NoUSBModeSpecified\r
+ * - Renamed USB_PowerOnFail event to USB_InitFailure\r
+ * - Renamed OTG.h header functions to be more consistent with the rest of the library API\r
+ * - Changed over all deprecated GCC structure tag initializers to the standardized C99 format (thanks to Mike Alexander)\r
+ * - USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode\r
+ * rather than having the library pass only partially read header data to the application\r
+ * - The USB_UnhandledControlPacket event has had its parameters removed, in favour of accessing the new USB_ControlRequest structure\r
+ * - The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent\r
+ * - Fixed USB_RemoteWakeupEnabled flag never being set (the REMOTE WAKEUP Set Feature request was not being handled)\r
+ * - Renamed the FEATURELESS_CONTROL_ONLY_DEVICE compile-time token to CONTROL_ONLY_DEVICE\r
+ * - Endpoint configuration is now refined to give better output when all configurations have static inputs - removed the now useless\r
+ * STATIC_ENDPOINT_CONFIGURATION compile time token\r
+ * - Fixed SPI driver init function not clearing SPI2X bit when not needed\r
+ * - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex)\r
+ * - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus()\r
+ * - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke)\r
+ * - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given\r
+ * wLength value when reading in the device descriptor\r
+ * - Fixed missing semicolon in the ATAVRUSBRF01 LED board driver code (thanks to Morten Lund)\r
+ * - 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\r
+ * with less than four LEDs without code modifications (thanks to Morten Lund)\r
+ * - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button\r
+ * - Serial driver now correctly calculates the baud register value when in double speed mode\r
+ * - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values\r
+ * \r
+ *\r
+ * \section Sec_ChangeLog090401 Version 090401\r
+ *\r
+ * - Fixed MagStripe project configuration descriptor containing an unused (blank) endpoint descriptor\r
+ * - Incorporated makefile changes by Denver Gingerich to retain compatibility with stock (non-WinAVR) AVR-GCC installations\r
+ * - Fixed makefile EEPROM programming targets programming FLASH data in addition to EEPROM data\r
+ * - LUFA devices now enumerate correctly with LUFA hosts\r
+ * - Fixed Configuration Descriptor search routine freezing when a comparator returned a failure\r
+ * - Removed HID report item serial dump in the MouseHostWithParser and KeyboardHostWithParser - useful only for debugging, and\r
+ * slowed down the enumeration of HID devices too much\r
+ * - Increased the number of bits per track which can be read in the MagStripe project to 8192 when compiled for the AT90USBXXX6/7\r
+ * - Fixed KeyboardMouse demo discarding the wIndex value in the REQ_GetReport request\r
+ * - USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission\r
+ * next time the device is attached to a host.\r
+ * - Added new F_CLOCK compile time constant to the library and makefiles, to give the raw input clock (used to feed the PLL before any\r
+ * clock prescaling is performed) frequency, so that the PLL prescale mask can be determined\r
+ * - Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with\r
+ * badly designed hosts or devices which greatly exceed the USB specification limits\r
+ * - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices\r
+ * - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions\r
+ * - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances\r
+ * - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions\r
+ * - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson)\r
+ * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded\r
+ * to also remove parts of the Get Status chapter 9 request to further reduce code usage\r
+ * - Makefile updated to include output giving the currently selected BOARD parameter value\r
+ * - Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks\r
+ * to Kenneth Clubb)\r
+ * - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy\r
+ * interfacing with a FAT library for dataflash file level access\r
+ * - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience\r
+ * - Fixed typos in the SPI driver SPI_SPEED_FCPU_DIV_64 and SPI_SPEED_FCPU_DIV_128 masks (thanks to Markus Zocholl)\r
+ * - Keyboard and Mouse device demos (normal, data interrupt and fully interrupt driven) combined into unified keyboard and mouse demos\r
+ * - Keyboard and Mouse host demos (normal and data interrupt driven) combined into unified keyboard and mouse demos\r
+ * - Removed AVRISP_Programmer project due to code quality concerns\r
+ * - Fixed CDC demo not sending an empty packet after each transfer to prevent the host from buffering incoming data\r
+ * - Fixed documentation typos and preprocessor checks relating to misspellings of the USE_RAM_DESCRIPTORS token (thanks to Ian Gregg)\r
+ * - Fixed USBTask.h not conditionally including HostChapter9.h only when USB_CAN_BE_HOST is defined (thanks to Ian Gregg)\r
+ * - Fixed incorrect ADC driver init register manipulation (thanks to Tobias)\r
+ * - Added new GenericHID device demo application\r
+ * - Fixed Still Image Host SImage_SendData() function not clearing the pipe bank after sending data\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog090209 Version 090209\r
+ *\r
+ * - PWM timer mode in AudioOut demo changed to Fast PWM for speed\r
+ * - Updated Magstripe project to work with the latest hardware revision\r
+ * - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups\r
+ * - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to\r
+ * Nate Lawson)\r
+ * - Fixed serious data corruption issue in MassStorage demo dataflash write routine\r
+ * - Added new NO_CLEARSET_FEATURE_REQUEST compile time token\r
+ * - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled\r
+ * - Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration\r
+ * - Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint\r
+ * - ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES\r
+ * - Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing\r
+ * - Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump\r
+ * - Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers\r
+ * - SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer\r
+ * - MassStorage demo changed to use new fast one-way SPI transfers to increase throughput\r
+ * - MassStorage handling of Mass Storage Reset class request improved\r
+ * - Altered MassStorage demo dataflash block read code for speed\r
+ * - Added USB_IsSuspended global flag\r
+ * - Simplified internal Dual Mode (OTG) USB library code to reduce code size\r
+ * - Extended stream timeout period to 100ms from 50ms\r
+ * - Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum\r
+ * - Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event\r
+ * - VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff\r
+ * - Simplified low level backend so that device/host mode initialization uses the same code paths\r
+ * - Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request\r
+ * - Removed buggy Telnet application from the RNDIS demo\r
+ * - Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c\r
+ * - Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c\r
+ * - Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol\r
+ * - Added new "dfu" and "flip" programming targets to project makefiles\r
+ * - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful\r
+ * - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value\r
+ * - Serial driver now sets Tx line as output, enables pullup on Rx line\r
+ * - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled\r
+ * - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated\r
+ * - Fixed KeyboardHostWithParser demo linking against the wrong global variables\r
+ * - Completed doxygen documentation of remaining library bootloaders, demos and projects\r
+ * - Fixed incorrect bootloader start address in the TeensyHID bootloader\r
+ * - Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo\r
+ * - Replaced printf_P(PSTR("%c"), {Variable}) calls with putchar(<Variable>) for speed and size savings\r
+ * - Serial driver now accepts baud rates over 16-bits in size, added double speed flag option\r
+ * - Fixed incorrect callback abort return value in Pipe.c\r
+ * - Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.)\r
+ * - Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems\r
+ * - Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning\r
+ * each time the task runs to allow for other tasks to execute\r
+ * - Added support for the Atmel ATAVRUSBRF01 board\r
+ * - Added AVRISP Programmer Project, courtesy of Opendous Inc.\r
+ * - Fixed CDC Host demo not searching through both CDC interfaces for endpoints\r
+ * - Fixed incorrect Product String descriptor length in the DFU class bootloader\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog081224 Version 081224\r
+ *\r
+ * - MyUSB name changed to LUFA, the Lightweight USB Framework for AVRs\r
+ * - Fixed Mass Storage Host demo's MassStore_SendCommand() delay in the incorrect place\r
+ * - Fixed USBtoSerial demo not calling ReconfigureUSART() after a change in the line encoding\r
+ * - Fixed infinite loop in host mode Host-to-Device control transfers with data stages\r
+ * - HID report parser now supports devices with multiple reports in one interface via Report IDs\r
+ * - Fixed RZUSBSTICK board LED driver header incorrect macro definition order causing compile errors\r
+ * - Calling USB_Init() when the USB interface is already configured now forces a complete interface reset\r
+ * and re-enumeration - fixes MyUSB DFU bootloader not switching to app code correctly when soft reset used\r
+ * - Fixed "No newline at end of file" warning when stream callbacks are enabled\r
+ * - DFU bootloader now uses fixed signature bytes per device, rather than reading them out dynamically for size\r
+ * - Added new FIXED_CONTROL_ENDPOINT_SIZE and USE_SINGLE_DEVICE_CONFIGURATION switches to statically define certain values to\r
+ * reduce compiled binary size\r
+ * - Added new NO_LIMITED_CONTROLLER_CONNECT switch to prevent the library from trying to determine bus connection\r
+ * state from the suspension and wake up events on the smaller USB AVRs\r
+ * - Added summary of all library compile time tokens to the documentation\r
+ * - Added overview of the LUFA scheduler to the documentation\r
+ * - Removed MANUAL_PLL_CONTROL compile time token, replaced with a mask for the USB_Init() Options parameter\r
+ * - CDC bootloader now uses the correct non-far or far versions of the pgm_* functions depending on if RAMPZ is defined\r
+ * - Doxygen documentation now contains documentation on all the projects, bootloaders and most demos included with the library\r
+ * - CDC bootloader now runs user application when USB disconnected rather than waiting for a hard reset\r
+ * - MouseHostWithParser and KeyboardHostWithParser now support multiple-report devices\r
+ * - RNDIS demo can now close connections correctly using the new TCP_APP_CLOSECONNECTION() macro - used in Webserver \r
+ * - Fixed the DFU bootloader, no longer freezes up when certain files are programmed into an AVR, made reading/writing faster\r
+ * - Fixed mouse/joystick up/down movements reversed - HID mouse X/Y coordinates use a left-handed coordinate system, not a normal \r
+ * right-handed system\r
+ * - Added stub code to the CDC and USBtoSerial demos showing how to read and set the RS-232 handshake lines - not currently used in\r
+ * the demos, but the example code and supporting defines are now in place\r
+ * - Interrupts are now disabled when processing a control request in device mode, to avoid exceeding the strict control request\r
+ * timing requirements.\r
+ * - All demos now use a central StatusUpdate() function rather than direct calls to the board LED functions, so that the demos can\r
+ * easily be altered to show different LED combinations (or do something else entirely) as the demo's status changes\r
+ * - Removed LED commands from the CDC bootloader, unused by most AVR910 programming software\r
+ * - Fixed RNDIS demo ICMP ping requests echoing back incorrect data\r
+ * - Added DHCP server code to RNDIS demo, allowing for hands-free auto configuration on any PC\r
+ * - Fixed DFU bootloader PID value for the ATMEGA16U4 AVR\r
+ * - Endpoint and Pipe configuration functions now return an error code indicating success or failure\r
+ * - USB Reset in device mode now resets and disables all device endpoints\r
+ * - Added intermediate states to the host mode state machine, reducing the USB task blocking time to no more than 1ms explicitly per\r
+ * invocation when in host mode\r
+ * - Added support for the ATMEGA32U6 microcontroller\r
+ * - Added STATIC_ENDPOINT_CONFIGURATION compile time option, enabled in the bootloaders to minimize space usage\r
+ * - Removed redundant code from the USB device GetStatus() chapter 9 processing routine\r
+ * - Added new TeensyHID bootloader, compatible with the Teensy HID protocol (http://www.pjrc.com/teensy/)\r
+ * - Versions are now numbered by release dates, rather than arbitrary major/minor revision numbers\r
+ * - USB_RemoteWakeupEnabled is now correctly set and cleared by SetFeature and ClearFeature requests from the host\r
+ * - Changed prototype of GetDescriptor, so that it now returns the descriptor size (or zero if the descriptor doesn't exist)\r
+ * rather than passing the size back to the caller through a parameter and returning a boolean\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog153 Version 1.5.3 - Released 2nd October, 2008\r
+ *\r
+ * - Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately\r
+ * - Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS)\r
+ * - Renamed bootloader directories to remove spaces, which were causing build problems on several OSes\r
+ * - Removed serial number strings from all but the MassStore demo where it is required - users were not\r
+ * modifying the code to either omit the descriptor or use a unique serial per device causing problems\r
+ * when multiple units of the same device were plugged in at the same time\r
+ * - AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host\r
+ * - Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo)\r
+ * - Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board\r
+ * driver creation easier\r
+ * - Extended MassStorage demo to support multiple LUNs, 2 by default\r
+ * - Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63\r
+ * - Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled\r
+ * - Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly\r
+ * - Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values\r
+ * - Added DualCDC demo to demonstrate the use of Interface Association Descriptors\r
+ * - Added pipe NAK detection and clearing API\r
+ * - Added pipe status change (NAK, STALL, etc.) interrupt API\r
+ * - Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row\r
+ * - Host demos configuration descriptor routines now return a unique error code when the returned data does\r
+ * not have a valid configuration descriptor header\r
+ * - Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions\r
+ * - Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token\r
+ * - All demos now pass the USB.org automated Chapter 9 device compliance tests\r
+ * - All HID demos now pass the USB.org automated HID compliance tests\r
+ * - Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems\r
+ * - Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks\r
+ * - Mass Storage demo dataflash management routines changed to use the endpoint stream functions \r
+ * - Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file\r
+ * - Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes\r
+ * are reflected in the hardware (change was previously lost)\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog152 Version 1.5.2 - Released 31st July, 2008\r
+ *\r
+ * - Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types)\r
+ * - Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS\r
+ * implementations (where the notification endpoint is ignored in favour of polling the control endpoint)\r
+ * - Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token\r
+ * - Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo\r
+ * - Fixed DFU bootloader exit causing programming software to complain about failed writes\r
+ * - Fixed DFU bootloader EEPROM programming mode wiping first flash page\r
+ * - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process)\r
+ * - Added support for the ATMEGA16U4 AVR microcontroller\r
+ * - Library licence changed from LGPLv3 to MIT license\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog151 Version 1.5.1 - Released 31st July, 2008\r
+ *\r
+ * - Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event\r
+ * rather than the USB_DeviceAttached event\r
+ * - HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove\r
+ * any referenced but not created usages\r
+ * - Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(),\r
+ * USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline)\r
+ * - Fixed USBtoSerial demo not sending data, only receiving\r
+ * - Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems\r
+ * - ConfigDescriptor functions made normal, instead of static inline\r
+ * - Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases\r
+ * - Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs\r
+ * - Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic\r
+ * approach was buggy and caused problems\r
+ * - Bootloaders now compile with -fno-inline-small-functions option to reduce code size\r
+ * - Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases\r
+ * to be in line with the specification (isochronous endpoints MUST be double banked)\r
+ * - Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN\r
+ * - Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure\r
+ * - Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID\r
+ * devices) to prevent problems on hosts expecting the boot protocol functions to be supported\r
+ * - Added read/write control stream functions to Endpoint.h\r
+ * - Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly\r
+ * - Added RNDISEthernet demo application\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog150 Version 1.5.0 - Released 10 June, 2008\r
+ *\r
+ * - Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages\r
+ * - Added CDC Host demo application\r
+ * - Added KeyboardFullInt demo application\r
+ * - Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction\r
+ * size bits not required for the routines (improves compatibility with devices)\r
+ * - Fixed AudioInput demo - now correctly sends sampled audio to the host PC\r
+ * - Fixed AudioOutput demo once more -- apparently Windows requires endpoint packets to be >=192 bytes\r
+ * - Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes\r
+ * - Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser\r
+ * - Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder\r
+ * - Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler\r
+ * - Added Still Image Host demo application\r
+ * - The USB device task now restores the previously selected endpoint, allowing control requests to be transparently\r
+ * handled via interrupts while other endpoints are serviced through polling\r
+ * - Fixed device signature being sent in reverse order in the CDC bootloader\r
+ * - Host demos now have a separate ConfigDescriptor.c/.h file for configuration descriptor processing\r
+ * - HostWithParser demos now have a separate HIDReport.c/.h file for HID report processing and dumping\r
+ * - Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value\r
+ * - CDC demos now send empty packets after sending a full one to prevent buffering issues on the host\r
+ * - Updated demo descriptors to use VID/PID values donated by Atmel\r
+ * - Added DoxyGen documentation to the source files\r
+ * - Fixed Serial_IsCharRecieved() definition, was previously reversed\r
+ * - Removed separate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead\r
+ * - Removed unused Device Qualifier descriptor structure\r
+ * - Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged\r
+ * - Fixed MassStorageHost demo reading in the block data in reverse\r
+ * - Removed outdated typedefs in StdRequestType.h, superseded by the macro masks\r
+ * - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products\r
+ * - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration\r
+ * - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete\r
+ * - USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value\r
+ * - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()\r
+ * and USB_Host_IsBusSuspended()\r
+ * - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now\r
+ * Pipe_SetInterruptPeriod() to use the correct terminology\r
+ * - UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC\r
+ * Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays\r
+ * of ASCII characters\r
+ * - Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR\r
+ * model was given as the bank size\r
+ * - HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array\r
+ * - Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors\r
+ * - Cleaned up GetDescriptor device chapter 9 handler function\r
+ * - Added GET_REPORT class specific request to HID demos to make them complaint to the HID class\r
+ * - Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed\r
+ * - Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons\r
+ * - All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.)\r
+ * - Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog141 Version 1.4.1 - Released 5 May, 2008\r
+ *\r
+ * - Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo\r
+ * - Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly\r
+ * - Corrected version number in Version.h\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog140 Version 1.4.0 - Released 5 May, 2008\r
+ *\r
+ * - Added HID Report Parser API to the library\r
+ * - Added Mouse and Keyboard host demo applications, using the new HID report parser engine\r
+ * - Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device\r
+ * - Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos\r
+ * - Added MIDI device demo application to the library\r
+ * - Fixed problem preventing USB devices from being resumed from a suspended state\r
+ * - Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol\r
+ * - Added header to each demo application indicating the mode, class, subclass, standards used and supported speed\r
+ * - Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or\r
+ * PIPE_PIPENUM_MASK - this should be manually added to code which requires it\r
+ * - Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time\r
+ * - Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor()\r
+ * to USB_Host_GetNextDescriptor()\r
+ * - Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines\r
+ * - Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file\r
+ * - Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the\r
+ * new comparator API\r
+ * - Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct\r
+ * big-endian for SCSI devices\r
+ * - Fixed macro/function naming consistency; USB_HOST is now USB_Host, USB_DEV is now USB_Device\r
+ * - Added better error reporting to host demos\r
+ * - Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog132 Version 1.3.2 - Released April 1st, 2008\r
+ *\r
+ * - Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes\r
+ * are reflected in the hardware\r
+ * - Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the \r
+ * GetLineCoding request had an incorrect RequestType mask preventing it from being processed\r
+ * - Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full\r
+ * - Device control endpoint size is now determined from the device's descriptors rather than being fixed\r
+ * - Separated out SPI code into new SPI driver in AT90USBXXX driver directory\r
+ * - Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID\r
+ * - Added support for the RZUSBSTICK board\r
+ * - Bicolour driver removed in favour of generic LEDs driver\r
+ * - Added support for the ATMEGA32U4 AVR\r
+ * - Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog131 Version 1.3.1 - Released March 19th 2008\r
+ *\r
+ * - Fixed USB to Serial demo - class value in the descriptors was incorrect\r
+ * - Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low\r
+ * speed mode devices to enumerate properly\r
+ * - USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work\r
+ * on USB AVRs with limited USB FIFO RAM\r
+ * - Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited\r
+ * USB device controller AVRs (AT90USB162, AT90USB82) to function correctly\r
+ * - Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output\r
+ * - Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile\r
+ * - Optimized Mass Storage demo for a little extra transfer speed\r
+ * - Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock\r
+ * - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions\r
+ * (including Big and Little Endian variants)\r
+ * - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file\r
+ * - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch)\r
+ * - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7)\r
+ * - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the\r
+ * directives in the datasheet\r
+ * - Fixed PLL prescaler defines for all AVR models and frequencies\r
+ * - Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions\r
+ * - Added interrupt driven keyboard and mouse device demos\r
+ * - Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code\r
+ * size savings\r
+ * - Added missing Pipe_GetCurrentPipe() macro to Pipe.h\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog130 Version 1.3.0 - Released March 7th 2008\r
+ *\r
+ * - Unnecessary control endpoint config removed from device mode\r
+ * - Fixed device standard request interpreter accidentally processing some class-specific requests\r
+ * - Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library\r
+ * to use descriptors stored in RAM or EEPROM rather than flash memory\r
+ * - All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader\r
+ * - USB_DEV_OPT_LOWSPEED option now works correctly\r
+ * - Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS\r
+ * compile time define\r
+ * - USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or\r
+ * if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options\r
+ * - USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS\r
+ * - Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the\r
+ * compiler can throw away the result more efficiently\r
+ * - Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be\r
+ * controlled by the new Scheduler_SetGroupTaskMode() routine\r
+ * - Added support for AT90USB162 and AT90USB82 AVR models\r
+ * - Added support for the STK525 and STK526 boards\r
+ * - Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and\r
+ * placing board drivers in {Application Directory}/Board/\r
+ * - PLL is now stopped and USB clock is frozen when detached from host in device mode, to save power\r
+ * - Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY\r
+ * - Fixed USB_DEV_IsUSBSuspended() - now checks the correct register\r
+ * - Fixed data transfers to devices when in host mode\r
+ * - Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to\r
+ * USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with\r
+ * the real high speed mode, which is unavailable on the USB AVRs)\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008\r
+ *\r
+ * - Added USB_DeviceEnumerationComplete event for host mode\r
+ * - Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and\r
+ * stopped before the scheduler has been started (via Scheduler_Start)\r
+ * - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management\r
+ * task to be stopped when the USB is not connected to a host or device\r
+ * - All demos updated to stop the USB task when not in use via the appropriate USB events\r
+ * - Mass Storage Host demo application updated to function correctly with all USB flash disks\r
+ * - Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached\r
+ * device, and prints the first block as hexadecimal numbers rather than ASCII characters\r
+ * - Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags\r
+ * - Shifted error handling code in the host enum state machine to a single block, to reduce code complexity\r
+ * - Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing\r
+ * clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices\r
+ * - Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro\r
+ *\r
+ *\r
+ * \section Sec_ChangeLog130 Version 1.1.0 - Released January 25th 2008\r
+ *\r
+ * - Fixed DCONNI interrupt being enabled accidentally after a USB reset\r
+ * - Fixed DDISCI interrupt not being disabled when a device is not connected\r
+ * - Added workaround for powerless pullup devices causing false disconnect interrupts\r
+ * - Added USB_DeviceEnumerationFailed event for Host mode\r
+ * - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer\r
+ * pointer is passed\r
+ * - Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables\r
+ * dependant on size of memory parameters passed in via the user project's makefile\r
+ * - Fixed incorrect device reset routine being called in USBTask\r
+ * - Devices which do not connect within the standard 300mS are now supported\r
+ * - Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being\r
+ * started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects\r
+ * - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the\r
+ * need to have a task ID list\r
+ * - ID transistion interrupt now raises the appropriate device/host disconnect event if device attached\r
+ * - Fixed double VBUS change (and VBUS -) event when detatching in device mode\r
+ * - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile\r
+ * - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and \r
+ * Endpoint_IsConfigured() after calling the config functions to determine success\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_TokenSummary Summary of Compile Tokens\r
+ *\r
+ * The following lists all the possible tokens which can be defined in a project makefile, and passed to the\r
+ * compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behaviour,\r
+ * or remove features unused by a given application in order to save flash space.\r
+ *\r
+ *\r
+ * \section Sec_SummaryNonUSBTokens Non USB Related Tokens\r
+ * This section describes compile tokens which affect non-USB sections of the LUFA library.\r
+ *\r
+ * <b>DISABLE_TERMINAL_CODES</b> - ( \ref Group_Terminal ) \n\r
+ * If an application contains ANSI terminal control codes listed in TerminalCodes.h, it might be desired to remove them\r
+ * at compile time for use with a terminal which is non-ANSI control code aware, without modifying the source code. If\r
+ * this token is defined, all ANSI control codes in the application code from the TerminalCodes.h header are removed from\r
+ * the source code at compile time.\r
+ *\r
+ * \section Sec_SummaryUSBClassTokens USB Class Driver Related Tokens\r
+ * This section describes compile tokens which affect USB class-specific drivers in the LUFA library.\r
+ *\r
+ * <b>HID_ENABLE_FEATURE_PROCESSING</b> - ( \ref Group_HIDParser ) \n\r
+ * Define this token to enable the processing of FEATURE HID report items, if any, into the processed HID structure.\r
+ * By default FEATURE items (which are device features settable by the host but not directly visible by the user) are\r
+ * skipped when processing a device HID report.\r
+ *\r
+ * <b>HID_INCLUDE_CONSTANT_DATA_ITEMS</b> - ( \ref Group_HIDParser ) \n\r
+ * By default, constant data items (usually used as spacers to align separate report items to a byte or word boundary)\r
+ * in the HID report are skipped during report processing. It is highly unusual for an application to make any use of\r
+ * constant data items (as they do not carry any useful data and only occupy limited RAM) however if required defining\r
+ * this switch will put constant data items into the processed HID report structure.\r
+ *\r
+ * <b>HID_STATETABLE_STACK_DEPTH</b> - ( \ref Group_HIDParser ) \n\r
+ * HID reports may contain PUSH and POP elements, to store and retrieve the current HID state table onto a stack. This\r
+ * allows for reports to save the state table before modifying it slightly for a data item, and then restore the previous\r
+ * 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\r
+ * table stack. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
+ *\r
+ * <b>HID_USAGE_STACK_DEPTH</b> - ( \ref Group_HIDParser ) \n\r
+ * HID reports generally contain many USAGE elements, which are assigned to INPUT, OUTPUT and FEATURE items in succession\r
+ * when multiple items are defined at once (via REPORT COUNT elements). This allows for several items to be defined with\r
+ * 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\r
+ * usage stack, indicating the maximum number of USAGE items which can be stored temporarily until the next INPUT, OUTPUT\r
+ * and FEATURE item. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
+ *\r
+ * <b>HID_MAX_COLLECTIONS</b> - ( \ref Group_HIDParser ) \n\r
+ * HID reports generally contain several COLLECTION elements, used to group related data items together. Collection information\r
+ * is stored separately in the processed usage structure (and referred to by the data elements in the structure) to save space.\r
+ * 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\r
+ * parser into the resultant processed report structure. If not defined, this defaults to the value indicated in the HID.h file\r
+ * documentation.\r
+ *\r
+ * <b>HID_MAX_REPORTITEMS</b> - ( \ref Group_HIDParser ) \n\r
+ * 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\r
+ * device. Each item has associated usages, bit offsets in the item reports and other associated data indicating the manner in which\r
+ * 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\r
+ * data elements which can be stored in the processed HID report structure, including INPUT, OUTPUT and (if enabled) FEATURE items.\r
+ * 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\r
+ * processed HID report table. If not defined, this defaults to the value indicated in the HID.h file documentation.\r
+ *\r
+ *\r
+ * \section Sec_SummaryUSBTokens USB Driver Related Tokens\r
+ * This section describes compile tokens which affect USB driver stack as a whole in the LUFA library.\r
+ *\r
+ * <b>USE_RAM_DESCRIPTORS</b> - ( \ref Group_Descriptors ) \n\r
+ * Define this token to indicate to the USB driver that device descriptors are stored in RAM, rather than the default of\r
+ * the AVR's flash. RAM descriptors may be desirable in applications where speed or minimizing flash usage is more important\r
+ * than RAM usage, or applications where the descriptors need to be modified at runtime.\r
+ *\r
+ * <b>USE_EEPROM_DESCRIPTORS</b> - ( \ref Group_Descriptors ) \n\r
+ * Similar to USE_RAM_DESCRIPTORS, but descriptors are stored in the AVR's EEPROM memory rather than RAM.\r
+ *\r
+ * <b>USE_NONSTANDARD_DESCRIPTOR_NAMES</b> - ( \ref Group_Descriptors ) \n\r
+ * The USB 2.0 standard gives some rather obscure names for the elements in the standard descriptor types (device, configuration,\r
+ * string, endpoint, etc.). By default the LUFA library uses these names in its predefined descriptor structure types for\r
+ * compatibility. If this token is defined, the structure element names are switched to the LUFA-specific but more descriptive\r
+ * names documented in the StdDescriptors.h source file.\r
+ *\r
+ * <b>FIXED_CONTROL_ENDPOINT_SIZE</b> - ( \ref Group_EndpointManagement ) \n\r
+ * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor.\r
+ * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if\r
+ * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be\r
+ * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled\r
+ * binary.\r
+ *\r
+ * <b>USE_SINGLE_DEVICE_CONFIGURATION</b> - ( \ref Group_Device ) \n\r
+ * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces\r
+ * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in\r
+ * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, many USB device projects use only a single configuration.\r
+ * Defining this token enables single-configuration mode, reducing the compiled size of the binary at the expense of flexibility.\r
+ *\r
+ * <b>CONTROL_ONLY_DEVICE</b> \n\r
+ * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication\r
+ * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device\r
+ * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided.\r
+ *\r
+ * <b>NO_STREAM_CALLBACKS</b> - ( \ref Group_EndpointPacketManagement , \ref Group_PipePacketManagement )\n\r
+ * Both the endpoint and the pipe driver code contains stream functions, allowing for arrays of data to be sent to or from the\r
+ * host easily via a single function call (rather than complex routines worrying about sending full packets, waiting for the endpoint/\r
+ * pipe to become ready, etc.). By default, these stream functions require a callback function which is executed after each byte processed,\r
+ * allowing for early-aborts of stream transfers by the application. If callbacks are not required in an application, they can be removed\r
+ * by defining this token, reducing the compiled binary size. When removed, the stream functions no longer accept a callback function as\r
+ * a parameter.\r
+ *\r
+ * <b>USB_HOST_TIMEOUT_MS</b> - ( \ref Group_Host ) \n\r
+ * When a control transfer is initiated in host mode to an attached device, a timeout is used to abort the transfer if the attached\r
+ * 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\r
+ * control transfers, specified in milliseconds. If not defined, the default value specified in Host.h is used instead.\r
+ *\r
+ * <b>HOST_DEVICE_SETTLE_DELAY_MS</b> - ( \ref Group_Host ) \n\r
+ * Some devices require a delay of up to 5 seconds after they are connected to VBUS before the enumeration process can be started, or\r
+ * they will fail to enumerate correctly. By placing a delay before the enumeration process, it can be ensured that the bus has settled\r
+ * back to a known idle state before communications occur with the device. This token may be defined to a non-zero 16-bit value to set\r
+ * the device settle period, specified in milliseconds. If not defined, the default value specified in Host.h is used instead.\r
+ *\r
+ * <b>USE_STATIC_OPTIONS</b> - ( \ref Group_USBManagement ) \n\r
+ * By default, the USB_Init() function accepts dynamic options at runtime to alter the library behaviour, including whether the USB pad\r
+ * voltage regulator is enabled, and the device speed when in device mode. By defining this token to a mask comprised of the USB options\r
+ * mask defines usually passed as the Options parameter to USB_Init(), the resulting compiled binary can be decreased in size by removing\r
+ * the dynamic options code, and replacing it with the statically set options. When defined, the USB_Init() function no longer accepts an\r
+ * Options parameter.\r
+ *\r
+ * <b>USB_DEVICE_ONLY</b> - ( \ref Group_USBManagement ) \n\r
+ * For the USB AVR models supporting both device and host USB modes, the USB_Init() function contains a Mode parameter which specifies the\r
+ * 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\r
+ * save space. When defined, the USB_Init() function no longer accepts a Mode parameter. This define is irrelevant on smaller USB AVRs which\r
+ * do not support host mode.\r
+ *\r
+ * <b>USB_HOST_ONLY</b> - ( \ref Group_USBManagement ) \n\r
+ * 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.\r
+ *\r
+ * <b>USB_STREAM_TIMEOUT_MS</b> - ( \ref Group_USBManagement ) \n\r
+ * When endpoint and/or pipe stream functions are used, by default there is a timeout between each transfer which the connected device or host\r
+ * 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\r
+ * period for stream transfers, specified in milliseconds. If not defined, the default value specified in LowLevel.h is used instead.\r
+ *\r
+ * <b>NO_LIMITED_CONTROLLER_CONNECT</b> - ( \ref Group_Events ) \n\r
+ * 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\r
+ * VBUS events, the library attempts to determine the connection state via the bus suspension and wake up events instead. This however may be\r
+ * slightly inaccurate due to the possibility of the host suspending the bus while the device is still connected. If accurate connection status is\r
+ * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the USB_IsConnected global\r
+ * can be accurately set and the USB_Connect and USB_Disconnect events manually raised by the RAISE_EVENT macro. When defined, this token disables\r
+ * the library's auto-detection of the connection state by the aforementioned suspension and wake up events.\r
+ *\r
+ * <b>INTERRUPT_CONTROL_ENDPOINT</b> - ( \ref Group_USBManagement ) \n\r
+ * Some applications prefer to not call the USB_USBTask() management task reguarly while in device mode, as it can complicate code significantly.\r
+ * 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\r
+ * endpoint entirely via interrupts asynchronously to the user application.\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \page Page_DevelopingWithLUFA Developing With LUFA\r
+ *\r
+ * This section of the manual contains information on LUFA development, such as Getting Started information,\r
+ * information on compile-time tuning of the library and other developer-related sections.\r
+ *\r
+ * <b>Subsections:</b>\r
+ * - \subpage Page_GettingStarted Getting Started\r
+ * - \subpage Page_TokenSummary Summary of Compile Time Tokens\r
+ * - \subpage Page_Migration Migrating from an Older LUFA Version\r
+ * - \subpage Page_VIDPID Allocated USB VID and PID Values\r
+ * - \subpage Page_BuildLibrary Building as a Linkable Library\r
+ * - \subpage Page_WritingBoardDrivers How to Write Custom Board Drivers\r
+ */\r
+
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \page Page_DeviceSupport Device and Hardware Support\r
+ *\r
+ * Currently supported AVR models:\r
+ * - AT90USB1286 (USB Device Only)\r
+ * - AT90USB1287 (USB Host and Device)\r
+ * - AT90USB646 (USB Device Only)\r
+ * - AT90USB647 (USB Host and Device)\r
+ * - AT90USB82 (USB Device Only)\r
+ * - AT90USB162 (USB Device Only)\r
+ * - ATMEGA16U4 (USB Device Only)\r
+ * - ATMEGA32U4 (USB Device Only)\r
+ * - ATMEGA32U6 (USB Device Only)\r
+ *\r
+ * Currently supported Atmel boards:\r
+ * - AT90USBKEY\r
+ * - STK525\r
+ * - STK526\r
+ * - RZUSBSTICK\r
+ * - ATAVRUSBRF01\r
+ * - Custom User Boards\r
+ */\r
+
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \dir LUFA/Common\r
+ * \brief Common library header files.\r
+ * \r
+ * This folder contains header files which are common to all parts of the LUFA library. They may be used freely in\r
+ * user applications.\r
+ *\r
+ * \dir LUFA/Drivers\r
+ * \brief Library hardware and software drivers.\r
+ * \r
+ * This folder contains all the library hardware and software drivers for each supported board and USB AVR\r
+ * microcontroller model.\r
+ * \r
+ * \dir LUFA/Drivers/Misc\r
+ * \brief Miscellaneous driver files.\r
+ * \r
+ * This folder contains drivers for aspects other than the USB interface, board hardware or AVR peripherals.\r
+ * \r
+ * \dir LUFA/Drivers/Peripheral\r
+ * \brief USB AVR peripheral driver files.\r
+ * \r
+ * This folder contains drivers for several of the AVR internal peripherals such as the USART, compatible with\r
+ * all USB AVR models.\r
+ *\r
+ * \dir LUFA/Drivers/Peripheral/AT90USBXXX67\r
+ * \brief AT90USBXXX6, AT90USBXXX7 and ATMEGAXXU4 AVR model peripheral driver files. Its original name is due to legacy\r
+ * reasons.\r
+ * \r
+ * This folder contains drivers for several of the AVR internal peripherals such as the USART, compatible only with\r
+ * the AT90USBXXX6, AT90USBXXX7 and ATMEGAXXU4 USB AVR models, such as the AT90USB1287. Its contents should <b>not</b> be\r
+ * included by the user application - the dispatch header file located in the parent AT90USBXXX directory should be used\r
+ * instead.\r
+ *\r
+ * \dir LUFA/Drivers/USB\r
+ * \brief USB controller peripheral driver files.\r
+ * \r
+ * This folder contains the main header files required to implement the USB interface in the USB supporting AVR models.\r
+ * The header files contained directly in this folder should be included in the user application in order to gain USB\r
+ * functionality, and the appropriate C source files in the LowLevel and HighLevel driver folders added to the compile\r
+ * and link stages.\r
+ *\r
+ * \dir LUFA/Drivers/USB/LowLevel\r
+ * \brief Low level USB driver files.\r
+ * \r
+ * This folder contains low level USB driver source files required to implement USB functionality on the USB AVR microcontrollers.\r
+ *\r
+ * \dir LUFA/Drivers/USB/HighLevel\r
+ * \brief High level USB driver files.\r
+ * \r
+ * This folder contains high level USB driver source files required to implement USB functionality on the USB AVR microcontrollers.\r
+ *\r
+ * \dir LUFA/Drivers/USB/Class\r
+ * \brief USB Class helper driver files.\r
+ * \r
+ * This folder contains drivers for implementing functionality of standardized USB classes. These are not used directly by the library,\r
+ * but provide a standard and library-maintained way of implementing functionality from some of the defined USB classes without extensive\r
+ * development effort. Is is recommended that these drivers be used where possible to reduce maintenance of user applications.\r
+ *\r
+ * \dir LUFA/Drivers/USB/Class/Device\r
+ * \brief USB Device Class helper driver files.\r
+ * \r
+ * Device mode drivers for the standard USB classes.\r
+ *\r
+ * \dir LUFA/Drivers/USB/Class/Host\r
+ * \brief USB Host Class helper driver files.\r
+ * \r
+ * Host mode drivers for the standard USB classes.\r
+ *\r
+ * \dir LUFA/Drivers/Board\r
+ * \brief Board hardware driver files.\r
+ * \r
+ * This folder contains drivers for interfacing with the physical hardware on supported commercial boards, primarily from\r
+ * the Atmel corporation. Header files in this folder should be included in user applications requiring the functionality of\r
+ * hardware placed on supported boards.\r
+ *\r
+ * \dir LUFA/Drivers/Board/USBKEY\r
+ * \brief USBKEY board hardware driver files.\r
+ * \r
+ * This folder contains drivers for hardware on the Atmel USBKEY demonstration board. The header files in this folder should\r
+ * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
+ * should be included instead.\r
+ *\r
+ * \dir LUFA/Drivers/Board/STK526\r
+ * \brief STK526 board hardware driver files.\r
+ * \r
+ * This folder contains drivers for hardware on the Atmel STK526 development board. The header files in this folder should\r
+ * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
+ * should be included instead.\r
+ *\r
+ * \dir LUFA/Drivers/Board/STK525\r
+ * \brief STK525 board hardware driver files.\r
+ * \r
+ * This folder contains drivers for hardware on the Atmel STK525 development board. The header files in this folder should\r
+ * not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory\r
+ * should be included instead.\r
+ *\r
+ * \dir LUFA/Drivers/Board/RZUSBSTICK\r
+ * \brief RZUSBSTICK board hardware driver files.\r
+ * \r
+ * This folder contains drivers for hardware on the Atmel RZUSBSTICK board, as used in the Atmel "Raven" wireless kits. The header\r
+ * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in\r
+ * the parent Board directory should be included instead.\r
+ *\r
+ * \dir LUFA/Drivers/Board/ATAVRUSBRF01\r
+ * \brief ATAVRUSBRF01 board hardware driver files.\r
+ * \r
+ * This folder contains drivers for hardware on the Atmel ATAVRUSBRF01 board, as used in several Atmel wireless demo kits. The header\r
+ * files in this folder should not be included directly in user applications; the similarly named dispatch header files located in\r
+ * the parent Board directory should be included instead.\r
+ *\r
+ * \dir LUFA/DriverStubs\r
+ * \brief Driver stub header files for custom boards, to allow the LUFA board drivers to operate.\r
+ * \r
+ * This contains stub files for the LUFA board drivers. If the LUFA board drivers are used with board hardware other than those\r
+ * directly supported by the library, the BOARD parameter of the application's makefile can be set to "USER", and these stub files\r
+ * copied to the "/Board/" directory of the application's folder. When fleshed out with working driver code for the custom board,\r
+ * the corresponding LUFA board APIs will work correctly with the non-standard board hardware.\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \page Page_Donating Donating to Support This Project\r
+ *\r
+ * \image html Author.jpg "Dean Camera, LUFA Developer"\r
+ *\r
+ * I am a 20 year old University student studying for a double degree in Computer Science and Electronics Engineering.\r
+ * The development and support of this library requires much effort from myself, as I am the sole developer, maintainer\r
+ * and supporter. Please consider donating a small amount to support this and my future Open Source projects - All\r
+ * donations are <i>greatly</i> appreciated.\r
+ *\r
+ * <b>Donate to this project at http://www.fourwalledcubicle.com </b> via PayPal - Thanks in Advance!\r
+ */\r
+
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+ /** \page Page_FutureChanges Future Changes\r
+ *\r
+ * Below is a list of future changes which are proposed for the LUFA library, but not yet started/complete.\r
+ * This gives an unordered list of future changes which will be available in future releases of the library.\r
+ * If you have an item to add to this list, please contact the library author via email, the LUFA mailing list,\r
+ * or post your suggestion as an enhancement request to the project bug tracker.\r
+ *\r
+ * - Make new host class drivers\r
+ * - Document new host class drivers\r
+ * - Convert Host mode demos to class drivers\r
+ * - Add standardized descriptor names to class driver structures, controlled by USE_NONSTANDARD_DESCRIPTOR_NAMES\r
+ * - Add multiple-report HID demo to the library\r
+ * - Add dual role Mouse Host/Keyboard Device demo to the library\r
+ * - Port LUFA to the AVR32 UC3B series microcontrollers\r
+ * - Port LUFA to the Atmel ARM7 series microcontrollers\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_GettingStarted Getting Started\r
+ *\r
+ * Out of the box, LUFA contains a large number of pre-made class demos for you to test, experiment with and\r
+ * ultimately build upon for your own projects. All the demos come pre-configured to build and run correctly\r
+ * on the AT90USB1287 AVR microcontroller, mounted on the Atmel USBKEY board and running at an 8MHz master clock.\r
+ * This is due to two reasons; one, it is the hardware the author possesses, and two, it is the most popular Atmel\r
+ * USB demonstration board to date.\r
+ *\r
+ *\r
+ * \section Sec_Prerequisites Prerequisites\r
+ * Before you can compile any of the LUFA library code or demos, you will need a recent distribution of avr-libc (1.6.2+)\r
+ * and the AVR-GCC (4.2+) compiler. For Windows users, the best way to obtain these is the WinAVR project\r
+ * (http://winavr.sourceforge.net) as this provides a single-file setup for everything required to compile your\r
+ * own AVR projects.\r
+ *\r
+ *\r
+ * \section Sec_Configuring Configuring the Demos, Bootloaders and Projects\r
+ * If the target AVR model, clock speed, board or other settings are different to the current settings, they must be changed\r
+ * and the project recompiled from the source code before being programmed into the AVR microcontroller. Most project\r
+ * configuration options are located in the "makefile" build script inside each LUFA application's folder, however some\r
+ * demo or application-specific configuration settings (such as the output format in the AudioOut demo) are located in the\r
+ * main .c source file of the project. See each project's individual documentation for application-specific configuration\r
+ * values.\r
+ *\r
+ * Each project "makefile" contains all the script and configuration data required to compile each project. When opened with\r
+ * any regular basic text editor such as Notepad or WordPad (ensure that the save format is a pure ASCII text format) the\r
+ * build configuration settings may be altered.\r
+ *\r
+ * Inside each makefile, a number of configuration variables are located, with the format "<VARIABLE NAME> = <VALUE>". For\r
+ * each application, the important variables which should be altered are:\r
+ *\r
+ * - <b>MCU</b>, the target AVR processor.\r
+ * - <b>BOARD</b>, the target board hardware\r
+ * - <b>F_CLOCK</b>, the target raw master clock frequency, before any prescaling is performed\r
+ * - <b>F_CPU</b>, the target AVR CPU master clock frequency, after any prescaling\r
+ * - <b>CDEFS</b>, the C preprocessor defines which configure the source code\r
+ *\r
+ * These values should be changed to reflect the build hardware.\r
+ *\r
+ * \subsection SSec_MCU The MCU Parameter\r
+ * This parameter indicates the target AVR model for the compiled application. This should be set to the model of the target AVR\r
+ * (such as the AT90USB1287, or the ATMEGA32U4), in all lower-case (e.g. "at90usb1287"). Note that not all demos support all the\r
+ * USB AVR models, as they may make use of peripherals or modes only present in some devices.\r
+ *\r
+ * For supported library AVR models, see main documentation page.\r
+ *\r
+ * \subsection SSec_BOARD The BOARD Parameter\r
+ * This parameter indicates the target AVR board hardware for the compiled application. Some LUFA library drivers are board-specific,\r
+ * 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\r
+ * on the main library page, change this parameter to the board name in all UPPER-case.\r
+ *\r
+ * 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\r
+ * "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\r
+ * board-specific hardware drivers inside the LUFA library, then the appropriate stub drives files should be copied from the /BoardStubs/\r
+ * directory into a /Board/ folder inside the application directory, and the stub driver completed with the appropriate code to drive the\r
+ * custom board's hardware.\r
+ *\r
+ * \subsection SSec_F_CLOCK The F_CLOCK Parameter\r
+ * This parameter indicates the target AVR's input clock frequency, in Hz. This is the actual clock input, before any prescaling is performed. In the\r
+ * USB AVR architecture, the input clock before any prescaling is fed directly to the PLL subsystem, and thus the PLL is derived directly from the\r
+ * clock input. The PLL then feeds the USB and other sections of the AVR with the correct upscaled frequencies required for those sections to function.\r
+ *\r
+ * <b>Note that this value does not actually *alter* the AVR's input clock frequency</b>, it is just a way to indicate to the library the clock frequency\r
+ * of the AVR as set by the AVR's fuses. If this value does not reflect the actual running frequency of the AVR, incorrect operation of one of more\r
+ * library components will occur.\r
+ *\r
+ * \subsection SSec_F_CPU The F_CPU Parameter\r
+ * This parameter indicates the target AVR's master CPU clock frequency, in Hz.\r
+ *\r
+ * <b>Note that this value does not actually *alter* the AVR's CPU clock frequency</b>, it is just a way to indicate to the library the clock frequency\r
+ * of the AVR core as set by the AVR's fuses. If this value does not reflect the actual running frequency of the AVR, incorrect operation of one of more\r
+ * library components will occur.\r
+ *\r
+ * \subsection SSec_CDEFS The CDEFS Parameter\r
+ * Most applications will actually have multiple CDEF lines, which are concatenated together with the "+=" operator. This ensures that large\r
+ * numbers of configuration options remain readable by splitting up groups of options into separate lines.\r
+ *\r
+ * Normally, these options do not need to be altered to allow an application to compile and run correctly on a different board or AVR to the\r
+ * current configuration - if the options are incorrect, then the demo is most likely incompatible with the chosen USB AVR model and cannot be\r
+ * 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\r
+ * interface speed (Low or Full speed) and other LUFA configuration options can be set here - refer to the library documentation for details on the\r
+ * configuration parameters.\r
+ *\r
+ *\r
+ * \section Sec_Compiling Compiling a LUFA Application\r
+ * Compiling the LUFA demos, applications and/or bootloaders is very simple. LUFA comes with makefile scripts for\r
+ * each individual demo, bootloader and project folder, as well as scripts in the /Demos/, /Bootloaders/, /Projects/\r
+ * and the LUFA root directory. This means that compilation can be started from any of the above directories, with\r
+ * a build started from an upper directory in the directory structure executing build of all child directories under it.\r
+ * This means that while a build inside a particular demo directory will build only that particular demo, a build stated\r
+ * from the /Demos/ directory will build all LUFA demo projects sequentially.\r
+ *\r
+ * \subsection SSec_CommandLine Via the Command Line\r
+ * To build a project from the source via the command line, the command <b>"make all"</b> should be executed from the command line in the directory\r
+ * of interest. To remove compiled files (including the binary output, all intermediately files and all diagnostic output\r
+ * files), execute <b>"make clean"</b>. Once a "make all" has been run and no errors were encountered, the resulting binary will\r
+ * be located in the generated ".HEX" file. If your project makes use of pre-initialized EEPROM variables, the generated ".EEP"\r
+ * file will contain the project's EEPROM data.\r
+ *\r
+ * \subsection SSec_AVRStudio Via AVRStudio\r
+ * Each demo, project and bootloader contains an AVRStudio project (.aps) which can be used to build each project. Once opened\r
+ * in AVRStudio, the project can be built and cleaned using the GUI buttons or menus. Note that the AVRStudio project files make\r
+ * use of the external project makefile, thus the procedure for configuring a demo remains the same regardless of the build environment.\r
+ *\r
+ *\r
+ * \section Sec_Programming Programming a USB AVR\r
+ * Once you have built an application, you will need a way to program in the resulting ".HEX" file (and, if your\r
+ * application uses EEPROM variables with initial values, also a ".EEP" file) into your USB AVR. Normally, the\r
+ * reprogramming an AVR device must be performed using a special piece of programming hardware, through one of the\r
+ * supported AVR programming protocols - ISP, HVSP, HVPP, JTAG or dW. This can be done through a custom programmer,\r
+ * a third party programmer, or an official Atmel AVR tool - for more information, see the Atmel.com website.\r
+ *\r
+ * Alternatively, you can use the bootloader. From the Atmel factory, each USB AVR comes preloaded with the Atmel\r
+ * DFU (Device Firmware Update) class bootloader, a small piece of AVR firmware which allows the remainder of the\r
+ * AVR to be programmed through a non-standard interface such as the serial USART port, SPI, or (in this case) USB.\r
+ * Bootloaders have the advantage of not requiring any special hardware for programming, and cannot usually be erased\r
+ * or broken without an external programming device. They have disadvantages however; they cannot change the fuses of\r
+ * the AVR (special configuration settings that control the operation of the chip itself) and a small portion of the\r
+ * AVR's FLASH program memory must be reserved to contain the bootloader firmware, and thus cannot be used by the\r
+ * loaded application. Atmel's DFU bootloader is either 4KB (for the smaller USB AVRs) or 8KB (for the larger USB AVRs).\r
+ *\r
+ * If you wish to use the DFU bootloader to program in your application, refer to your DFU programmer's documentation.\r
+ * Atmel provides a free utility called FLIP which is USB AVR compatible, and an open source (Linux compatible)\r
+ * alternative exists called "dfu-programmer".\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** @defgroup Group_BoardDrivers Board Drivers\r
+ *\r
+ * Functions, macros, variables, enums and types related to the control of physical board hardware.\r
+ */\r
+\r
+/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers\r
+ *\r
+ * Functions, macros, variables, enums and types related to the control of AVR subsystems.\r
+ */\r
+ \r
+/** @defgroup Group_MiscDrivers Miscellaneous Drivers\r
+ *\r
+ * Miscellaneous driver Functions, macros, variables, enums and types.\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_LUFAPoweredProjects User Projects Powered by LUFA\r
+ *\r
+ * LUFA is currently in use all around the world, in many applications both commercial and non-commercial. Below is a\r
+ * list of known public LUFA powered projects, which all use the LUFA library in some way. Feel free to visit each project's\r
+ * home page for more information on each project.\r
+ *\r
+ * 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\r
+ * documentation.\r
+ *\r
+ *\r
+ * - Benito #7, an AVR Programmer: http://www.dorkbotpdx.org/blog/feurig/benito_7_the_next_big_thing\r
+ * - Stripe Snoop, a Magnetic Card reader: http://www.ossguy.com/ss_usb/\r
+ * - USB10 AKA "The Ferret", a USB162 development board: http://www.soc-machines.com\r
+ * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/\r
+ * - Digital Survey Instruments Magnetometer and Pointer: http://www.digitalsurveyinstruments.com/\r
+ * - ARPS Locator: http://la3t.hamradio.no/lab//?id=tracker_en\r
+ * - Lightweight CC110x USB dongle for 868MHz Protocols: http://busware.de/tiki-index.php?page=CUL\r
+ * - AVROpendous, an open design/source AT90USB162 development board: http://avropendous.org/\r
+ * - USB Interface for Playstation Portable Devices: http://forums.ps2dev.org/viewtopic.php?t=11001\r
+ * - USB to Serial Bridge, via SPI and I2C: http://www.tty1.net/userial/\r
+ * - Teensy, another tiny AT90USB162 development board: http://www.pjrc.com/teensy/index.html\r
+ * - SEGA Megadrive/Genesis Development Cartridge: http://www.spritesmind.net/_GenDev/forum/viewtopic.php?t=464\r
+ * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig\r
+ * - Opendous-JTAG, an open source JTAG device: http://code.google.com/p/opendous-jtag/\r
+ * - Openkubus, an open source hardware-based authentication dongle: http://code.google.com/p/openkubus/\r
+ */
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+ \r
+/**\r
+ * \page Page_Resources Library Resources\r
+ *\r
+ * Project Homepage: http://www.fourwalledcubicle.com/LUFA.php \n\r
+ * Development Blog: http://www.fourwalledcubicle.com/blog \n\r
+ * Discussion Group: http://groups.google.com/group/myusb-support-list \n\r
+ * SVN Access, Bug Reports and Feature Requests: http://code.google.com/p/lufa-lib/ \n\r
+ * Author's Website: http://www.fourwalledcubicle.com \n\r
+ *\r
+ * WinAVR Website: http://winavr.sourceforge.net \n\r
+ * avr-libc Website: http://www.nongnu.org/avr-libc/ \n\r
+ *\r
+ * USB-IF Website: http://www.usb.org \n\r
+ */\r
+
\ No newline at end of file
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \page Page_Licence License\r
+ *\r
+ * The LUFA library is currently released under the MIT licence, included below.\r
+ *\r
+ * Commercial entities can opt out of the public disclosure clause in this license\r
+ * for a one-time US$1500 payment. This provides a non-exclusive modified MIT licensed which\r
+ * allows for the free use of the LUFA library, bootloaders and (where the sole copyright\r
+ * is attributed to Dean Camera) demos without public disclosure within an organisation. Please\r
+ * contact the author for more information.\r
+ *\r
+ * \verbatim\r
+ * Permission to use, copy, modify, and distribute this software\r
+ * and its documentation for any purpose and without fee is hereby\r
+ * granted, provided that the above copyright notice appear in all\r
+ * copies and that both that the copyright notice and this\r
+ * permission notice and warranty disclaimer appear in supporting\r
+ * documentation, and that the name of the author not be used in\r
+ * advertising or publicity pertaining to distribution of the\r
+ * software without specific, written prior permission.\r
+ *\r
+ * The author disclaim all warranties with regard to this\r
+ * software, including all implied warranties of merchantability\r
+ * and fitness. In no event shall the author be liable for any\r
+ * special, indirect or consequential damages or any damages\r
+ * whatsoever resulting from loss of use, data or profits, whether\r
+ * in an action of contract, negligence or other tortious action,\r
+ * arising out of or in connection with the use or performance of\r
+ * this software.\r
+ * \endverbatim\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/**\r
+ * \mainpage General Information\r
+ *\r
+ * Lightweight USB Framework for AVRs Library, written by Dean Camera. \r
+ *\r
+ * Originally based on the AT90USBKEY from Atmel, it is an open-source USB library for the USB-enabled AVR\r
+ * microcontrollers, released under the MIT license. It now supports a large number of USB AVR models and boards.\r
+ *\r
+ * The library is currently in a stable release, suitable for download and incorporation into user projects for\r
+ * both host and device modes. For information about the project progression, check out my blog.\r
+ *\r
+ * LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the\r
+ * library API more streamlined and robust. You can download AVR-GCC for free in a convenient windows package, \r
+ * from the the WinAVR website.\r
+ *\r
+ * \section Sec_Demos Demos and Bootloaders\r
+ * The LUFA library ships with several different host and device demos, located in the /Demos/ subdirectory.\r
+ * If this directory is missing, please re-download the project from the project homepage.\r
+ *\r
+ * Also included with the library are three fully functional bootloaders, located in the /Bootloaders/ subdirectory.\r
+ * The DFU class bootloader is compatible with Atmel's FLIP software or the open source dfu-programmer project, the\r
+ * CDC class (AVR109 protocol) is compatible with such open source software as AVRDUDE and AVR-OSP, and the TeensyLoader\r
+ * HID class bootloader is compatible with the software from PJRC (http://www.pjrc.com/teensy/index.html).\r
+ *\r
+ * <b>Subsections:</b>\r
+ * - \subpage Page_Licence Project License\r
+ * - \subpage Page_Donating Donating to Support this Project\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_Migration Migrating from Older Versions\r
+ *\r
+ * Below is migration information for updating existing projects based on previous versions of the LUFA library\r
+ * to the next version released. It does not indicate all new additions to the library in each version change, only\r
+ * areas relevant to making older projects compatible with the API changes of each new release.\r
+ *\r
+ * \section Sec_MigrationXXXXXX Migrating from 090605 to XXXXXX\r
+ *\r
+ * <b>All</b>\r
+ * - The "simple scheduler" has been removed, as it was little more than an abtracted loop and caused much confusion. User\r
+ * applications using the scheduler should switch to regular loops instead.\r
+ * - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never\r
+ * used in user applications. The library is available from the author's website for those wishing to still use it in their\r
+ * applications.\r
+ *\r
+ * \section Sec_Migration090605 Migrating from 090510 to 090605\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing\r
+ * projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can\r
+ * manage the control endpoint via interrupts automatically by compiling with the INTERRUPT_CONTROL_ENDPOINT token defined.\r
+ * - The DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory\r
+ * address.\r
+ * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See\r
+ * \ref Group_Events for new API details.\r
+ * - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular\r
+ * function signatures of a function accepting no arguments and returning a uint8_t value.\r
+ * - The Event_DeviceError() event no longer exists, as its sole caller (unlinked USB_GetDescriptor() function) now produces a\r
+ * compilation error rather than a runtime error. The StdDescriptors.c file no longer exists as a result, and should be removed\r
+ * from project makefiles.\r
+ * - The USB_GetDescriptor() function has been renamed to CALLBACK_USB_GetDescriptor() to be in line with the new CALLBACK_ function\r
+ * prefixes for functions which *must* be implemented in the user application.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing\r
+ * projects using interrupts on non-control pipes should switch to polling.\r
+ * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See\r
+ * \ref Group_Events for new API details.\r
+ * - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular\r
+ * function signatures of a function accepting no arguments and returning a uint8_t value.\r
+ * - The DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with\r
+ * regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a uint8_t value.\r
+ *\r
+ *\r
+ * \section Sec_Migration090510 Migrating from 090401 to 090510\r
+ *\r
+ * <b>All</b>\r
+ * - The ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all\r
+ * BUTTLOADTAG elements, or download and extract ButtLoadTag.h header from the ButtLoad project.\r
+ * - The Drivers/AT90USBXXX directory has been renamed to Drivers/Peripheral.\r
+ * - The Serial_Stream driver has been renamed to SerialStream to remain consistent with the rest of the library naming scheme.\r
+ * - The HWB driver has changed to the Buttons driver. See the board Buttons driver documentation for the new API.\r
+ *\r
+ * <b>Dual Role Mode</b>\r
+ * - The USB_PowerOnFail even has been renamed to USB_InitFailure.\r
+ * - The functions in OTG.h have been renamed to remain more consistent with the library API. See the functions in OTG.h for more\r
+ * details.\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - Most demos, bootloaders and applications have had significant changes from previous versions. Applications built off of any\r
+ * library demos should update to the latest versions.\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the Endpoint_ClearIN(), Endpoint_ClearOUT() \r
+ * macros. See Endpoint.h documentation for more details on the new endpoint management macros.\r
+ * - The Endpoint_ReadWriteAllowed() macro has been renamed to Endpoint_IsReadWriteAllowed() to be more consistent with the rest of\r
+ * the API naming scheme.\r
+ * - The Endpoint_IsSetupINReady() and Endpoint_IsSetupOutReceived() macros have been renamed to Endpoint_IsINReady() and\r
+ * Endpoint_IsOUTReceived() respectively.\r
+ * - The Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived().\r
+ * - The Endpoint_ClearSetupReceived() macro has been renamed to Endpoint_ClearSETUP().\r
+ * - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as Endpoint_Read_Word()) have\r
+ * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions.\r
+ * - The USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of\r
+ * the Control Request header as all Control Request header data is now preloaded by the library and made available in the\r
+ * USB_ControlRequest structure.\r
+ * - The FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to CONTROL_ONLY_DEVICE.\r
+ * - The STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically.\r
+ * - The values of the Endpoint_Stream_RW_ErrorCodes_t and Endpoint_ControlStream_RW_ErrorCodes_t enums have had the "ERROR_" portion\r
+ * of their names removed.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on\r
+ * other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called\r
+ * in existing projects where the Control pipe is to be operated on.\r
+ * - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer\r
+ * need to manage this manually when calling the USB management task.\r
+ * - The Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See\r
+ * Pipe.h documentation for more details on the new pipe management macros.\r
+ * - The Pipe_ReadWriteAllowed() macro has been renamed to Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API\r
+ * naming scheme.\r
+ * - The Pipe_IsSetupINReceived() and Pipe_IsOutReady() macros have been renamed to Pipe_IsINReceived() and Pipe_IsOUTReady()\r
+ * respectively.\r
+ * - The new Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous Pipe_ClearSetupOUT() macro.\r
+ * - The Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent().\r
+ * - The Pipe_ClearSetupSent() macro is no longer applicable and should be removed.\r
+ * - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as Pipe_Read_Word()) have\r
+ * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions.\r
+ * - The Host_IsResetBusDone() macro has been renamed to Host_IsBusResetComplete().\r
+ * - The Pipe_Ignore_Word() and Pipe_Ignore_DWord() functions have been renamed to Pipe_Discard_Word() and Pipe_Discard_DWord() to remain\r
+ * consistent with the rest of the pipe API.\r
+ * - It is no longer needed to manually include the headers from LUFA/Drivers/USB/Class, as they are now included along with the rest\r
+ * of the USB headers when LUFA/Drivers/USB/USB.h is included.\r
+ * - Functions in the ConfigDescriptor.h header file no longer have "Host_" as part of their names.\r
+ * - The ProcessHIDReport() has been renamed to USB_ProcessHIDReport(), GetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo()\r
+ * and SetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo().\r
+ * - The values of the DSearch_Return_ErrorCodes_t and DSearch_Comp_Return_ErrorCodes_t enums have had their respective "Descriptor_Search"\r
+ * and "Descriptor_Search_Comp" prefixes changed to all caps.\r
+ * - The USB_HostRequest global has been renamed to USB_ControlRequest, and is used in Device mode also. The USB_Host_Request_Header_t\r
+ * structure type has been renamed to USB_Request_Header_t.\r
+ * - The values of the Pipe_Stream_RW_ErrorCodes_t enum have had the "ERROR_" portion of their names removed.\r
+ *\r
+ *\r
+ * \section Sec_Migration090401 Migrating from 090209 to 090401\r
+ *\r
+ * <b>All</b>\r
+ * - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant "F_CLOCK",\r
+ * defined in the project makefile and passed to the compiler via the -D switch.\r
+ * - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the\r
+ * EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called.\r
+ * - As the avr-libc macro has been corrected in recent avr-libc distributions, the SetSystemClockPrescaler() macro has been removed.\r
+ * Include <avr/power.h> and call clock_prescale_set(clock_div_1); instead on recent avr-libc distributions.\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission.\r
+ * - Most demos, bootloaders and applications have had their control request handling code corrected, to properly send the status\r
+ * stage in all handled requests. If you are using code based off one of the library demos, bootloaders or applications, you should\r
+ * update to the latest revisions.\r
+ *\r
+ * <b>Non-USB Library Components</b>\r
+ * - The ATTR_ALWAYSINLINE function attribute macro has been renamed to ATTR_ALWAYS_INLINE.\r
+ * - Custom board Dataflash drivers now require the implementation of Dataflash_SelectChipFromPage() and Dataflash_SendAddressBytes().\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded\r
+ * to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the \r
+ * NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the FEATURELESS_CONTROL_ONLY_DEVICE token with no further\r
+ * modifications required.\r
+ *\r
+ *\r
+ * \section Sec_Migration090209 Migrating from 081217 to 090209\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of ENDPOINT_TOTAL_ENDPOINTS.\r
+ * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user\r
+ * makefile if desired to restore the previous 50ms timeout.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - The PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of PIPE_TOTAL_ENDPOINTS.\r
+ * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user\r
+ * makefile if desired to restore the previous 50ms timeout.\r
+ * - The USB_DeviceEnumerationFailed event now contains a second "SubErrorCode" parameter, giving the error code of the function\r
+ * which failed.\r
+ * - The HID_PARSE_Sucessful enum member constant has been corrected to HID_PARSE_Successful.\r
+ *\r
+ * <b>Non-USB Library Components</b>\r
+ * - The previous SPI_SendByte() functionality is now located in SPI_TransferByte(). SPI_SendByte() now discards the return byte\r
+ * for speed, to compliment the new SPI_ReceiveByte() function. If two-way SPI transfers are required, calls to SPI_SendByte()\r
+ * should be changed to SPI_TransferByte().\r
+ * - The serial driver now sets the Tx line as an output explicitly, and enables the pullup of the Rx line.\r
+ * - The Serial_Init() and SerialStream_Init() functions now take a second DoubleSpeed parameter, which indicates if the USART\r
+ * should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at\r
+ * the given AVR clock speed.\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - Most library demos have been enhanced and/or had errors corrected. All users of all demos should upgrade their codebase to\r
+ * the latest demo versions.\r
+ *\r
+ *\r
+ * \section Sec_Migration171208 Migrating from V1.5.3 to 081217\r
+ *\r
+ * <b>All</b>\r
+ * - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names,\r
+ * have been changed to LUFA.\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding\r
+ * parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version.\r
+ * - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and\r
+ * KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects\r
+ * built on either "WithParser" demo should update to the latest code.\r
+ * - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not\r
+ * recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes,\r
+ * as it is neither a full nor a standards compliant implementation.\r
+ *\r
+ * <b>Non-USB Library Components</b>\r
+ * - The Serial_IsCharRecieved() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h.\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask\r
+ * to be used in the Options parameter of the USB_Init() function.\r
+ * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is\r
+ * currently initialized.\r
+ * - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library\r
+ * or user request processing code to exceed the strict USB timing requirements on control transfers.\r
+ * - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured\r
+ * after a Reset event, it should be altered to explicitly re-initialize all user endpoints.\r
+ * - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now\r
+ * returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified\r
+ * descriptor does not exist.\r
+ * - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the\r
+ * GetDescriptor function.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask\r
+ * to be used in the Options parameter of the USB_Init() function.\r
+ * - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and\r
+ * SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the\r
+ * current report. If sending a report to a multi-report device, the first byte of the report is automatically\r
+ * set to the report ID of the given report item.\r
+ * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is\r
+ * currently initialized.\r
+ *\r
+ *\r
+ * \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number\r
+ * string is required in Mass Storage devices, or devices which are to retain settings when moved between\r
+ * ports on a machine. As people were not changing the serial number value, this was causing conflicts and so\r
+ * the serial number descriptor has been removed from all but the Mass Storage demo, which requires it.\r
+ * - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated\r
+ * them. Projects built upon either demo should upgrade to the latest code.\r
+ * - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented.\r
+ * - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built\r
+ * on the MassStoreDemo code should update to the latest version.\r
+ * - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused\r
+ * problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade\r
+ * to the latest code.\r
+ * - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects\r
+ * built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code.\r
+ * - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should\r
+ * upgrade to the latest code.\r
+ * - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was\r
+ * previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update\r
+ * to the latest code.\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream.\r
+ * If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The\r
+ * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired\r
+ * timeout duration in ms.\r
+ * - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled\r
+ * and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and\r
+ * USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details.\r
+ * - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated\r
+ * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing\r
+ * the token NO_STREAM_CALLBACKS to the compiler using the -D switch.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream.\r
+ * If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The\r
+ * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired\r
+ * timeout duration in ms.\r
+ * - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures.\r
+ * - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated\r
+ * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing\r
+ * the token NO_STREAM_CALLBACKS to the compiler using the -D switch.\r
+ *\r
+ *\r
+ * \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations\r
+ * of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade\r
+ * to the latest code.\r
+ * - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where\r
+ * possible any existing devices upgrade to the latest bootloader code.\r
+ *\r
+ *\r
+ * \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the\r
+ * global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo\r
+ * should upgrade to the latest code.\r
+ * - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID\r
+ * demos should upgrade to the latest code.\r
+ * - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors.\r
+ * Projects built upon the HID demos should upgrade to the latest code.\r
+ * - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo\r
+ * should upgrade to the latest code.\r
+ * - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power.\r
+ * Projects built upon the AudioOut demo should upgrade to the latest code.\r
+ *\r
+ *\r
+ * \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0\r
+ *\r
+ * <b>Library Demos</b>\r
+ * - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To\r
+ * avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing\r
+ * projects should at least manually correct the BCD version numbers, or preferably update the descriptors to\r
+ * encode the version number in BCD format using the new macro.\r
+ * - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos\r
+ * based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the\r
+ * HID demos should also be updated accordingly.\r
+ * - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission.\r
+ * Failure to do this on projects which always or frequently send full packets will cause buffering issues on\r
+ * the host OS. All CDC user projects are advised to update their transmission routines in the same manner as\r
+ * the library CDC demos.\r
+ * - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected\r
+ * Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven\r
+ * demos should also update to properly save and restore the selected Endpoint/Pipe.\r
+ *\r
+ * <b>Non-USB Library Components</b>\r
+ * - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only\r
+ * compatible with avr-libc library versions newer than the time before the functionality of the deleted\r
+ * headers was available.\r
+ *\r
+ * <b>Device Mode</b>\r
+ * - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and\r
+ * functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API.\r
+ * The previously split Type and Index parameters are now passed as the original wValue parameter to the\r
+ * function, to make way for the USB specification wIndex parameter which is <i>not</i> the same as the\r
+ * previous Index parameter.\r
+ * - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the\r
+ * official USB specification. Existing code will need to be altered to use the new parameter names.\r
+ * - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more\r
+ * appropriate. It fires in an identical manner to the previously named event, thus the only change to be made\r
+ * is the event name itself in the user project.\r
+ * - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a\r
+ * pseudo-descriptor modelled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type\r
+ * descriptor as indicated in the USB specification, thus all device code must be updated accordingly.\r
+ * - The names of several Endpoint macros have been changed to be more consistent with the rest of the library,\r
+ * with no implementation changes. This means that existing code can be altered to use the new macro names\r
+ * with no other considerations required. See Endpoint.h for the new macro names.\r
+ * - The previous version of the MassStorage demo had an incorrect value in the SCSI_Request_Sense_Response_t\r
+ * structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this\r
+ * demo should correct the structure value to maintain compatibility across multiple OS platforms.\r
+ * - By default, the descriptor structures use the official USB specification names for the elements. Previous\r
+ * versions of the library used non-standard (but more verbose) names, which are still usable in the current\r
+ * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file\r
+ * documentation for more details.\r
+ *\r
+ * <b>Host Mode</b>\r
+ * - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its\r
+ * members renamed to the official USB specification names for requests. Existing code will need to be updated\r
+ * to use the new names.\r
+ * - The names of several Pipe macros have been changed to be more consistent with the rest of the library,\r
+ * with no implementation changes. This means that existing code can be altered to use the new macro names\r
+ * with no other considerations required. See Pipe.h for the new macro names.\r
+ * - By default, the descriptor structures use the official USB specification names for the elements. Previous\r
+ * versions of the library used non-standard (but more verbose) names, which are still usable in the current\r
+ * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file\r
+ * documentation for more details.\r
+ * - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h\r
+ * module documentation for the new macro names.\r
+ *\r
+ * <b>Dual Role Mode</b>\r
+ * - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing\r
+ * projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG\r
+ * header inside the library.\r
+ * - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has\r
+ * finished enumerating the device. Projects relying on the event only firing in Host mode should be updated\r
+ * so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST.\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_VIDPID VID and PID values\r
+ *\r
+ * The LUFA library uses VID/PID combinations generously donated by Atmel. The following VID/PID combinations\r
+ * are used within the LUFA demos, and thus may be re-used by derivations of each demo. Free PID values may be\r
+ * used by future LUFA demo projects.\r
+ *\r
+ * These VID/PID values should not be used in commercial designs under any circumstances. Private projects may\r
+ * use the following values freely, but must accept any collisions due to other LUFA derived private projects\r
+ * sharing identical values. It is suggested that private projects using interfaces compatible with existing\r
+ * demos share the save VID/PID value.\r
+ *\r
+ * <table>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * <b>VID</b>\r
+ * </td>\r
+ * <td>\r
+ * <b>PID</b>\r
+ * </td>\r
+ * <td>\r
+ * <b>Usage</b>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2040\r
+ * </td>\r
+ * <td>\r
+ * Test Application\r
+ * </td>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2041\r
+ * </td>\r
+ * <td>\r
+ * Mouse Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2042\r
+ * </td>\r
+ * <td>\r
+ * Keyboard Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2043\r
+ * </td>\r
+ * <td>\r
+ * Joystick Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2044\r
+ * </td>\r
+ * <td>\r
+ * CDC Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2045\r
+ * </td>\r
+ * <td>\r
+ * Mass Storage Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2046\r
+ * </td>\r
+ * <td>\r
+ * Audio Output Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2047\r
+ * </td>\r
+ * <td>\r
+ * Audio Input Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2048\r
+ * </td>\r
+ * <td>\r
+ * MIDI Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2049\r
+ * </td>\r
+ * <td>\r
+ * MagStripe Project\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204A\r
+ * </td>\r
+ * <td>\r
+ * CDC Bootloader\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204B\r
+ * </td>\r
+ * <td>\r
+ * USB to Serial Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204C\r
+ * </td>\r
+ * <td>\r
+ * RNDIS Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204D\r
+ * </td>\r
+ * <td>\r
+ * Keyboard and Mouse Combination Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204E\r
+ * </td>\r
+ * <td>\r
+ * Dual CDC Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x204F\r
+ * </td>\r
+ * <td>\r
+ * Generic HID Demo Application\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2060\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2061\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2062\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2063\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2064\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2065\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2066\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2067\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2068\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x2069\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206A\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206B\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206C\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206D\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206E\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * <tr>\r
+ * <td>\r
+ * 0x03EB\r
+ * </td>\r
+ * <td>\r
+ * 0x206F\r
+ * </td>\r
+ * <td>\r
+ * <i>Currently Unallocated</i>\r
+ * </td>\r
+ * </tr>\r
+ *\r
+ * </table>\r
+ */\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+\r
+/** \page Page_WritingBoardDrivers Writing LUFA Board Drivers\r
+ *\r
+ * LUFA ships with several basic pre-made board drivers, to control hardware present on the supported board\r
+ * hardware - such as Dataflash ICs, LEDs, Joysticks, or other hardware peripherals. When compiling an application\r
+ * which makes use of one or more board drivers located in LUFA/Drivers/Board, you must also indicate what board\r
+ * hardware you are using in your project makefile. This is done by defining the BOARD macro using the -D switch\r
+ * passed to the compiler, with a constant of BOARD_{Name}. For example <b>-DBOARD=BOARD_USBKEY</b> instructs the\r
+ * compiler to use the USBKEY board hardware drivers.\r
+ *\r
+ * If your application does not use *any* board level drivers, you can omit the definition of the BOARD macro.\r
+ * However, some users may wish to write their own custom board hardware drivers which are to remain compatible\r
+ * with the LUFA hardware API. To do this, the BOARD macro should be defined to the value BOARD_USER. This indicates\r
+ * that the board level drivers should be located in a folder named "Board" located inside the application's folder.\r
+ *\r
+ * When used, the driver stub files located in the DriverStubs folder should be copied to the user Board directory,\r
+ * and fleshed out to include the values and code needed to control the custom board hardware. Once done, the existing\r
+ * LUFA board level APIs (accessed in the regular LUFA/Drivers/Board/ folder) will redirect to the user board drivers,\r
+ * maintaining code compatibility and allowing for a different board to be selected through the project makefile with\r
+ * no code changes.\r
+ */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_Migration Migrating from Older Versions\r
- *\r
- * Below is migration information for updating existing projects based on previous versions of the LUFA library\r
- * to the next version released. It does not indicate all new additions to the library in each version change, only\r
- * areas relevant to making older projects compatible with the API changes of each new release.\r
- *\r
- * \section Sec_MigrationXXXXXX Migrating from 090605 to XXXXXX\r
- *\r
- * <b>All</b>\r
- * - The "simple scheduler" has been removed, as it was little more than an abtracted loop and caused much confusion. User\r
- * applications using the scheduler should switch to regular loops instead.\r
- * - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never\r
- * used in user applications. The library is available from the author's website for those wishing to still use it in their\r
- * applications.\r
- *\r
- * \section Sec_Migration090605 Migrating from 090510 to 090605\r
- *\r
- * <b>Device Mode</b>\r
- * - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing\r
- * projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can\r
- * manage the control endpoint via interrupts automatically by compiling with the INTERRUPT_CONTROL_ENDPOINT token defined.\r
- * - The DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory\r
- * address.\r
- * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See\r
- * \ref Group_Events for new API details.\r
- * - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular\r
- * function signatures of a function accepting no arguments and returning a uint8_t value.\r
- * - The Event_DeviceError() event no longer exists, as its sole caller (unlinked USB_GetDescriptor() function) now produces a\r
- * compilation error rather than a runtime error. The StdDescriptors.c file no longer exists as a result, and should be removed\r
- * from project makefiles.\r
- * - The USB_GetDescriptor() function has been renamed to CALLBACK_USB_GetDescriptor() to be in line with the new CALLBACK_ function\r
- * prefixes for functions which *must* be implemented in the user application.\r
- *\r
- * <b>Host Mode</b>\r
- * - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing\r
- * projects using interrupts on non-control pipes should switch to polling.\r
- * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See\r
- * \ref Group_Events for new API details.\r
- * - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular\r
- * function signatures of a function accepting no arguments and returning a uint8_t value.\r
- * - The DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with\r
- * regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a uint8_t value.\r
- *\r
- *\r
- * \section Sec_Migration090510 Migrating from 090401 to 090510\r
- *\r
- * <b>All</b>\r
- * - The ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all\r
- * BUTTLOADTAG elements, or download and extract ButtLoadTag.h header from the ButtLoad project.\r
- * - The Drivers/AT90USBXXX directory has been renamed to Drivers/Peripheral.\r
- * - The Serial_Stream driver has been renamed to SerialStream to remain consistent with the rest of the library naming scheme.\r
- * - The HWB driver has changed to the Buttons driver. See the board Buttons driver documentation for the new API.\r
- *\r
- * <b>Dual Role Mode</b>\r
- * - The USB_PowerOnFail even has been renamed to USB_InitFailure.\r
- * - The functions in OTG.h have been renamed to remain more consistent with the library API. See the functions in OTG.h for more\r
- * details.\r
- *\r
- * <b>Library Demos</b>\r
- * - Most demos, bootloaders and applications have had significant changes from previous versions. Applications built off of any\r
- * library demos should update to the latest versions.\r
- *\r
- * <b>Device Mode</b>\r
- * - The Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the Endpoint_ClearIN(), Endpoint_ClearOUT() \r
- * macros. See Endpoint.h documentation for more details on the new endpoint management macros.\r
- * - The Endpoint_ReadWriteAllowed() macro has been renamed to Endpoint_IsReadWriteAllowed() to be more consistent with the rest of\r
- * the API naming scheme.\r
- * - The Endpoint_IsSetupINReady() and Endpoint_IsSetupOutReceived() macros have been renamed to Endpoint_IsINReady() and\r
- * Endpoint_IsOUTReceived() respectively.\r
- * - The Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived().\r
- * - The Endpoint_ClearSetupReceived() macro has been renamed to Endpoint_ClearSETUP().\r
- * - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as Endpoint_Read_Word()) have\r
- * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions.\r
- * - The USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of\r
- * the Control Request header as all Control Request header data is now preloaded by the library and made available in the\r
- * USB_ControlRequest structure.\r
- * - The FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to CONTROL_ONLY_DEVICE.\r
- * - The STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically.\r
- * - The values of the Endpoint_Stream_RW_ErrorCodes_t and Endpoint_ControlStream_RW_ErrorCodes_t enums have had the "ERROR_" portion\r
- * of their names removed.\r
- *\r
- * <b>Host Mode</b>\r
- * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on\r
- * other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called\r
- * in existing projects where the Control pipe is to be operated on.\r
- * - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer\r
- * need to manage this manually when calling the USB management task.\r
- * - The Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See\r
- * Pipe.h documentation for more details on the new pipe management macros.\r
- * - The Pipe_ReadWriteAllowed() macro has been renamed to Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API\r
- * naming scheme.\r
- * - The Pipe_IsSetupINReceived() and Pipe_IsOutReady() macros have been renamed to Pipe_IsINReceived() and Pipe_IsOUTReady()\r
- * respectively.\r
- * - The new Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous Pipe_ClearSetupOUT() macro.\r
- * - The Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent().\r
- * - The Pipe_ClearSetupSent() macro is no longer applicable and should be removed.\r
- * - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as Pipe_Read_Word()) have\r
- * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions.\r
- * - The Host_IsResetBusDone() macro has been renamed to Host_IsBusResetComplete().\r
- * - The Pipe_Ignore_Word() and Pipe_Ignore_DWord() functions have been renamed to Pipe_Discard_Word() and Pipe_Discard_DWord() to remain\r
- * consistent with the rest of the pipe API.\r
- * - It is no longer needed to manually include the headers from LUFA/Drivers/USB/Class, as they are now included along with the rest\r
- * of the USB headers when LUFA/Drivers/USB/USB.h is included.\r
- * - Functions in the ConfigDescriptor.h header file no longer have "Host_" as part of their names.\r
- * - The ProcessHIDReport() has been renamed to USB_ProcessHIDReport(), GetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo()\r
- * and SetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo().\r
- * - The values of the DSearch_Return_ErrorCodes_t and DSearch_Comp_Return_ErrorCodes_t enums have had their respective "Descriptor_Search"\r
- * and "Descriptor_Search_Comp" prefixes changed to all caps.\r
- * - The USB_HostRequest global has been renamed to USB_ControlRequest, and is used in Device mode also. The USB_Host_Request_Header_t\r
- * structure type has been renamed to USB_Request_Header_t.\r
- * - The values of the Pipe_Stream_RW_ErrorCodes_t enum have had the "ERROR_" portion of their names removed.\r
- *\r
- *\r
- * \section Sec_Migration090401 Migrating from 090209 to 090401\r
- *\r
- * <b>All</b>\r
- * - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant "F_CLOCK",\r
- * defined in the project makefile and passed to the compiler via the -D switch.\r
- * - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the\r
- * EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called.\r
- * - As the avr-libc macro has been corrected in recent avr-libc distributions, the SetSystemClockPrescaler() macro has been removed.\r
- * Include <avr/power.h> and call clock_prescale_set(clock_div_1); instead on recent avr-libc distributions.\r
- *\r
- * <b>Library Demos</b>\r
- * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission.\r
- * - Most demos, bootloaders and applications have had their control request handling code corrected, to properly send the status\r
- * stage in all handled requests. If you are using code based off one of the library demos, bootloaders or applications, you should\r
- * update to the latest revisions.\r
- *\r
- * <b>Non-USB Library Components</b>\r
- * - The ATTR_ALWAYSINLINE function attribute macro has been renamed to ATTR_ALWAYS_INLINE.\r
- * - Custom board Dataflash drivers now require the implementation of Dataflash_SelectChipFromPage() and Dataflash_SendAddressBytes().\r
- *\r
- * <b>Device Mode</b>\r
- * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded\r
- * to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the \r
- * NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the FEATURELESS_CONTROL_ONLY_DEVICE token with no further\r
- * modifications required.\r
- *\r
- *\r
- * \section Sec_Migration090209 Migrating from 081217 to 090209\r
- *\r
- * <b>Device Mode</b>\r
- * - The ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of ENDPOINT_TOTAL_ENDPOINTS.\r
- * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user\r
- * makefile if desired to restore the previous 50ms timeout.\r
- *\r
- * <b>Host Mode</b>\r
- * - The PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of PIPE_TOTAL_ENDPOINTS.\r
- * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user\r
- * makefile if desired to restore the previous 50ms timeout.\r
- * - The USB_DeviceEnumerationFailed event now contains a second "SubErrorCode" parameter, giving the error code of the function\r
- * which failed.\r
- * - The HID_PARSE_Sucessful enum member constant has been corrected to HID_PARSE_Successful.\r
- *\r
- * <b>Non-USB Library Components</b>\r
- * - The previous SPI_SendByte() functionality is now located in SPI_TransferByte(). SPI_SendByte() now discards the return byte\r
- * for speed, to compliment the new SPI_ReceiveByte() function. If two-way SPI transfers are required, calls to SPI_SendByte()\r
- * should be changed to SPI_TransferByte().\r
- * - The serial driver now sets the Tx line as an output explicitly, and enables the pullup of the Rx line.\r
- * - The Serial_Init() and SerialStream_Init() functions now take a second DoubleSpeed parameter, which indicates if the USART\r
- * should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at\r
- * the given AVR clock speed.\r
- *\r
- * <b>Library Demos</b>\r
- * - Most library demos have been enhanced and/or had errors corrected. All users of all demos should upgrade their codebase to\r
- * the latest demo versions.\r
- *\r
- *\r
- * \section Sec_Migration171208 Migrating from V1.5.3 to 081217\r
- *\r
- * <b>All</b>\r
- * - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names,\r
- * have been changed to LUFA.\r
- *\r
- * <b>Library Demos</b>\r
- * - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding\r
- * parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version.\r
- * - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and\r
- * KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects\r
- * built on either "WithParser" demo should update to the latest code.\r
- * - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not\r
- * recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes,\r
- * as it is neither a full nor a standards compliant implementation.\r
- *\r
- * <b>Non-USB Library Components</b>\r
- * - The Serial_IsCharRecieved() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h.\r
- *\r
- * <b>Device Mode</b>\r
- * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask\r
- * to be used in the Options parameter of the USB_Init() function.\r
- * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is\r
- * currently initialized.\r
- * - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library\r
- * or user request processing code to exceed the strict USB timing requirements on control transfers.\r
- * - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured\r
- * after a Reset event, it should be altered to explicitly re-initialize all user endpoints.\r
- * - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now\r
- * returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified\r
- * descriptor does not exist.\r
- * - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the\r
- * GetDescriptor function.\r
- *\r
- * <b>Host Mode</b>\r
- * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask\r
- * to be used in the Options parameter of the USB_Init() function.\r
- * - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and\r
- * SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the\r
- * current report. If sending a report to a multi-report device, the first byte of the report is automatically\r
- * set to the report ID of the given report item.\r
- * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is\r
- * currently initialized.\r
- *\r
- *\r
- * \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3\r
- *\r
- * <b>Library Demos</b>\r
- * - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number\r
- * string is required in Mass Storage devices, or devices which are to retain settings when moved between\r
- * ports on a machine. As people were not changing the serial number value, this was causing conflicts and so\r
- * the serial number descriptor has been removed from all but the Mass Storage demo, which requires it.\r
- * - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated\r
- * them. Projects built upon either demo should upgrade to the latest code.\r
- * - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented.\r
- * - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built\r
- * on the MassStoreDemo code should update to the latest version.\r
- * - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused\r
- * problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade\r
- * to the latest code.\r
- * - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects\r
- * built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code.\r
- * - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should\r
- * upgrade to the latest code.\r
- * - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was\r
- * previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update\r
- * to the latest code.\r
- *\r
- * <b>Device Mode</b>\r
- * - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream.\r
- * If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The\r
- * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired\r
- * timeout duration in ms.\r
- * - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled\r
- * and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and\r
- * USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details.\r
- * - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated\r
- * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing\r
- * the token NO_STREAM_CALLBACKS to the compiler using the -D switch.\r
- *\r
- * <b>Host Mode</b>\r
- * - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream.\r
- * If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The\r
- * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired\r
- * timeout duration in ms.\r
- * - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures.\r
- * - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated\r
- * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing\r
- * the token NO_STREAM_CALLBACKS to the compiler using the -D switch.\r
- *\r
- *\r
- * \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2\r
- *\r
- * <b>Library Demos</b>\r
- * - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations\r
- * of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade\r
- * to the latest code.\r
- * - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where\r
- * possible any existing devices upgrade to the latest bootloader code.\r
- *\r
- *\r
- * \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1\r
- *\r
- * <b>Library Demos</b>\r
- * - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the\r
- * global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo\r
- * should upgrade to the latest code.\r
- * - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID\r
- * demos should upgrade to the latest code.\r
- * - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors.\r
- * Projects built upon the HID demos should upgrade to the latest code.\r
- * - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo\r
- * should upgrade to the latest code.\r
- * - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power.\r
- * Projects built upon the AudioOut demo should upgrade to the latest code.\r
- *\r
- *\r
- * \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0\r
- *\r
- * <b>Library Demos</b>\r
- * - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To\r
- * avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing\r
- * projects should at least manually correct the BCD version numbers, or preferably update the descriptors to\r
- * encode the version number in BCD format using the new macro.\r
- * - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos\r
- * based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the\r
- * HID demos should also be updated accordingly.\r
- * - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission.\r
- * Failure to do this on projects which always or frequently send full packets will cause buffering issues on\r
- * the host OS. All CDC user projects are advised to update their transmission routines in the same manner as\r
- * the library CDC demos.\r
- * - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected\r
- * Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven\r
- * demos should also update to properly save and restore the selected Endpoint/Pipe.\r
- *\r
- * <b>Non-USB Library Components</b>\r
- * - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only\r
- * compatible with avr-libc library versions newer than the time before the functionality of the deleted\r
- * headers was available.\r
- *\r
- * <b>Device Mode</b>\r
- * - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and\r
- * functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API.\r
- * The previously split Type and Index parameters are now passed as the original wValue parameter to the\r
- * function, to make way for the USB specification wIndex parameter which is <i>not</i> the same as the\r
- * previous Index parameter.\r
- * - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the\r
- * official USB specification. Existing code will need to be altered to use the new parameter names.\r
- * - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more\r
- * appropriate. It fires in an identical manner to the previously named event, thus the only change to be made\r
- * is the event name itself in the user project.\r
- * - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a\r
- * pseudo-descriptor modelled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type\r
- * descriptor as indicated in the USB specification, thus all device code must be updated accordingly.\r
- * - The names of several Endpoint macros have been changed to be more consistent with the rest of the library,\r
- * with no implementation changes. This means that existing code can be altered to use the new macro names\r
- * with no other considerations required. See Endpoint.h for the new macro names.\r
- * - The previous version of the MassStorage demo had an incorrect value in the SCSI_Request_Sense_Response_t\r
- * structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this\r
- * demo should correct the structure value to maintain compatibility across multiple OS platforms.\r
- * - By default, the descriptor structures use the official USB specification names for the elements. Previous\r
- * versions of the library used non-standard (but more verbose) names, which are still usable in the current\r
- * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file\r
- * documentation for more details.\r
- *\r
- * <b>Host Mode</b>\r
- * - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its\r
- * members renamed to the official USB specification names for requests. Existing code will need to be updated\r
- * to use the new names.\r
- * - The names of several Pipe macros have been changed to be more consistent with the rest of the library,\r
- * with no implementation changes. This means that existing code can be altered to use the new macro names\r
- * with no other considerations required. See Pipe.h for the new macro names.\r
- * - By default, the descriptor structures use the official USB specification names for the elements. Previous\r
- * versions of the library used non-standard (but more verbose) names, which are still usable in the current\r
- * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file\r
- * documentation for more details.\r
- * - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h\r
- * module documentation for the new macro names.\r
- *\r
- * <b>Dual Role Mode</b>\r
- * - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing\r
- * projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG\r
- * header inside the library.\r
- * - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has\r
- * finished enumerating the device. Projects relying on the event only firing in Host mode should be updated\r
- * so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST.\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_VIDPID VID and PID values\r
- *\r
- * The LUFA library uses VID/PID combinations generously donated by Atmel. The following VID/PID combinations\r
- * are used within the LUFA demos, and thus may be re-used by derivations of each demo. Free PID values may be\r
- * used by future LUFA demo projects.\r
- *\r
- * These VID/PID values should not be used in commercial designs under any circumstances. Private projects may\r
- * use the following values freely, but must accept any collisions due to other LUFA derived private projects\r
- * sharing identical values. It is suggested that private projects using interfaces compatible with existing\r
- * demos share the save VID/PID value.\r
- *\r
- * <table>\r
- *\r
- * <tr>\r
- * <td>\r
- * <b>VID</b>\r
- * </td>\r
- * <td>\r
- * <b>PID</b>\r
- * </td>\r
- * <td>\r
- * <b>Usage</b>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2040\r
- * </td>\r
- * <td>\r
- * Test Application\r
- * </td>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2041\r
- * </td>\r
- * <td>\r
- * Mouse Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2042\r
- * </td>\r
- * <td>\r
- * Keyboard Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2043\r
- * </td>\r
- * <td>\r
- * Joystick Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2044\r
- * </td>\r
- * <td>\r
- * CDC Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2045\r
- * </td>\r
- * <td>\r
- * Mass Storage Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2046\r
- * </td>\r
- * <td>\r
- * Audio Output Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2047\r
- * </td>\r
- * <td>\r
- * Audio Input Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2048\r
- * </td>\r
- * <td>\r
- * MIDI Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2049\r
- * </td>\r
- * <td>\r
- * MagStripe Project\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204A\r
- * </td>\r
- * <td>\r
- * CDC Bootloader\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204B\r
- * </td>\r
- * <td>\r
- * USB to Serial Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204C\r
- * </td>\r
- * <td>\r
- * RNDIS Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204D\r
- * </td>\r
- * <td>\r
- * Keyboard and Mouse Combination Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204E\r
- * </td>\r
- * <td>\r
- * Dual CDC Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x204F\r
- * </td>\r
- * <td>\r
- * Generic HID Demo Application\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2060\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2061\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2062\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2063\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2064\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2065\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2066\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2067\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2068\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x2069\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206A\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206B\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206C\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206D\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206E\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * <tr>\r
- * <td>\r
- * 0x03EB\r
- * </td>\r
- * <td>\r
- * 0x206F\r
- * </td>\r
- * <td>\r
- * <i>Currently Unallocated</i>\r
- * </td>\r
- * </tr>\r
- *\r
- * </table>\r
- */\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
-\r
-/** \page Page_WritingBoardDrivers Writing LUFA Board Drivers\r
- *\r
- * LUFA ships with several basic pre-made board drivers, to control hardware present on the supported board\r
- * hardware - such as Dataflash ICs, LEDs, Joysticks, or other hardware peripherals. When compiling an application\r
- * which makes use of one or more board drivers located in LUFA/Drivers/Board, you must also indicate what board\r
- * hardware you are using in your project makefile. This is done by defining the BOARD macro using the -D switch\r
- * passed to the compiler, with a constant of BOARD_{Name}. For example <b>-DBOARD=BOARD_USBKEY</b> instructs the\r
- * compiler to use the USBKEY board hardware drivers.\r
- *\r
- * If your application does not use *any* board level drivers, you can omit the definition of the BOARD macro.\r
- * However, some users may wish to write their own custom board hardware drivers which are to remain compatible\r
- * with the LUFA hardware API. To do this, the BOARD macro should be defined to the value BOARD_USER. This indicates\r
- * that the board level drivers should be located in a folder named "Board" located inside the application's folder.\r
- *\r
- * When used, the driver stub files located in the DriverStubs folder should be copied to the user Board directory,\r
- * and fleshed out to include the values and code needed to control the custom board hardware. Once done, the existing\r
- * LUFA board level APIs (accessed in the regular LUFA/Drivers/Board/ folder) will redirect to the user board drivers,\r
- * maintaining code compatibility and allowing for a different board to be selected through the project makefile with\r
- * no code changes.\r
- */\r