ChangeLog.txt 76 KB
Newer Older
1
2
3
4
5
/** \file
 *
 *  This file contains special DoxyGen information for the generation of the main page and other special
 *  documentation pages. It is not a project source file.
 */
6

7
 /** \page Page_ChangeLog Project Changelog
8
9
10
  *
  *  \section Sec_ChangeLogXXXXXX Version XXXXXX
  *
11
  *  <b>New:</b>
12
  *  - Added incomplete MIDIToneGenerator project
13
  *  - Added new Relay Controller Board project (thanks to OBinou)
14
  *  - Added board hardware driver support for the Teensy, USBTINY MKII, Benito and JM-DB-U2 lines of third party USB AVR boards
15
16
  *
  *  <b>Changed:</b>
17
  *  - AVRISP programmer project now has a more robust timeout system, allowing for an increase of the software USART speed
18
  *    for PDI and TPI programming
19
  *  - Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond
20
  *  - Webserver project now uses the board LEDs to indicate the current IP configuration state
21
  *  - Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired
22
  *  - Increased throughput of the USBtoSerial demo on systems that send multiple bytes per packet (thanks to Opendous Inc.)
23
  *  - Double bank CDC endpoints in the XPLAIN Bridge project, re-enable JTAG once the mode selection pin has been sampled.
24
25
  *  - Standardized the naming scheme given to configuration descriptor sub-elements in the Device mode demos, bootloaders
  *    and projects
26
  *  - All Class Driver Host mode demos now correctly set the board LEDs to READY once the enumeration process has completed
27
  *  - Added LIBUSB_FILTERDRV_COMPAT compile time option to the AVRISP programmer project to make the code compatible with Windows
28
  *    builds of avrdude at the expense of AVRStudio compatibility
29
  *  - Removed two-step endpoint/pipe bank clear and switch sequence for smaller, faster endpoint/pipe code
30
31
  *
  *  <b>Fixed:</b>
32
  *  - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
33
  *  - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
34
35
36
37
  *  - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus
  *  - Fixed ADC routines not correctly returning the last result when multiple channels were read
  *  - Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the
  *    U4 series USB AVR parts
38
  *  - Fixed LowLevel MassStorage demo broken on the U2 series USB AVRs due to unsupported double-banked endpoint modes used
39
  *  - Fixed compilation error in the AudioInput demos when MICROPHONE_BIASED_TO_HALF_RAIL is defined (thanks to C. Scott Ananian)
40
  *  - Fixed incorrect definition of HID_ALIGN_DATA() causing incorrect HID report item data alignment
41
42
  *  - Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending
  *    a valid session ID to the device
43
  *  - Removed invalid dfu and flip related targets from the bootloaders - bootloaders can only be replaced with an external programmer
44
  *  - Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host
45
  *
Dean Camera's avatar
Dean Camera committed
46
47
  *  \section Sec_ChangeLog100219 Version 100219
  *
48
  *  <b>New:</b>
49
  *  - Added TPI programming support for 6-pin ATTINY devices to the AVRISP programmer project (thanks to Tom Light)
50
51
  *  - Added command timeout counter to the AVRISP project so that the device no longer freezes when incorrectly connected
  *    to a target
52
53
  *  - Added new TemperatureDataLogger application, a USB data logger which writes to the device's dataflash and appears to
  *    the host as a standard Mass Storage device when inserted
54
55
56
  *  - Added MIDI event packing support to the MIDI Device and Host mode Class drivers, allowing for multiple MIDI events to
  *    sent or received in packed form in a single USB packet
  *  - Added new MIDI send buffer flush routines to the MIDI Device and Host mode Class drivers, to flush packed events
57
  *  - Added master mode hardware TWI driver for easy TWI peripheral control
58
59
  *  - Added ADC MUX masks for the standard ADC input channels on all AVR models with an ADC, altered demos to use these masks
  *    as on some models, the channel number is not identical to its single-ended ADC MUX mask
60
  *  - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library
61
62
  *  - New BOARD value option BOARD_NONE (equivelent to not specifying BOARD) which will remove all board hardware drivers which
  *    do not adversely affect the code operation (currently only the LEDs driver)
63
64
  *  - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) and LED report masks (KEYBOARD_LED_*) to the HID class driver and
  *    Keyboard demos
65
  *  - Added .5MHz recovery clock to the AVRISP programmer project when in ISP programming mode to correct mis-set fuses
66
67
  *
  *  <b>Changed:</b>
68
  *  - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors
69
  *  - Renamed the AVRISP project folder to AVRISP-MKII to reduce confusion
70
71
  *  - Renamed the RESET_LINE_* makefile tokens in the AVRISP MKII Project to AUX_LINE_*, as they are not always used for target
  *    reset
72
73
  *  - Changed over the MassStorageKeyboard Class driver device demo to use Start of Frame events rather than a timer to keep track
  *    of elapsed milliseconds
74
  *  - Inlined currently unused (but standardized) maintenance functions in the Device and Host Class drivers to save space
75
76
  *  - The XPLAINBridge project now selects between a USB to Serial bridge and a PDI programmer on startup, reading the JTAG port's
  *    TDI pin to determine which mode to use
77
  *  - Removed the stream example code from the Low Level VirtualSerial demos, as they were buggy and only served to add clutter
78
79
  *
  *  <b>Fixed:</b>
80
  *  - Fixed AVRISP project not able to enter programming mode when ISP protocol is used
81
  *  - Fixed AVRISP PDI race condition where the guard time between direction changes could be interpreted as a start bit
82
  *  - Fixed ADC_IsReadingComplete() returning an inverted result
83
  *  - Fixed blocking CDC streams not aborting when the host is disconnected
84
85
  *  - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands
  *  - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa)
86
  *  - Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos (thanks to Renaud Cerrato)
87
88
  *  - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers
  *  - Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders
89
  *  - Fixed Benito project not resetting the target AVR automatically when programming has completed
90
91
  *  - Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming
  *    ranges are specified (thanks to Thomas Bleeker)
92
  *  - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two seperate pipes, not one half-duplex pipe
93
  *  - Fixed Pipe_IsEndpointBound() not taking the endpoint's direction into account
94
  *  - Fixed EEPROM and FLASH ISP programming in the AVRISP project
95
  *  - Fixed incorrect values of USB_CONFIG_ATTR_SELFPOWERED and USB_CONFIG_ATTR_REMOTEWAKEUP tokens (thanks to Claus Christensen)
96
  *  - Fixed SerialStream driver blocking while waiting for characters to be received instead of returning EOF
97
  *  - Fixed SerialStream driver not setting stdin to the created serial stream (thanks to Mike Alexander)
98
  *  - Fixed USB_GetHIDReportSize() returning the number of bits in the specified report instead of bytes
99
  *  - Fixed AVRISP project not extending the command delay after each successful page/word/byte program
100
  *  - Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baudrates (thanks to Renaud Cerrato)
101
102
103
104
  *
  *  \section Sec_ChangeLog091223 Version 091223
  *
  *  <b>New:</b>
105
  *  - Added activity LED indicators to the AVRISP project to indicate when the device is busy processing a command
106
  *  - The USB target family and allowable USB mode tokens are now public and documented (USB_CAN_BE_*, USB_SERIES_*_AVR)
107
108
  *  - Added new XPLAIN USB to Serial Bridge project (thanks to John Steggall for initial proof-of-concept, David Prentice
  *    and Peter Danneger for revised software USART code)
109
  *  - Added new RNDIS Ethernet Host LowLevel demo
110
  *  - Added new RNDIS Ethernet Host Class Driver
111
112
  *  - Added new RNDIS Ethernet Host ClassDriver demo
  *  - Added CDC_Host_Flush() function to the CDC Host Class driver to flush sent data to the attached device
113
  *  - Added PDI programming support for XMEGA devices to the AVRISP programmer project (thanks to Justin Mattair)
114
115
  *  - Added support for the XPLAIN board Dataflash, with new XPLAIN_REV1 board target for the different dataflash used
  *    on the first revision boards compared to the one mounted on later revisions
116
117
  *  - Added new HID_ALIGN_DATA() macro to return the pre-retrieved value of a HID report item, left-aligned to a given datatype
  *  - Added new PreviousValue to the HID Report Parser report item structure, for easy monitoring of previous report item values
118
  *  - Added new EVK527 board target
119
  *  - Added new USB_Host_GetDeviceStringDescriptor() convenience function
120
  *  - Added new LEDNotification project to the library, to give a visual LED notification on new events from the host
121
  *  - Added new NO_DEVICE_REMOTE_WAKEUP and NO_DEVICE_SELF_POWER compile time options
122
123
124
125
  *
  *  <b>Changed:</b>
  *  - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of keycodes
  *    as this relied on non-standard OS driver behaviour to repeat key groups
126
127
128
  *  - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class
  *    driver common defines, rather than being defined in the Host mode Class driver section only
  *  - The USB_MODE_HOST token is now defined even when host mode is not available
129
130
  *  - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to
  *    indicate the report type to generate
131
132
133
  *  - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function
  *    is called when no host/device is connected where possible
  *  - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line
134
135
136
  *    with the rest of the library errorcodes
  *  - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero,
  *    which some devices use instead of Note Off messages (thanks to Robin Green)
137
138
  *  - The CDC demos are now named "VirtualSerial" instead to indicate the demos' function rather than its implemented USB class,
  *    to reduce confusion and to be in line with the rest of the LUFA demos
139
  *  - The SImage_Host_SendBlockHeader() and SImage_Host_ReceiveBlockHeader() Still Image Host Class driver functions are now public
140
141
142
  *
  *  <b>Fixed:</b>
  *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver
143
  *  - Fixed incorrect values for REPORT_ITEM_TYPE_* enum values causing corrupt data in the HID Host Parser
144
  *  - Fixed misnamed SI_Host_USBTask() and SI_Host_ConfigurePipes() functions
145
146
  *  - Fixed broken USB_GetNextDescriptor() function causing the descriptor to jump ahead double the expected amount
  *  - Fixed Pipe_IsEndpointBound() not masking the given Endpoint Address against PIPE_EPNUM_MASK
147
  *  - Fixed host state machine not enabling Auto VBUS mode when HOST_DEVICE_SETTLE_DELAY_MS is set to zero
148
149
  *  - Fixed misnamed Pipe_SetPipeToken() macro for setting a pipe's direction
  *  - Fixed CDCHost failing on devices with bidirectional endpoints
150
  *  - Fixed USB driver failing to define the PLL prescaler mask for the ATMEGA8U2 and ATMEGA16U2
151
  *  - Fixed HID Parser not distributing the Usage Min and Usage Max values across an array of report items
152
153
  *  - Fixed Mass Storage Host Class driver and Low Level demo not clearing the error condition if an attached device returns a
  *    STALL to a GET MAX LUN request (thanks to Martin Luxen)
154
155
156
  *  - Fixed TeensyHID bootloader not properly shutting down the USB interface to trigger a disconnection on the host before resetting
  *  - Fixed MassStorageHost Class driver demo not having USB_STREAM_TIMEOUT_MS compile time option set properly to prevent slow 
  *    devices from timing out the data pipes
157
  *  - Fixed the definition of the Endpoint_BytesInEndpoint() macro for the U4 series AVR parts
158
159
  *  - Fixed MIDI host Class driver MIDI_Host_SendEventPacket() routine not properly checking for Pipe ready before writing
  *  - Fixed use of deprecated struct initializers, removed library unused parameter warnings when compiled with -Wextra enabled
160
  *  - Fixed Still Image Host Class driver truncating the PIMA response code (thanks to Daniel Seibert)
161
162
  *  - Fixed USB_CurrentMode not being reset to USB_MODE_NONE when the USB interface is shut down and both Host and Device modes can be
  *    used (thanks to Daniel Levy)
163
  *  - Fixed TeensyHID bootloader not enumerating to the host correctly (thanks to Clint Fisher)
164
  *  - Fixed AVRISP project timeouts not checking for the correct timeout period (thanks to Carl Ott)
165
  *  - Fixed STK525 Dataflash driver using incorrect bit-shifting for Dataflash addresses (thanks to Tim Mitchell)
166
  *
Dean Camera's avatar
Dean Camera committed
167
  *  \section Sec_ChangeLog091122 Version 091122
168
169
  *
  *  <b>New:</b>
170
  *  - Added new Dual Role Keyboard/Mouse demo
171
172
  *  - Added new HID_HOST_BOOT_PROTOCOL_ONLY compile time token to reduce the size of the HID Host Class driver when
  *    Report protocol is not needed
173
  *  - Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver
174
  *  - Added new CDC/Mouse ClassDriver device demo
175
  *  - Added new Joystick Host ClassDriver and LowLevel demos
176
177
  *  - Added new Printer Host mode Class driver
  *  - Added new Printer Host mode ClassDriver demo
Dean Camera's avatar
Dean Camera committed
178
179
  *  - Added optional support for double banked endpoints and pipes in the Device and Host mode Class drivers
  *  - Added new stream creation function to the CDC Class drivers, to easily make standard I/O streams from CDC Class driver instances
180
181
  *
  *  <b>Changed:</b>
182
183
  *  - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library
  *  - MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs
Dean Camera's avatar
Dean Camera committed
184
  *  - Cleanups to the Device mode Mass Storage demo application SCSI routines
185
  *  - Changed Audio Class driver sample read/write functions to be inline, to reduce the number of cycles needed to transfer
186
  *    samples to and from the device (allowing more time for sample processing and output)
187
  *  - Audio class Device mode demos now work at both 16MHz and 8MHz, rather than just at 8MHz
188
189
  *  - The previous USBtoSerial demo has been moved into the projects directory, as it was just a modified CDC demo
  *  - The Endpoint/Pipe functions now use the const qualifier on the input buffer
190
191
192
193
  *  - Changed the CALLBACK_HIDParser_FilterHIDReportItem() callback to pass a HID_ReportItem_t rather than just the current
  *    item's attributes, to expose more information on the item (including it's type, collection path, etc.)
  *  - Changed MouseHostWithParser demos to check that the report items have a Mouse usage collection as a parent at some point,
  *    to prevent Joysticks from enumerating with the demo
194
  *  - Corrected the name of the misnamed USB_GetDeviceConfigDescriptor() function to USB_Host_GetDeviceConfigDescriptor().
195
  *  - Keyboard LowLevel/ClassDriver demos now support multiple simultaneous keypresses (up to 6) per report
196
197
198
199
  *
  *  <b>Fixed:</b>
  *  - Fixed PrinterHost demo returning invalid Device ID data when the attached device does not have a
  *    device ID (thanks to Andrei Krainev)
200
  *  - Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons eaiser
201
202
  *  - Fixed issue in the HID Host class driver's HID_Host_SendReportByID() routine using the incorrect mode (control/pipe)
  *    to send report to the attached device
203
  *  - Fixed ClassDriver AudioOutput device demo not selecting an audio output mode
204
  *  - Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos' descriptors
205
  *  - Fixed incorrect event name rule in demo/project/bootloader makefiles
206
  *  - Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called
207
  *  - Corrected HID descriptor in the Joystick Device demos - buttons should be placed outside the pointer collection
208
  *  - Fixed HID report parser collection paths invalid due to misplaced semicolon in the free path item search loop
209
  *  - Fixed HID host Class driver report send/receive report broken when issued through the control pipe
210
  *  - Fixed HOST_STATE_AS_GPIOR compile time option being ignored when in host mode (thanks to David Lyons)
211
  *  - Fixed LowLevel Keyboard demo not saving the issues report only after it has been sent to the host
212
  *  - Fixed Endpoint_Write_Control_Stream_* functions not sending a terminating IN when given data Length is zero
213
214
215
216
  *
  *  \section Sec_ChangeLog090924 Version 090924
  *
  *  <b>New:</b>
217
  *  - Added new host mode class drivers and matching demos to the library for rapid application development
218
  *  - Added flag to the HID report parser to indicate if a device has multiple reports
219
220
  *  - Added new EVENT_USB_Device_StartOfFrame() event, controlled by the new USB_Device_EnableSOFEvents() and
  *    USB_Device_DisableSOFEvents() macros to give bus-synchronised millisecond interrupts when in USB device mode
221
  *  - Added new Endpoint_SetEndpointDirection() macro for bidirectional endpoints
222
  *  - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer
223
  *  - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use
224
225
  *  - Added new CDC_Device_Flush() command to the device mode CDC Class driver to flush Device->Host data
  *  - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set
226
227
  *  - Added new callback to the HID report parser, so that the user application can filter only the items it is interested
  *    in to be stored into the HIDReportInfo structure to save RAM
228
229
230
  *  - Added support for the officially recommended external peripheral layout for the BUMBLEB board (thanks to Dave Fletcher)
  *  - Added new Pipe_IsFrozen() macro to determine if the currently selected pipe is frozen
  *  - Added new USB_GetHIDReportSize() function to the HID report parser to retrieve the size of a given report by its ID
231
  *  - Added new combined Mass Storage and Keyboard demo (thanks to Matthias Hullin)
232
  *  
233
  *  <b>Changed:</b>
234
  *  - SetIdle requests to the HID device driver with a 0 idle period (send changes only) now only affect the requested
235
236
  *    HID interface within the device, not all HID interfaces
  *  - Added explicit attribute masks to the device mode demos' descriptors
237
  *  - Added return values to the CDC and MIDI class driver transmit functions
238
  *  - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size
239
  *  - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability
240
241
  *  - Added new "Common" section to the class drivers, to hold all mode-independant definitions for clarity
  *  - Moved SCSI command/sense constants into the Mass Storage Class driver, instead of the user-code
242
  *  - Altered the SCSI commands in the LowLevel Mass Storage Host to save on FLASH space by reducing function calls
243
244
  *  - Changed the parameters and behaviour of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks
  *    and data validations internally, to simplify user code
245
  *  - Changed HIDParser to only zero out important values in the Parsed HID Report Item Information structure to save cycles
246
247
  *  - The HID report parser now always processed FEATURE items - HID_ENABLE_FEATURE_PROCESSING token now has no effect
  *  - The HID report parser now always ignores constant-data items, HID_INCLUDE_CONSTANT_DATA_ITEMS token now has no effect
248
  *  - The Benito Programmer project now has its own unique VID/PID pair allocated from the Atmel donated LUFA VID/PID pool
249
250
  *  - Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names
  *    are used in a project
251
  *  - The HID Report Parser now gives information on the total length of each report within a HID interface
252
253
  *  - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_* and
  *    USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so both may be used
254
255
256
257
  *
  *  <b>Fixed:</b>
  *  - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the
  *    endpoint's bank
258
  *  - Fixed swapped parameters in the HID state memory copy call while processing a HID PUSH item in the HID report parser
259
  *  - Fixed memory corruption HID report parser when too many COLLECTION or PUSH items were processed
260
  *  - Fixed HID report parser not resetting the FEATURE item count when a REPORT ID item is encountered
261
262
263
  *  - Fixed USBtoSerial demos not reading in UDR1 when the USART receives data but the USB interface is not enumerated,
  *    causing continuous USART receive interrupts
  *  - Fixed misspelt event name in the Class driver USBtoSerial demo, preventing correct operation
264
  *  - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient
265
266
  *  - Added hardware USART receive interrupt and software buffering to the Benito project to ensure received data is not
  *    missed or corrupted
267
  *  - Fixed Device mode HID Class driver always sending IN packets, even when nothing to report
268
269
  *  - Fixed Device mode HID Class driver not explicitly initializing the ReportSize parameter to zero before calling callback
  *    routine, so that ignored callbacks don't cause incorrect data to be sent
270
  *  - Fixed StillImageHost not correctly freezing and unfreezing data pipes while waiting for a response block header
271
272
273
274
  *  - Fixed error in the PrinterHost demo preventing the full page data from being sent to the attached device (thanks to John Andrews)
  *  - Fixed CDC based demos and projects' INF driver files under 64 bit versions of Windows (thanks to Ronny Hanson, Thomas Bleeker)
  *  - Re-add in missing flip, flip-ee, dfu and dfu-ee targets to project makefiles (thanks to Opendous Inc.)
  *  - Fix allowable F_CPU values comment in project makefiles to more accurately reflect the allowable values on the USB AVRs
275
  *  - Fixed DFU and CDC class bootloaders on the series 2 USB AVRs, corrected invalid signatures, added support for the new
276
  *    ATMEGAxx2 series 2 variant AVRs to the DFU bootloader
277
  *  - Fixed Low Level USBtoSerial demo not storing received characters (thanks to Michael Cooper)
278
  *  - Fixed MIDI Device Class driver not sending/receiving MIDI packets of the correct size (thanks to Thomas Bleeker)
279
  *
Dean Camera's avatar
Dean Camera committed
280
  *
Dean Camera's avatar
Dean Camera committed
281
  *  \section Sec_ChangeLog090810 Version 090810
282
  *
283
  *  <b>New:</b>
284
  *  - Added new device class drivers and matching demos to the library for rapid application development
285
286
287
  *  - Added new PrinterHost demo (thanks to John Andrews)
  *  - Added USB Missle Launcher project, submitted by Dave Fletcher
  *  - Added new Benito Arduino Programmer project
288
  *  - Added incomplete device and host mode demos for later enhancement
289
  *  - Updated MassStorage device block write routines to use ping-pong Dataflash buffering to increase throughput by around 30%
290
  *  - Error status LEDs shown when device endpoint configuration fails to complete in all demos and projects
291
292
  *  - Added new USB_Host_SetDeviceConfiguration() convenience function for easy configuration selection of devices while in USB
  *    host mode
293
294
  *  - Added new USB_Host_ClearPipeStall() convenience function to clear a stall condition on an attached device's endpoint
  *  - Added new USB_Host_GetDeviceDescriptor() convenience function to retrieve the attached device's Device descriptor
295
  *  - Added new Endpoint_ClearStatusStage() convenience function to assist with the status stages of control transfers
296
297
298
  *  - Added new USE_INTERNAL_SERIAL define for using the unique serial numbers in some AVR models as the USB device's serial number,
  *    added NO_INTERNAL_SERIAL compile time option to turn off new serial number reading code
  *  - Added new DATAFLASH_CHIP_MASK() macro to the Dataflash driver, which returns the Dataflash select mask for the given chip index
299
300
  *  - Added new HOST_STATE_WaitForDeviceRemoval host state machine state for non-blocking disabling of device communications until the
  *    device has been removed (for use when an error occurs or communications with the device have completed)
301
  *  - Added new FAST_STREAM_TRANSFERS compile time option for faster stream transfers via multiple bytes copied per stream loop
302
  *  - Added stdio stream demo code to the CDC device demos, to show how to create standard streams out of the virtual serial ports
303
  *  - Added new EEPROM and FLASH buffer versions of the Endpoint and Pipe stream functions
304
  *  - Added new USE_FLASH_DESCRIPTORS and FIXED_NUM_CONFIGURATIONS compile time options
305
  *  - Added support for the new ATMEGA32U2, ATMEGA16U2 and ATMEGA8U2 AVR models
306
  *  - Added new USB_DeviceState variable to keep track of the current Device mode USB state
307
  *  - Added new LEDs_ToggleLEDs() function to the LEDs driver
308
  *  - Added new Pipe_BoundEndpointNumber() and Pipe_IsEndpointBound() functions
309
  *  - Added new DEVICE_STATE_AS_GPIOR and HOST_STATE_AS_GPIOR compile time options
310
  *  - Added 404 Not Found errors to the webserver in the RNDIS demos to indicate invalid URLs
311
312
313
  *  
  *  <b>Changed:</b>
  *  - Deprecated psuedo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused)
314
315
316
317
318
319
320
  *  - The device-mode CALLBACK_USB_GetDescriptor() function now has an extra parameter so that the memory space in which the requested
  *    descriptor is located can be specified. This means that descriptors can now be located in multiple memory spaces within a device.
  *  - Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality
  *  - Removed USB_IsSuspended global - test USB_DeviceState against DEVICE_STATE_Suspended instead
  *  - Extended USB_GetDeviceConfigDescriptor() routine to require the configuration number within the device to fetch
  *  - Dataflash_WaitWhileBusy() now always ensures that the dataflash is ready for the next command immediately after returning,
  *    no need to call Dataflash_ToggleSelectedChipCS() afterwards
321
  *  - Low level API MIDI device demo no longer blocks if a note change event is sent while the endpoint is not ready
322
  *  - Pipe_GetErrorFlags() now returns additional error flags for overflow and underflow errors
323
324
325
326
  *  - Pipe stream functions now automatically set the correct pipe token, so that bidirectional pipes can be used
  *  - Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling
  *    the existing Pipe_SetFiniteINRequests() function
  *  - Changed F_CLOCK entries in project makefiles to alias to F_CPU by default, as this is the most common case
327
328
  *  - Host mode demos now use sane terminal escape codes, so that text is always readable and events/program output is visually distinguished
  *    from oneanother using foreground colours
329
330
  *  - Internal per-device preprocessing conditions changed to per-device series rather than per-controller group for finer-grain
  *    internal control
331
  *  - Interrupts are no longer disabled during the processing of Control Requests on the default endpoint while in device mode
332
  *  - AudioOutput demos now always output to board LEDs, regardless of output mode (removed AUDIO_OUT_LEDS project option)
333
334
  *  - Removed SINGLE_DEVICE_CONFIGURATION compile time option in favour of the new FIXED_NUM_CONFIGURATIONS option so that the exact number
  *    of device configurations can be defined statically
335
336
  *  - Removed VBUS events, as they are already exposed to the user application via the regular device connection and disconnection events
  *  - Renamed and altered existing events to properly seperate out Host and Device mode events
337
338
339
340
341
  *
  *  <b>Fixed:</b>
  *  - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed to fix
  *    bootloaders on some of the USB AVR devices where avr-libc erronously defines RAMPZ
  *  - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived()
342
  *    to only unfreeze and check one data pipe at a time) to prevent incorrect device enumerations and freezes while trasferring data
343
344
  *  - Make Pipe_ConfigurePipe() mask the given endpoint number against PIPE_EPNUM_MASK to ensure the endpoint IN direction bit is
  *    cleared to prevent endpoint type corruption
345
  *  - Fixed issue opening CDC-ACM ports on hosts when the CDC device tries to send data before the host has set the line encoding
346
  *  - Fixed USB_OPT_MANUAL_PLL option being ignored during device disconnects on some models (thanks to Brian Dickman)
347
  *  - Fixed documentation mentioning Pipe_GetCurrentToken() function when correct function name is Pipe_GetPipeToken()
348
  *  - Fixed ADC driver for the ATMEGA32U4 and ATMEGA16U4 (thanks to Opendous Inc.)
349
350
  *  - Fixed CDCHost demo unfreezing the pipes at the point of configuration, rather than use
  *  - Fixed MassStorage demo not clearing the reset flag when a Mass Storage Reset is issued while not processing a command
351
352
  *  - Fixed USB_Host_SendControlRequest() not re-suspending the USB bus when initial device ready-wait fails
  *  - Fixed USB Pad regulator not being disabled on some AVR models when the USB_OPT_REG_DISABLED option is used
353
  *  - Fixed Host mode to Device mode UID change not causing a USB Disconnect event when a device was connected
354
  *  - Fixed Mouse/Keyboard demos not performing the correct arithmetic on the Idle period at the right times (thanks to Brian Dickman)
355
  *  - Fixed GenericHID failing HID class tests due to incorrect Logical Minimum and Logical Maximum values (thanks to Søren Greiner)
356
  *  - Fixed incorrect PIPE_EPNUM_MASK mask causing pipe failures on devices with endpoint addresses of 8 and above (thanks to John Andrews)
357
358
  *  - Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits
  *  - Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered
359
  *  - Fixed incorrect BUTTONS_BUTTON1 for the STK526 target
360
  *  - Fixed RNDIS demos freezing when more than one connection was attempted simultaneously, causing memory corruption
361
  *  - Fixed USBtoSerial demo receiving noise from the USART due to pullup not being enabled
362
  *
363
364
365
  *
  *  \section Sec_ChangeLog090605 Version 090605
  *
366
367
  *  - Fixed bug in RNDISEthernet and DualCDC demos not using the correct USB_ControlRequest structure for control request data
  *  - Fixed documentation showing incorrect USB mode support on the supported AVRs list
368
  *  - Fixed RNDISEthernet not working under Linux due to Linux requiring an "optional" RNDIS request which was unhandled
369
370
  *  - Fixed Mouse and Keyboard device demos not acting in accordance with the HID specification for idle periods (thanks to Brian Dickman)
  *  - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues
371
  *  - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)
372
  *  - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token
373
  *  - Fixed CDCHost not clearing configured pipes and resetting configured pipes mask when a partially enumerated invalid CDC
374
  *    interface is skipped
375
376
  *  - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype
  *    inside the library that is able to hold their defined value to save space
377
  *  - Removed DESCRIPTOR_ADDRESS() macro as it was largely supurflous and only served to obfuscate code
378
379
380
381
  *  - Rewritten event system to remove all macros, to make user code clearer
  *  - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley)
  *  - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code
  *  - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code
382
  *  - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed
383
  *  - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)
384
385
  *  - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the
  *    LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs
386
  *  - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure
387
  *  - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt
388
389
  *  - Fixed possible enumeration errors from spinloops which may fail to exit if the USB connection is severed before the exit condition
  *    becomes true
390
  *
391
392
393
  *
  *  \section Sec_ChangeLog090510 Version 090510
  *
Dean Camera's avatar
Dean Camera committed
394
395
  *  - Added new GenericHIDHost demo
  *  - Corrections to the KeyboardHost and MouseHost demos' pipe handling to freeze and unfreeze the data pipes at the point of use
396
397
398
  *  - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR
  *  - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile
  *    time options
399
  *  - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected
400
  *  - Added new PIMA_DATA_SIZE() define to the Still Image Host demo
401
402
  *  - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the
  *    extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus()
403
  *    to early-abort (thanks to Dmitry Maksimov)
404
405
  *  - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory,
  *    where they are more suited
406
407
  *  - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the
  *    code without having to be itself patched and recompiled first
408
409
  *  - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to
  *    outdated avr-libc versions.
410
  *  - Added support to the CDCHost demo for devices with multiple CDC interfaces which are not the correct ACM type preceding the desired
411
  *    ACM CDC interface
412
  *  - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen)
413
  *  - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley)
414
  *  - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint
415
416
  *  - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet,
  *    and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis)
417
418
419
  *  - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type
  *    pipes can be used with the function
  *  - The USB Host management task now saves and restores the currently selected pipe before and after the task completes
420
421
  *  - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei Krainev)
  *  - Removed Endpoint_ClearCurrentBank() and Pipe_ClearCurrentBank() in favour of new Endpoint_ClearIN(), Endpoint_ClearOUT(),
422
  *    Pipe_ClearIN() and Pipe_ClearOUT() macros (done to allow for the detection of packets of zero length)
423
424
  *  - Renamed *_ReadWriteAllowed() macros to *_IsReadWriteAllowed() to remain consistent with the rest of the LUFA API
  *  - Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(), Endpoint_ClearSetupReceived() macro has been
425
  *    renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the
426
427
  *    Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe
  *    bank management API
428
  *  - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG)
429
430
431
  *  - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity
  *  - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity
  *  - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway
432
  *  - Renamed the main Drivers/AT90USBXXX directory to Drivers/Peripheral, renamed the Serial_Stream driver to SerialStream
433
  *  - Fixed CDC and USBtoSerial demos freezing where buffers were full while still transmitting or receiving (thanks to Peter Hand)
434
435
436
  *  - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the
  *    device descriptor
  *  - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name
437
  *  - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman)
438
  *  - Capitalised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and
439
  *    DSearch_Comp_Return_ErrorCodes_t enums
440
441
442
443
  *  - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums
  *  - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to
  *    USB_INITERROR_NoUSBModeSpecified
  *  - Renamed USB_PowerOnFail event to USB_InitFailure
444
  *  - Renamed OTG.h header functions to be more consistent with the rest of the library API
445
  *  - Changed over all deprecated GCC structure tag initializers to the standardized C99 format (thanks to Mike Alexander)
446
447
448
449
  *  - USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode
  *    rather than having the library pass only partially read header data to the application
  *  - The USB_UnhandledControlPacket event has had its parameters removed, in favour of accessing the new USB_ControlRequest structure
  *  - The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent
450
  *  - Fixed USB_RemoteWakeupEnabled flag never being set (the REMOTE WAKEUP Set Feature request was not being handled)
451
452
453
  *  - Renamed the FEATURELESS_CONTROL_ONLY_DEVICE compile-time token to CONTROL_ONLY_DEVICE
  *  - Endpoint configuration is now refined to give better output when all configurations have static inputs - removed the now useless
  *    STATIC_ENDPOINT_CONFIGURATION compile time token
454
455
456
  *  - Fixed SPI driver init function not clearing SPI2X bit when not needed
  *  - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex)
  *  - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus()
457
  *  - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke)
458
459
  *  - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given
  *    wLength value when reading in the device descriptor
460
461
462
  *  - Fixed missing semicolon in the ATAVRUSBRF01 LED board driver code (thanks to Morten Lund)
  *  - Changed LED board driver code to define dummy LED masks for the first four board LEDs, so that user code can be compiled for boards
  *    with less than four LEDs without code modifications (thanks to Morten Lund)
463
  *  - Changed HWB board driver to Buttons driver, to allow for the support of future boards with more than one mounted GPIO button
464
465
  *  - Serial driver now correctly calculates the baud register value when in double speed mode
  *  - Init function of the Serial driver is now static inline to product smaller code for the common-case of static init values
466
  *    
467
  *
Dean Camera's avatar
Dean Camera committed
468
  *  \section Sec_ChangeLog090401 Version 090401
469
470
471
472
473
  *
  *  - Fixed MagStripe project configuration descriptor containing an unused (blank) endpoint descriptor
  *  - Incorporated makefile changes by Denver Gingerich to retain compatibility with stock (non-WinAVR) AVR-GCC installations
  *  - Fixed makefile EEPROM programming targets programming FLASH data in addition to EEPROM data
  *  - LUFA devices now enumerate correctly with LUFA hosts
474
  *  - Fixed Configuration Descriptor search routine freezing when a comparator returned a failure
475
476
  *  - Removed HID report item serial dump in the MouseHostWithParser and KeyboardHostWithParser - useful only for debugging, and
  *    slowed down the enumeration of HID devices too much
477
  *  - Increased the number of bits per track which can be read in the MagStripe project to 8192 when compiled for the AT90USBXXX6/7
478
  *  - Fixed KeyboardMouse demo discarding the wIndex value in the REQ_GetReport request
479
480
  *  - USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission
  *    next time the device is attached to a host.
481
482
  *  - 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
  *    clock prescaling is performed) frequency, so that the PLL prescale mask can be determined
483
484
485
  *  - Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with
  *    badly designed hosts or devices which greatly exceed the USB specification limits
  *  - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices
486
487
  *  - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions
  *  - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances
488
  *  - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions
489
  *  - Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson)
490
  *  - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded
491
  *    to also remove parts of the Get Status chapter 9 request to further reduce code usage
492
  *  - Makefile updated to include output giving the currently selected BOARD parameter value
493
494
  *  - Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks
  *    to Kenneth Clubb)
495
496
  *  - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy
  *    interfacing with a FAT library for dataflash file level access
497
  *  - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience
498
  *  - Fixed typos in the SPI driver SPI_SPEED_FCPU_DIV_64 and SPI_SPEED_FCPU_DIV_128 masks (thanks to Markus Zocholl)
499
500
  *  - Keyboard and Mouse device demos (normal, data interrupt and fully interrupt driven) combined into unified keyboard and mouse demos
  *  - Keyboard and Mouse host demos (normal and data interrupt driven) combined into unified keyboard and mouse demos
501
  *  - Removed AVRISP_Programmer project due to code quality concerns
502
  *  - Fixed CDC demo not sending an empty packet after each transfer to prevent the host from buffering incoming data
503
  *  - Fixed documentation typos and preprocessor checks relating to misspellings of the USE_RAM_DESCRIPTORS token (thanks to Ian Gregg)
504
  *  - Fixed USBTask.h not conditionally including HostChapter9.h only when USB_CAN_BE_HOST is defined (thanks to Ian Gregg)
505
  *  - Fixed incorrect ADC driver init register manipulation (thanks to Tobias)
506
  *  - Added new GenericHID device demo application
507
  *  - Fixed Still Image Host SImage_SendData() function not clearing the pipe bank after sending data
508
  *
509
510
511
512
513
514
  *
  *  \section Sec_ChangeLog090209 Version 090209
  *
  *  - PWM timer mode in AudioOut demo changed to Fast PWM for speed
  *  - Updated Magstripe project to work with the latest hardware revision
  *  - Fixed library not responding to the BCERRI flag correctly in host mode, leading to device lockups
515
516
  *  - Fixed library handling Get Descriptor requests when not addressed as standard requests to the device or interface (thanks to
  *    Nate Lawson)
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
  *  - Fixed serious data corruption issue in MassStorage demo dataflash write routine
  *  - Added new NO_CLEARSET_FEATURE_REQUEST compile time token
  *  - USB task now restores previous global interrupt state after execution, rather than forcing global interrupts to be enabled
  *  - Fixed USB_DeviceEnumerationComplete event firing after each configuration change, rather than once after the initial configuration
  *  - Added ENDPOINT_DOUBLEBANK_SUPPORTED() macros to Endpoint.h, altered ENDPOINT_MAX_SIZE() to allow user to specify endpoint
  *  - ENDPOINT_MAX_ENDPOINTS changed to ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES changed to PIPE_TOTAL_PIPES
  *  - Endpoint and Pipe non-control stream functions now ensure endpoint or pipe is ready before reading or writing
  *  - Changed Teensy bootloader to use a watchdog reset when exiting rather than a software jump
  *  - Fixed integer promotion error in MassStorage and MassStorageHost demos, corrupting read/write transfers
  *  - SPI_SendByte is now SPI_TransferByte, added new SPI_SendByte and SPI_ReceiveByte functions for fast one-way transfer
  *  - MassStorage demo changed to use new fast one-way SPI transfers to increase throughput
  *  - MassStorage handling of Mass Storage Reset class request improved
  *  - Altered MassStorage demo dataflash block read code for speed
  *  - Added USB_IsSuspended global flag
  *  - Simplified internal Dual Mode (OTG) USB library code to reduce code size
  *  - Extended stream timeout period to 100ms from 50ms
  *  - Mass Storage Host demo commands now all return an error code from the Pipe_Stream_RW_ErrorCodes_t enum
  *  - Added SubErrorCode parameter to the USB_DeviceEnumerationFailed event
  *  - VBUS drop interrupt now disabled during the manual-to-auto VBUS delivery handoff
  *  - Simplified low level backend so that device/host mode initialization uses the same code paths
  *  - Added workaround for faulty Mass Storage devices which do not implement the required GET_MAX_LUN request
  *  - Removed buggy Telnet application from the RNDIS demo
  *  - Moved Mass Storage class requests in the Mass Storage Host demo to wrapper functions in MassStoreCommands.c
  *  - Fixed incorrect SCSI command size value in the Request Sense command in MassStoreCommands.c
  *  - Added SetProtocol request to HID class non-parser Mouse and Keyboard demos to force devices to use the correct Boot Protocol
  *  - Added new "dfu" and "flip" programming targets to project makefiles
  *  - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful
544
  *  - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
  *  - Serial driver now sets Tx line as output, enables pullup on Rx line
  *  - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled
  *  - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated
  *  - Fixed KeyboardHostWithParser demo linking against the wrong global variables
  *  - Completed doxygen documentation of remaining library bootloaders, demos and projects
  *  - Fixed incorrect bootloader start address in the TeensyHID bootloader
  *  - Added HWB button whole-disk ASCII dump functionality to MassStoreHost demo
  *  - Replaced printf_P(PSTR("%c"), {Variable}) calls with putchar(<Variable>) for speed and size savings
  *  - Serial driver now accepts baud rates over 16-bits in size, added double speed flag option
  *  - Fixed incorrect callback abort return value in Pipe.c
  *  - Added new flip-ee and dfu-ee makefile targets (courtesy of Opendous Inc.)
  *  - Removed reboot-on-disconnect code from the TeensyHID bootloader, caused problems on some systems
  *  - Fixed AudioOutput and AudioInput demos looping on the endpoint data, rather than processing a sample at a time and returning
  *    each time the task runs to allow for other tasks to execute
  *  - Added support for the Atmel ATAVRUSBRF01 board
  *  - Added AVRISP Programmer Project, courtesy of Opendous Inc.
  *  - Fixed CDC Host demo not searching through both CDC interfaces for endpoints
  *  - Fixed incorrect Product String descriptor length in the DFU class bootloader
  *
564
  *
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
  *  \section Sec_ChangeLog081224 Version 081224
  *
  *  - MyUSB name changed to LUFA, the Lightweight USB Framework for AVRs
  *  - Fixed Mass Storage Host demo's MassStore_SendCommand() delay in the incorrect place
  *  - Fixed USBtoSerial demo not calling ReconfigureUSART() after a change in the line encoding
  *  - Fixed infinite loop in host mode Host-to-Device control transfers with data stages
  *  - HID report parser now supports devices with multiple reports in one interface via Report IDs
  *  - Fixed RZUSBSTICK board LED driver header incorrect macro definition order causing compile errors
  *  - Calling USB_Init() when the USB interface is already configured now forces a complete interface reset
  *    and re-enumeration - fixes MyUSB DFU bootloader not switching to app code correctly when soft reset used
  *  - Fixed "No newline at end of file" warning when stream callbacks are enabled
  *  - DFU bootloader now uses fixed signature bytes per device, rather than reading them out dynamically for size
  *  - Added new FIXED_CONTROL_ENDPOINT_SIZE and USE_SINGLE_DEVICE_CONFIGURATION switches to statically define certain values to
  *    reduce compiled binary size
  *  - Added new NO_LIMITED_CONTROLLER_CONNECT switch to prevent the library from trying to determine bus connection
  *    state from the suspension and wake up events on the smaller USB AVRs
  *  - Added summary of all library compile time tokens to the documentation
  *  - Added overview of the LUFA scheduler to the documentation
  *  - Removed MANUAL_PLL_CONTROL compile time token, replaced with a mask for the USB_Init() Options parameter
  *  - CDC bootloader now uses the correct non-far or far versions of the pgm_* functions depending on if RAMPZ is defined
  *  - Doxygen documentation now contains documentation on all the projects, bootloaders and most demos included with the library
  *  - CDC bootloader now runs user application when USB disconnected rather than waiting for a hard reset
  *  - MouseHostWithParser and KeyboardHostWithParser now support multiple-report devices
  *  - RNDIS demo can now close connections correctly using the new TCP_APP_CLOSECONNECTION() macro - used in Webserver  
  *  - Fixed the DFU bootloader, no longer freezes up when certain files are programmed into an AVR, made reading/writing faster
  *  - Fixed mouse/joystick up/down movements reversed - HID mouse X/Y coordinates use a left-handed coordinate system, not a normal 
  *    right-handed system
  *  - Added stub code to the CDC and USBtoSerial demos showing how to read and set the RS-232 handshake lines - not currently used in
  *    the demos, but the example code and supporting defines are now in place
  *  - Interrupts are now disabled when processing a control request in device mode, to avoid exceeding the strict control request
  *    timing requirements.
  *  - All demos now use a central StatusUpdate() function rather than direct calls to the board LED functions, so that the demos can
  *    easily be altered to show different LED combinations (or do something else entirely) as the demo's status changes
  *  - Removed LED commands from the CDC bootloader, unused by most AVR910 programming software
  *  - Fixed RNDIS demo ICMP ping requests echoing back incorrect data
600
  *  - Added DHCP server code to RNDIS demo, allowing for hands-free auto configuration on any PC
601
602
603
604
605
606
607
  *  - Fixed DFU bootloader PID value for the ATMEGA16U4 AVR
  *  - Endpoint and Pipe configuration functions now return an error code indicating success or failure
  *  - USB Reset in device mode now resets and disables all device endpoints
  *  - Added intermediate states to the host mode state machine, reducing the USB task blocking time to no more than 1ms explicitly per
  *    invocation when in host mode
  *  - Added support for the ATMEGA32U6 microcontroller
  *  - Added STATIC_ENDPOINT_CONFIGURATION compile time option, enabled in the bootloaders to minimize space usage
608
  *  - Removed redundant code from the USB device GetStatus() chapter 9 processing routine
609
610
611
612
613
614
  *  - Added new TeensyHID bootloader, compatible with the Teensy HID protocol (http://www.pjrc.com/teensy/)
  *  - Versions are now numbered by release dates, rather than arbitrary major/minor revision numbers
  *  - USB_RemoteWakeupEnabled is now correctly set and cleared by SetFeature and ClearFeature requests from the host
  *  - Changed prototype of GetDescriptor, so that it now returns the descriptor size (or zero if the descriptor doesn't exist)
  *    rather than passing the size back to the caller through a parameter and returning a boolean
  *
615
  *
616
617
618
619
620
621
  *  \section Sec_ChangeLog153 Version 1.5.3 - Released 2nd October, 2008
  *
  *  - Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately
  *  - Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS)
  *  - Renamed bootloader directories to remove spaces, which were causing build problems on several OSes
  *  - Removed serial number strings from all but the MassStore demo where it is required - users were not
622
  *    modifying the code to either omit the descriptor or use a unique serial per device causing problems
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
  *    when multiple units of the same device were plugged in at the same time
  *  - AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host
  *  - Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo)
  *  - Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board
  *    driver creation easier
  *  - Extended MassStorage demo to support multiple LUNs, 2 by default
  *  - Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63
  *  - Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled
  *  - Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly
  *  - Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values
  *  - Added DualCDC demo to demonstrate the use of Interface Association Descriptors
  *  - Added pipe NAK detection and clearing API
  *  - Added pipe status change (NAK, STALL, etc.) interrupt API
  *  - Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row
  *  - Host demos configuration descriptor routines now return a unique error code when the returned data does
  *    not have a valid configuration descriptor header
  *  - Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions
  *  - Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token
  *  - All demos now pass the USB.org automated Chapter 9 device compliance tests
  *  - All HID demos now pass the USB.org automated HID compliance tests
  *  - Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems
  *  - Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks
  *  - Mass Storage demo dataflash management routines changed to use the endpoint stream functions		
  *  - Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file
  *  - Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes
  *    are reflected in the hardware (change was previously lost)
  *
  *
  *  \section Sec_ChangeLog152 Version 1.5.2 - Released 31st July, 2008
  *
  *  - Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types)
  *  - Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS
  *    implementations (where the notification endpoint is ignored in favour of polling the control endpoint)
  *  - Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token
  *  - Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo
  *  - Fixed DFU bootloader exit causing programming software to complain about failed writes
  *  - Fixed DFU bootloader EEPROM programming mode wiping first flash page
  *  - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process)
  *  - Added support for the ATMEGA16U4 AVR microcontroller
  *  - Library licence changed from LGPLv3 to MIT license
  *
  *
  *  \section Sec_ChangeLog151 Version 1.5.1 - Released 31st July, 2008
  *
  *  - Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event
  *    rather than the USB_DeviceAttached event
  *  - HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove
  *    any referenced but not created usages
  *  - Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(),
  *    USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline)
  *  - Fixed USBtoSerial demo not sending data, only receiving
  *  - Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems
  *  - ConfigDescriptor functions made normal, instead of static inline
  *  - Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases
  *  - Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs
  *  - Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic
  *    approach was buggy and caused problems
  *  - Bootloaders now compile with -fno-inline-small-functions option to reduce code size
  *  - Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases
  *    to be in line with the specification (isochronous endpoints MUST be double banked)
  *  - Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN
  *  - Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure
  *  - Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID
  *    devices) to prevent problems on hosts expecting the boot protocol functions to be supported
  *  - Added read/write control stream functions to Endpoint.h
  *  - Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly
  *  - Added RNDISEthernet demo application
  *
  *
  *  \section Sec_ChangeLog150 Version 1.5.0 - Released 10 June, 2008
  *
  *  - Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages
  *  - Added CDC Host demo application
  *  - Added KeyboardFullInt demo application
  *  - Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction
  *    size bits not required for the routines (improves compatibility with devices)
  *  - Fixed AudioInput demo - now correctly sends sampled audio to the host PC
700
  *  - Fixed AudioOutput demo once more -- apparently Windows requires endpoint packets to be >=192 bytes
701
702
703
704
705
706
707
708
  *  - Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes
  *  - Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser
  *  - Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder
  *  - Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler
  *  - Added Still Image Host demo application
  *  - The USB device task now restores the previously selected endpoint, allowing control requests to be transparently
  *    handled via interrupts while other endpoints are serviced through polling
  *  - Fixed device signature being sent in reverse order in the CDC bootloader
709
710
  *  - Host demos now have a separate ConfigDescriptor.c/.h file for configuration descriptor processing
  *  - HostWithParser demos now have a separate HIDReport.c/.h file for HID report processing and dumping
711
712
713
714
  *  - Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value
  *  - CDC demos now send empty packets after sending a full one to prevent buffering issues on the host
  *  - Updated demo descriptors to use VID/PID values donated by Atmel
  *  - Added DoxyGen documentation to the source files
715
  *  - Fixed Serial_IsCharReceived() definition, was previously reversed
716
  *  - Removed separate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead
717
718
719
  *  - Removed unused Device Qualifier descriptor structure
  *  - Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged
  *  - Fixed MassStorageHost demo reading in the block data in reverse
720
  *  - Removed outdated typedefs in StdRequestType.h, superseded by the macro masks
721
722
723
724
725
726
  *  - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products
  *  - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration
  *  - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete
  *  - USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value
  *  - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()
  *    and USB_Host_IsBusSuspended()
727
  *  - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
  *    Pipe_SetInterruptPeriod() to use the correct terminology
  *  - UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC
  *    Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays
  *    of ASCII characters
  *  - Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR
  *    model was given as the bank size
  *  - HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array
  *  - Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors
  *  - Cleaned up GetDescriptor device chapter 9 handler function
  *  - Added GET_REPORT class specific request to HID demos to make them complaint to the HID class
  *  - Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed
  *  - Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons
  *  - All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.)
  *  - Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names
  *
  *
  *  \section Sec_ChangeLog141 Version 1.4.1 - Released 5 May, 2008
  *
  *  - Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo
  *  - Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly
  *  - Corrected version number in Version.h
  *
  *
  *  \section Sec_ChangeLog140 Version 1.4.0 - Released 5 May, 2008
  *
  *  - Added HID Report Parser API to the library
  *  - Added Mouse and Keyboard host demo applications, using the new HID report parser engine
  *  - Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device
  *  - Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos
  *  - Added MIDI device demo application to the library
  *  - Fixed problem preventing USB devices from being resumed from a suspended state
  *  - Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol
  *  - Added header to each demo application indicating the mode, class, subclass, standards used and supported speed
  *  - Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or
  *    PIPE_PIPENUM_MASK - this should be manually added to code which requires it
  *  - Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time
  *  - Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor()
  *    to USB_Host_GetNextDescriptor()
  *  - Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines
  *  - Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file
  *  - Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the
  *    new comparator API
  *  - Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct
  *    big-endian for SCSI devices
772
  *  - Fixed macro/function naming consistency; USB_HOST is now USB_Host, USB_DEV is now USB_Device
773
774
775
776
777
778
779
780
781
782
783
784
  *  - Added better error reporting to host demos
  *  - Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls
  *
  *
  *  \section Sec_ChangeLog132 Version 1.3.2 - Released April 1st, 2008
  *
  *  - Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes
  *    are reflected in the hardware
  *  - Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the 
  *    GetLineCoding request had an incorrect RequestType mask preventing it from being processed
  *  - Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full
  *  - Device control endpoint size is now determined from the device's descriptors rather than being fixed
785
  *  - Separated out SPI code into new SPI driver in AT90USBXXX driver directory
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
  *  - Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID
  *  - Added support for the RZUSBSTICK board
  *  - Bicolour driver removed in favour of generic LEDs driver
  *  - Added support for the ATMEGA32U4 AVR
  *  - Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL
  *
  *
  *  \section Sec_ChangeLog131 Version 1.3.1 - Released March 19th 2008
  *
  *  - Fixed USB to Serial demo - class value in the descriptors was incorrect
  *  - Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low
  *    speed mode devices to enumerate properly
  *  - USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work
  *    on USB AVRs with limited USB FIFO RAM
  *  - Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited
  *    USB device controller AVRs (AT90USB162, AT90USB82) to function correctly
  *  - Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output
  *  - Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile
  *  - Optimized Mass Storage demo for a little extra transfer speed
  *  - Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock
  *  - Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions
  *    (including Big and Little Endian variants)
  *  - Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file
809
  *  - Added new SetSystemClockPrescaler() macro (thanks to Joerg Wunsch)
810
811
812
813
814
815
816
817
818
819
820
821
822
  *  - Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7)
  *  - Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the
  *    directives in the datasheet
  *  - Fixed PLL prescaler defines for all AVR models and frequencies
  *  - Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions
  *  - Added interrupt driven keyboard and mouse device demos
  *  - Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code
  *    size savings
  *  - Added missing Pipe_GetCurrentPipe() macro to Pipe.h
  *
  *
  *  \section Sec_ChangeLog130 Version 1.3.0 - Released March 7th 2008
  *
823
  *  - Unnecessary control endpoint config removed from device mode
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
  *  - Fixed device standard request interpreter accidentally processing some class-specific requests
  *  - Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library
  *    to use descriptors stored in RAM or EEPROM rather than flash memory
  *  - All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader
  *  - USB_DEV_OPT_LOWSPEED option now works correctly
  *  - Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS
  *    compile time define
  *  - USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or
  *    if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options
  *  - USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS
  *  - Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the
  *    compiler can throw away the result more efficiently
  *  - Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be
  *    controlled by the new Scheduler_SetGroupTaskMode() routine
  *  - Added support for AT90USB162 and AT90USB82 AVR models
  *  - Added support for the STK525 and STK526 boards
  *  - Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and
  *    placing board drivers in {Application Directory}/Board/
842
  *  - PLL is now stopped and USB clock is frozen when detached from host in device mode, to save power
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
  *  - Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY
  *  - Fixed USB_DEV_IsUSBSuspended() - now checks the correct register
  *  - Fixed data transfers to devices when in host mode
  *  - Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to
  *    USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with
  *    the real high speed mode, which is unavailable on the USB AVRs)
  *
  *
  *  \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008
  *
  *  - Added USB_DeviceEnumerationComplete event for host mode
  *  - Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and
  *    stopped before the scheduler has been started (via Scheduler_Start)
  *  - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management
  *    task to be stopped when the USB is not connected to a host or device
  *  - All demos updated to stop the USB task when not in use via the appropriate USB events
  *  - Mass Storage Host demo application updated to function correctly with all USB flash disks
  *  - Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached
  *    device, and prints the first block as hexadecimal numbers rather than ASCII characters
  *  - Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags
  *  - Shifted error handling code in the host enum state machine to a single block, to reduce code complexity
  *  - Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing
  *    clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices
  *  - Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro
  *
  *
  *  \section Sec_ChangeLog130 Version 1.1.0 - Released January 25th 2008
  *
  *  - Fixed DCONNI interrupt being enabled accidentally after a USB reset
  *  - Fixed DDISCI interrupt not being disabled when a device is not connected
  *  - Added workaround for powerless pullup devices causing false disconnect interrupts
  *  - Added USB_DeviceEnumerationFailed event for Host mode
  *  - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer
  *    pointer is passed
  *  - Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables
  *    dependant on size of memory parameters passed in via the user project's makefile
  *  - Fixed incorrect device reset routine being called in USBTask
  *  - Devices which do not connect within the standard 300mS are now supported
  *  - Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being
  *    started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects
  *  - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the
  *    need to have a task ID list
  *  - ID transistion interrupt now raises the appropriate device/host disconnect event if device attached
  *  - Fixed double VBUS change (and VBUS -) event when detatching in device mode
  *  - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile
  *  - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and 
  *    Endpoint_IsConfigured() after calling the config functions to determine success
890
  */