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

 /** \page Page_ChangeLog Project Changelog
8
9
  *
  *  \section Sec_ChangeLogXXXXXX Version XXXXXX
10
11
12
13
  *  <b>New:</b>
  *  - Core:
  *   - The USE_INTERNAL_SERIAL definition can now be overridden by the user to a custom string index (thanks to Nicohood)
  *
14
15
16
  *  <b>Fixed:</b>
  *  - Core:
  *   - Fixed DeviceUsesOUTPipe flag not being set correctly in the HID host class driver (thanks to Wolfgang Schnerring)
17
18
  *   - Fixed CDC Device class driver's internal serial stream created by \ref CDC_Device_CreateStream not returning the written
  *     character after a successful write (thanks to NicoHood)
19
  *   - Fixed incorrect endpoint bank setup on the UC3 architecture (thanks to Andrus Aaslaid)
20
  *   - Fixed CDC_Device_Send*_P() and CDC_Host_Send*_P() variant functions not compiled out for UC3 architecture
21
22
  *  - Library Applications:
  *   - Fixed bootloaders not disabling global interrupts during erase and write operations (thanks to Zoltan)
23
  *   - Fixed bootloaders accepting flash writes to the bootloader region (thanks to NicoHood)
24
  *
Dean Camera's avatar
Dean Camera committed
25
  *  \section Sec_ChangeLog170418 Version 170418
26
27
28
  *  <b>New:</b>
  *  - Core:
  *   - Added support for the Pololu A-Star Micro board (thanks to Joh Schneider)
29
  *   - Added new \c LUFA_VERSION_RELEASE_TYPE macro to the library version header, to determine release type (thanks to NicoHood)
30
  *
31
32
33
34
  *  <b>Fixed:</b>
  *  - Core:
  *   - The CALLBACK_USB_GetDescriptor() callback function into the user application erroneously had a uint8_t type for the wIndex
  *     parameter, instead of uint16_t (thanks to Matlo)
35
36
  *   - Fixed broken USE_RAM_DESCRIPTORS compile time option when the FIXED_NUM_CONFIGURATIONS compile time option is not enabled
  *     in a user application (thanks to Matlo)
Dean Camera's avatar
Dean Camera committed
37
  *   - Fixed missing \c va_end() calls in the HID bootloader CLI app which could cause portability issues
38
  *   - Fixed void pointer arithmetic in the \c Serial_SendData() functions for AVR8 and XMEGA architectures
39
  *   - Fixed void pointer arithmetic in the low level and class driver RNDIS demo protocol decoders
40
  *   - Fixed low level RNDIS demo incorrectly setting the RNDIS state when a null packet filter was requested
41
  *   - Fixed missing entries in several project's Atmel Studio integration files, such as driver INF files
42
  *   - Fixed invalid endpoint indexes causing memory corruption in device Clear/Set Feature standard requests (thanks to Peter Popovec)
43
  *   - Fixed incorrect serialization in USB_SetHIDReportItemInfo() function (thanks to e-chip)
44
45
46
47
48
  *
  *  <b>Changed:</b>
  *   - Added signed alternative libUSB driver for the AVRISP-MKII clone project, to support Atmel Studio 7 (thanks to Atmel)
  *   - Removed no longer required LIBUSB_DRIVER_COMPAT and RESET_TOGGLES_LIBUSB_COMPAT configuration options from the AVRISP-MKII
  *     clone project, as the new libUSB driver works for AVRDUDE and Atmel Studio 7 under Windows
49
50
  *   - Replaced the LUFA build system with its (compatible) successor, DMBS (Dean's Makefile Build System)
  *   - Removed obsolete library TAR export and associated documentation
51
  *   - Fixed incorrect HID_DESCRIPTOR_KEYBOARD() macro definition (thanks to Eric Tang)
52
  *
53
  *  \section Sec_ChangeLog151115 Version 151115
54
  *  <b>New:</b>
55
  *   - Added support for the Atmel Xplained-MINI series of development kits
56
57
  *   - Added new PROGMEM variant send functions to the CDC class device driver (thanks to Stefan Hellermann)
  *   - Added new PROGMEM variant send functions to the CDC class host driver
58
  *   - Added additional Arduino Uno board definitions for the main processor reset (thanks to NicoHood)
59
  *   - Added modified DocBook transforms to generate Atmel Studio 6/7 internal help documentation (thanks to Morten Engelhardt Olsen)
60
61
  *
  *  <b>Changed:</b>
62
63
64
  *  - Core:
  *   - The TWI peripheral driver's TWI_WritePacket() and TWI_ReadPacket() functions now takes a 16-bit Length rather than an 8-bit
  *     length, for longer transfers
65
66
67
  *  - Library Applications:
  *   - The CDC, DFU, Mass Storage and Printer class bootloaders will no longer run the user application if the application reset
  *     vector is blank (thanks to Alex Kazik)
68
  *   - The CDC, DFU and Printer class bootloaders are now compatible with the original Atmel XPLAIN and Arduino Leonardo boards
69
70
  *   - The CDC, DFU, Mass Storage and Printer class bootloaders are not compatible with devices with the BOOTRST fuse set and will
  *     exit automatically unless an external reset was the last reset cause (thanks to Alex Kazik)
71
  *   - Added missing force-inline attribute to the endianness utility functions (thanks to Stefan Hellermann)
72
  *   - Updated the DFU build system module to use updated EEPROM programming command arguments for dfu-programmer 0.6.2 or newer
73
74
  *
  *  <b>Fixed:</b>
75
  *   - Fixed broken XMEGA serial stream driver due to missing USART base pointer parameter (thanks to William Patterson)
76
  *   - Fixed incorrect signature reported in the CDC/DFU bootloaders for the AT90USB82 (thanks to NicoHood)
77
  *   - Fixed broken RNDIS demos on Linux machines whose DHCP hosts require a Lease Time option (thanks to Stefan Hellermann)
78
  *   - Fixed broken LEDs_Disable() implementation for the Arduino Uno board (thanks to NicoHood)
79
  *   - Fixed missing bounds checks and off-by-one in the DFU bootloader signature bytes (thanks to Reuti)
80
  *
81
  *  \section Sec_ChangeLog140928 Version 140928
82
83
84
  *  <b>New:</b>
  *  - Core:
  *   - Updated the BUILD build system module to add a new COMPILER_PATH optional variable
85
  *   - Added Serial_IsSendReady() and Serial_IsSendComplete() functions to the Serial hardware peripheral driver
86
  *   - Added support for the Arduino Yun board (ATMEGA32U4 co-processor)
87
  *   - Added support for the Arduino Micro board (thanks to Zoltán Szőke)
88
89
  *  - Library Applications:
  *   - Added new Dual MIDI class driver device demo
90
  *
91
92
93
94
95
  *  <b>Changed:</b>
  *  - Core:
  *   - The RNDIS device class driver now takes a user-supplied buffer and buffer length for the internal RNDIS
  *     message management (thanks to Peter Mc Shane)
  *
96
97
98
99
  *  <b>Fixed:</b>
  *  - Core:
  *   - Fixed device class driver pipe configuration routines returning success with a partially constructed instance
  *     when a pipe configuration failed (thanks to Helge Suess)
100
  *   - Fixed incorrect XMEGA DFLL reference frequency (thanks to Martin Aakerberg)
101
  *   - Fixed possible infinite loop in the control endpoint stream write function (thanks to Clayton Knight)
102
  *   - Fixed missing HID report ID prefix on HID class driver GetReport request responses (thanks to Bert van Hall)
103
  *   - Fixed incorrect XMEGA USB controller clock division factory for non-Full Speed operation (thanks to Bert van Hall)
104
  *   - Fixed the LUFA build system to prevent incorrect code from being generated in newer toolchains when building for larger
105
  *     FLASH memory devices (thanks to demultiplexer)
106
107
  *   - Fixed missing parenthesis in the MIDI_EVENT() macro which could cause incorrect results (thanks to hexwab)
  *   - Fixed mixed capitalization of TWI in the XMEGA TWI driver causing compilation failures (thanks to Jacob Schloss)
108
  *   - Fixed broken AVR8 USART-SPI peripheral driver (thanks to Phil Zakielarz)
109
110
  *  - Library Applications:
  *   - Fixed spurious 0xFE USART byte sent in the USBtoSerial project when the baud rate is changed (thanks to Carl Kjeldsen)
111
  *   - Fixed blocking USART reads causing low throughput on slow baud rates in the USBtoSerial project (thanks to Nevada Smith)
112
  *   - Fixed USART reception overrun corrupting the internal buffers in the USBtoSerial project (thanks to Nevada Smith)
113
  *   - Fixed broken LowLevel Audio Out demo sampling frequency configuration (thanks to Torsten Duwe)
114
  *
115
  *  \section Sec_ChangeLog140302 Version 140302
116
117
118
  *  <b>New:</b>
  *  - Library Applications:
  *   - Added new Bulk Vendor low level device demo
119
  *   - Added new libUSB host Python and NodeJS application examples for the Class driver GenericHID demo (thanks to Laszlo Monda)
120
  *   - Added new AVR8 USB option to keep 3.3V regulator enabled (thanks to Michael Hanselmann)
121
  *   - Added new USB_STRING_DESCRIPTOR() and USB_STRING_DESCRIPTOR_ARRAY() convenience macros (thanks to Laszlo Monda)
122
  *
Dean Camera's avatar
Dean Camera committed
123
124
125
  *  <b>Changed:</b>
  *  - Library Applications:
  *   - Refactored out USB interface IDs in the demo applications into enums (thanks to Laszlo Monda)
126
  *   - AVRISP-MKII Clone Project PDI/TPI frequency increased from 250KHz to 2MHz as it is now stable
127
  *   - Increased TPI/PDI handshake delay to 100us from 1us to support targets with high amounts of capacitance on their
128
  *     /RESET lines (thanks to Paul Duke)
129
  *   - Changed the VERSION_BCD() macro to accept the major/minor/revision values as separate parameters
130
  *
131
132
133
134
135
136
  *  <b>Fixed:</b>
  *  - Core:
  *   - Fixed MIDI device class driver MIDI_Device_ReceiveEventPacket() for the XMEGA architecture
  *  - Library Applications:
  *   - Fixed incorrect signature bytes returned in the DFU bootloader
  *
Dean Camera's avatar
Dean Camera committed
137
  *  \section Sec_ChangeLog130901 Version 130901
138
  *  <b>New:</b>
139
  *  - Core:
140
  *   - Added additional MIDI command definitions to the MIDI class driver (thanks to Daniel Dreibrodt)
141
  *   - Added new CONCAT() and CONCAT_EXPANDED() convenience macros
142
  *   - Added new Printer Device Class driver
143
  *   - Added support for the XMEGA C3 Xplained board
144
  *   - Added support for the U2S board (thanks to megal0maniac)
145
  *   - Added TWI Master driver for the XMEGA architecture (thanks to Michael Janssen)
146
147
148
  *  - Library Applications:
  *   - Added new Printer class bootloader
  *   - Added new Mass Storage class bootloader
149
  *   - Added XMEGA support for class driver device demos (where applicable)
150
151
  *   - Added Python host application example for the Generic HID class driver device demo
  *   - Added Python alternative host application for the HID class bootloader
152
153
154
155
  *
  *  <b>Changed:</b>
  *  - Core:
  *   - Updated the BUILD build system module to produce binary BIN files in addition to Intel HEX files
156
  *   - Updated the Android Accessory Class to accept version 2 protocol devices (with version 1 functionality)
157
  *   - All board drivers now implement dummy functions and constants when BOARD is set to NONE
158
  *   - Added missing LEDs to the XMEGA A3BU Xplained board LED driver (thanks to Michael Janssen)
159
  *   - Changed board Dataflash drivers to automatically configure the appropriate SPI interface for the selected board
160
161
162
  *  - Library Applications:
  *   - Re-added Set Control Line State request handling to the CDC class bootloader to prevent issues with the .NET serial
  *     class (thanks to Erik Lins)
163
  *   - TemperatureDataLogger project dummy RTC mode now tracks real time (thanks to David Lazarus)
164
165
  *
  *  <b>Fixed:</b>
166
167
  *  - Core:
  *   - Fixed Low Speed USB devices broken when using the library HID Class driver (thanks to Michael)
168
  *   - Fixed possible register corruption in USB Host mode on AVR8 devices when ORDERED_EP_CONFIG is used (thanks to Martin Aakerberg)
169
  *   - Fixed Pipe_GetBoundEndpointAddress() returning invalid endpoint directions on AVR8 architecture devices (thanks to decerri)
170
  *     under some circumstances
171
  *   - Fixed incorrect USB device state set when a suspended LUFA device is woken while addressed but not configured (thanks to Balaji Krishnan)
172
  *   - Fixed broken USART SPI driver for the AVR8 architecture due to incorrect initialization
Dean Camera's avatar
Dean Camera committed
173
  *   - Fixed re-enumeration issue of XMEGA architecture targets (thanks to Jaroslav Jedlinsky)
174
  *   - Fixed error receiving PIMA events via the Still Image Host class driver
175
176
177
  *  - Library Applications:
  *   - Added handler for SCSI_CMD_START_STOP_UNIT in demos using the Mass Storage class, to prevent ejection errors on *nix systems due to an
  *     unknown SCSI command
178
  *   - Fixed incorrect HID report descriptor generated for 16-bit axis ranges by the HID_DESCRIPTOR_MOUSE() and HID_DESCRIPTOR_JOYSTICK()
179
  *     macros (thanks to Armory)
180
181
  *   - Fixed incorrect HID report descriptor generated for button multiples of 8 by the HID_DESCRIPTOR_MOUSE() and HID_DESCRIPTOR_JOYSTICK()
  *     macros
182
  *   - Fixed race condition in the DFU class bootloader causing failed device reprogramming in some circumstances (thanks to Luis Mendes)
183
  *   - Fixed incorrect time/date configuration data order in the TempDataLogger host application (thanks to David Lazarus)
184
  *
185
  *  \section Sec_ChangeLog130303 Version 130303
186
187
  *  <b>New:</b>
  *  - Core:
188
  *   - Added support for the Arduino Leonardo board
189
  *   - Added support for the Atmel UC3-A3 Xplained board
190
  *   - Added support for the Xevelabs USB2AX revision 3.1 board
191
  *   - Added support for the Dimex Stange-ISP board (thanks to Gerhard Wesser)
192
  *   - Added new \c doxygen_upgrade and \c doxygen_create targets to the DOXYGEN build system module
193
  *   - Added new Board Hardware Information board driver
194
  *  - Library Applications:
195
  *   - Added a different device serial number when the AVRISP-MKII Clone project is in libUSB compatibility mode, so that
196
  *     both the libUSB and Jungo drivers can be installed at the same time without having to use a filter driver
197
198
199
  *
  *  <b>Changed:</b>
  *  - Core:
200
201
  *   - Added workaround for broken VBUS detection on AVR8 devices when a bootloader starts the application
  *     via a software jump without first turning off the OTG pad (thanks to Simon Inns)
202
  *  - Library Applications:
203
  *   - Increased throughput in the USBtoSerial project now that data transmission is non-blocking (thanks to Joseph Lacerte)
204
  *   - Updated bootloader makefiles to remove dependency on the \c bc command line calculator tool
205
  *   - Updated AVRISP-MKII Clone Programmer project so that the SCK clock period is saved in EEPROM (thanks to Gerhard Wesser)
206
  *   - Changed all *_SendByte() function prototypes to accept a void pointer for the input buffer (thanks to Simon Kuppers)
207
208
209
  *
  *  <b>Fixed:</b>
  *  - Core:
210
  *   - Fixed incorrectly issuing STALL response to unsupported control request SETUP packets, rather than in the data/status stage
211
  *   - Fixed inverted LEDs_GetLEDs() function implementation for the Benito, Minimus and Arduino UNO boards
212
  *   - Fixed missing Windows 32-bit compatibility sections in the LUFA INF driver files (thanks to Christan Beharrell)
213
214
  *   - Fixed logic hole breaking USB operations on a USB controller with only one supported USB mode and no USB_DEVICE_ONLY or USB_HOST_ONLY
  *     configuration token set
215
  *   - Fixed possible rounding in the VERSION_BCD() macros for some 0.01 step increments (thanks to Oliver Zander)
216
  *   - Fixed incorrect Dataflash functionality in the USBKEY board if the driver is modified for a single Dataflash chip (thanks to Jonathan Oakley)
217
  *   - Fixed incorrect definitions of \c HID_KEYBOARD_LED_KANA, \c HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN and \c HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN_AS400
218
  *     and added a missing definition for \c HID_KEYBOARD_SC_APPLICATION (thanks to David Monro)
219
  *   - Fixed maximum allowed keyboard key code usage of \c 0x65 rather than \c 0xFF for the \c HID_DESCRIPTOR_KEYBOARD() macro (thanks to David Monro)
220
221
  *   - Fixed hardware race condition that could cause failed device enumerations for AVR8 and UC3 architectures (thanks to Mike Beyhs)
  *   - Fixed incorrect Minimus board LED definitions (thanks to Joonas Lahtinen)
222
  *   - Fixed incorrect ordering of the linker options in the build system causing link failures in some cases
223
  *   - Fixed bug in the TWI peripheral driver for the AVR8 devices causing incorrect failure codes to be returned in some cases (thanks to Peter K)
224
  *   - Fixed swapped LED3 and LED4 masks for the Olimex-32U4 development board LED driver
225
  *   - Fixed potential NULL pointer dereference in the HID Host mode Class Driver (thanks to Pavel Kuzmin)
226
227
  *  - Library Applications:
  *   - Fixed broken RESET_TOGGLES_LIBUSB_COMPAT compile time option in the AVRISP-MKII project
228
  *   - Fixed incompatibility in the CDC class bootloader on some systems (thanks to Sylvain Munaut)
229
230
  *   - Fixed lengthy timeouts in the USBtoSerial project if no application on the host is consuming data (thanks to Nicolas Saugnier)
  *   - Fixed lengthy automatic data flushing in the CDC and MIDI device class drivers
231
  *   - Fixed incorrect LED masks for received data display in the Device GenericHID demos (thanks to Denys Berkovskyy)
232
  *   - Fixed incorrect output in the HIDReportViewer project when no device is connected (thanks to Pavel Kuzmin)
233
  *
Dean Camera's avatar
Dean Camera committed
234
  *  \section Sec_ChangeLog120730 Version 120730
235
236
  *  <b>New:</b>
  *  - Core:
237
  *   - Added new, revamped modular build system with new makefile templates
238
  *   - Added support for the BitWizard Multio and Big-Multio boards
239
  *   - Added support for the DorkbotPDX Duce board
240
241
  *   - Added support for the Olimex AVR-USB-32U4 board
  *   - Added support for the Olimex AVR-USB-T32U4 board
242
  *   - Added support for the Olimex AVR-ISP-MK2 board
243
244
  *   - Added new Endpoint_ConfigureEndpointTable() function
  *   - Added new Pipe_ConfigurePipeTable() function
245
  *   - Added build test to verify correct compilation of all board drivers using all driver APIs
246
  *   - Added build test to verify correct compilation of all bootloaders using all supported devices
247
248
  *   - Added build test to verify that there are no detectable errors in the codebase via static analysis
  *   - Added new JTAG_ENABLE() macro for the AVR8 architecture
249
  *  - Library Applications:
250
  *   - Modified the CDC Host demos to set a default CDC Line Encoding on enumerated devices
251
  *   - Added Dataflash operational checks and aborts to all projects using the Dataflash to ensure it is working correctly before use
252
  *   - Added new SerialToLCD user project contributed by Simon Foster
253
  *   - Added new RESET_TOGGLES_LIBUSB_COMPAT compile time option to the AVRISP-MKII clone programmer project (thanks to Robert Spitzenpfeil)
254
255
256
257
  *
  *  <b>Changed:</b>
  *  - Core:
  *   - Android Accessory Host property strings changed from a struct of pointer to an array to prevent unaligned access on greater than 8-bit architectures
258
  *   - Audio Device Class driver changed to also require the index of the Audio Control interface within the device, for SET/GET/CUR/MIN/MAX/RES property adjustments
259
  *   - Removed variable axis support from the HID_DESCRIPTOR_JOYSTICK() macro due to OS incompatibilities, replaced with fixed 3-axis joystick report structure
260
  *   - Removed the old pseudo-scheduler from the library as it was unused and deprecated since the 090810 release
261
262
263
264
265
266
267
268
269
270
  *   - Endpoint indexes are now specified as full endpoint addresses within the device in device mode, rather than a logical index
  *   - The Endpoint_ConfigureEndpoint() function no longer takes an endpoint direction as a parameter, as this is now deduced from the specified full endpoint
  *     address and type
  *   - The Endpoint_ConfigureEndpoint() function no longer takes a number of banks as a special mask; the number of banks is now specified as an integer parameter
  *   - Endpoints are now configured via instances of a new struct USB_Endpoint_Table_t in all device mode class drivers, rather than a list of endpoint parameters
  *   - Pipe indexes are now specified as full pipe addresses within the host in host mode, rather than a logical index
  *   - The Pipe_ConfigurePipe() function no longer takes an pipe token as a parameter, as this is now deduced from the specified full pipe address and type
  *   - The Pipe_ConfigurePipe() function no longer takes a number of banks as a special mask; the number of banks is now specified as an integer parameter
  *   - Pipes are now configured via instances of a new struct USB_Pipe_Table_t in all host mode class drivers, rather than a list of pipe parameters
  *   - Added support for various assert and debugging macros for the UC3 devices
271
  *   - Changed MIDI event structure MIDI_EventPacket_t to use a single field for the combined virtual cable index and command ID, to prevent bitfield packing issues
272
  *     on some architectures (thanks to Darren Gibbs)
273
  *   - Changed board LED driver implementations of LEDs_ToggleLEDs() for the AVR8 architecture to use the fast PIN register toggle alternative function for speed
274
  *  - Library Applications:
275
  *   - Raised the guard bits in the AVRISP-MKII clone project when in PDI and TPI to 32, to prevent communication errors on low quality connections to a target
276
  *   - Added additional bootloader API data to expose the bootloader start address and class to the DFU and CDC class bootloaders
277
  *   - Reverted AVRISP-MKII clone project watchdog based command timeout patch in favour of a hardware timer, to allow for use in devices with WDTRST fuse programmed
278
279
  *   - The library bootloaders will now correctly start the user application after a watchdog-based application start, even if the /HWB line is held low externally
  *     during the reset phase
280
  *   - Increased endpoint polling interval for all demos and projects to 5ms, as 1ms was causing some enumeration issues on some machines (thanks to Riku Salminen)
281
282
283
  *
  *  <b>Fixed:</b>
  *  - Core:
284
285
  *   - Fixed possible enumeration error if the user application selects a pipe other than the default Control pipe between the Powered and Default states of
  *     the host state machine
286
  *   - Fixed incorrect call to the user callback CALLBACK_Audio_Device_GetSetInterfaceProperty() in the Audio Class device driver (thanks to Tiit Ratsep)
287
  *   - Fixed compile error for the UC3 architecture when INTERRUPT_CONTROL_ENDPOINT is specified (thanks to Andrus Aaslaid)
288
  *   - Fixed compile error if LEDs_Disable() is called and BOARD=NONE is set (thanks to Sam Lin)
289
  *   - Fixed inverted LED logic in the OLIMEX162 board LED driver
290
  *   - Fixed incorrect response to GET STATUS requests in device mode if NO_DEVICE_SELF_POWER or NO_DEVICE_REMOTE_WAKEUP tokens are defined (thanks to Georg Glock)
291
  *   - Fixed inverted LED logic in the USB2AX board LED driver
292
293
  *   - Fixed possible deadlock in the CDC device driver if the USB connection is dropped while the CDC_REQ_SetLineEncoding control request is being processed by
  *     the stack (thanks to Jonathan Hudgins)
294
  *   - Fixed broken MIDI host driver MIDI_Host_ReceiveEventPacket() function due to not unfreezing the MIDI data IN pipe before use (thanks to Michael Brown)
295
  *   - Fixed swapped Little Endian/Big Endian endpoint and pipe write code for the UC3 devices (thanks to Andrew Chu)
296
  *   - Fixed the JTAG_DISABLE() macro clearing all other bits in MCUSR when called
297
  *   - Fixed incorrect Micropendous board LED driver LEDs_SetAllLEDs() and LEDs_ChangeLEDs() function implementations (thanks to MitchJS)
298
  *   - Fixed endianess issues in the RNDIS host class driver for UC3 devices (thanks to Andrew Chu)
299
  *  - Library Applications:
300
  *   - Fixed error in the AVRISP-MKII programmer when ISP mode is used at 64KHz (thanks to Ben R. Porter)
301
302
  *   - Fixed AVRISP-MKII programmer project failing to compile for the U4 chips when VTARGET_ADC_CHANNEL is defined to an invalid channel and NO_VTARGET_DETECT is
  *     defined (thanks to Steven Morehouse)
303
  *   - Fixed AVRISP-MKII programmer project reset line polarity inverted when the generated EEP file is loaded into the USB AVR's EEPROM and avr-dude is used
304
  *   - Fixed CDC and DFU bootloaders failing to compile when the bootloader section size is 8KB or more (thanks to Georg Glock)
305
  *   - Fixed CDC and DFU bootloaders API function offsets incorrect on some devices (thanks to Rod DeMay)
306
307
  *   - Fixed incorrect DFU version number reported to the host in the  DFU bootloader descriptors (thanks to Georg Glock)
  *   - Fixed incorrect version hundredths value encoding in VERSION_BCD() macro (thanks to Georg Glock)
308
  *   - Fixed invalid configuration descriptor in the low level KeyboardMouse device demo (thanks to Jun Wako)
309
  *   - Fixed CDC and DFU bootloaders API page erase and write function failures (thanks to Martin Lambert)
310
  *
Dean Camera's avatar
Dean Camera committed
311
  *  \section Sec_ChangeLog120219 Version 120219
312
313
  *  <b>New:</b>
  *  - Core:
314
315
  *   - Added support for the XMEGA A3BU Xplained board
  *   - Added support for the new B series XMEGA devices
316
  *   - Added support for version 2 of the Teensy boards (thanks to Christoph Redecker)
317
  *   - Added support for the USB2AX boards, hardware revision 1-3
318
  *   - Added new Android Accessory Host class driver
319
  *   - Added new USB_Host_GetDescriptor(), USB_Host_GetDeviceConfiguration() and USB_Host_GetInterfaceAltSetting() functions
320
  *   - Added new CALLBACK_Audio_Device_GetSetInterfaceProperty() callback to the Audio Device Class driver
321
  *   - Added new LEDs_Disable(), Buttons_Disable() and Joystick_Disable() functions to the board hardware drivers
322
  *   - Added support for the Micropendous family of boards (Arduino-like revisions 1 and 2, DIP, 32U2, A, 1, 2, 3 and 4)
323
  *   - Added INVERTED_VBUS_ENABLE_LINE and NO_AUTO_VBUS_MANAGEMENT compile time options (thanks to Opendous Inc.)
324
  *   - Added support for the Atmel XMEGA B1 Xplained board
325
326
  *   - Added Serial USART peripheral driver for the XMEGA architecture
  *   - Added Master Mode SPI USART peripheral driver for the XMEGA and AVR8 architectures
327
328
  *   - Added build test to verify correct compilation of as many modules as possible under as many architectures as possible under the C and C++ languages
  *   - Added build test to verify correct compilation of the USB driver when forced into single USB mode under as many architectures as possible
329
330
  *  - Library Applications:
  *   - Added User Application APIs to the CDC and DFU class bootloaders
331
  *   - Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks to Chuck Rohs)
332
  *   - Added new Android Accessory Host demo (thanks to Opendous Inc.)
333
334
335
  *
  *  <b>Changed:</b>
  *  - Core:
336
337
  *   - When automatic PLL management mode is enabled on the U4 series AVR8 chips, the PLL is now configured for 48MHz and not
  *     a divided 96MHz, to lower power consumption and to keep the system within the datasheet specs for 3.3V operation (thanks to Scott Vitale)
338
  *   - Added Class, ClassDevice, ClassHost and ClassCommon to the internal class driver source filenames to prevent ambiguities
339
340
  *   - Altered the Mass Storage Host class driver so that SCSI data STALLs from the attached device can be recovered from automatically without
  *     having to reset the Mass Storage interface
341
  *   - USB_CONFIG_ATTR_BUSPOWERED constant renamed to USB_CONFIG_ATTR_RESERVED, as this was misnamed (thanks to NXP Semiconductors)
342
  *   - Reordered board name definition indexes so that a misspelled BOARD compile option will default to BOARD_USER rather than BOARD_USBKEY
343
  *   - Altered the HID class driver to only try to construct at maximum one packet per USB frame, to reduce CPU usage
344
  *   - All USB Class Driver configuration struct values are now non-const, to allow for run-time modifications if required before configuring an instance
345
  *  - Library Applications:
346
347
  *   - Altered the Mass Storage Host LowLevel demo so that SCSI data STALLs from the attached device can be recovered from automatically without
  *     having to reset the Mass Storage interface
348
349
350
  *   - Updated the AVRISP-MKII Clone programmer project to be compatible with the latest version of AVR Studio (version 5.1)
  *   - Changed the AVRISP-MKII Clone programmer project to report a fixed 3.3V VTARGET voltage on USB AVRs lacking an ADC instead of 5V to prevent
  *     warnings in AVR Studio 5.1 when programming XMEGA devices
351
352
  *   - Allow serial strings to be generated on the older AVR8 devices which do not explicitly state they contain unique values in the datasheet,
  *     as this appears to be implemented in hardware
353
354
355
  *
  *  <b>Fixed:</b>
  *  - Core:
356
  *   - Fixed ring buffer size limited to 255 elements, instead of the intended 65535 elements.
357
  *   - Fixed CDC class drivers not saving and sending all 16-bits of the control line states (thanks to Matthew Swabey)
358
  *   - Fixed race conditions in the CDC, HID and Mass Storage class drivers when processing some control requests
359
  *   - Fixed misspelled HID_KEYBOARD_MODIFIER_* macros in the HID class driver (thanks to Laszlo Monda)
360
361
  *   - Fixed broken AVR32 endpoint/pipe communications when ORDERED_EP_CONFIG compile time option is not enabled (thanks to Matthias Jahr)
  *   - Fixed broken compilation for the AVR32 devices if the NO_SOF_EVENTS compile time option was not enabled (thanks to Matthias Jahr)
362
  *   - Fixed compiler warning on GCC with \c -wundef compile flag is used (thanks to Georg Glock)
363
  *   - Fixed incorrect implementation of LEDs_ToggleLEDs() for the Adafruit-U4 board (thanks to Caroline Saliman)
364
365
366
  *   - Fixed broken compilation of LUFA under C++ compilers when the Serial peripheral module header file is included in a C++ source file
  *   - Fixed missing semicolon in the UC3 architecture host pipe functions
  *   - Fixed failed compilation for the XMEGA architecture if USB_DEVICE_ONLY us not specified
367
  *   - Fixed UC3 architecture ignoring the pipe size when Pipe_ConfigurePipe() is called
368
  *  - Library Applications:
369
  *   - Added reliability patches to the AVRISP-MKII Clone project's PDI/TPI protocols (thanks to Justin Mattair)
370
  *   - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled
371
  *   - Fixed AVRISP-MKII Clone failing to start application firmware once a TPI programming session is exited
372
  *   - Fixed DFU class bootloader not resetting the LED pins as high impedance inputs when a software jump to the user applications is requested
373
  *   - Fixed AVRISP-MKII Clone timing out on long programming commands such as programming the EEPROM on an ATMEGA8 (thanks to Martin Kelling)
374
  *   - Fixed invalid PID value used in the TempDataLogger project host application (thanks to Anupam Pathak)
375
  *
Dean Camera's avatar
Dean Camera committed
376
  *  \section Sec_ChangeLog111009 Version 111009
377
378
  *  <b>New:</b>
  *  - Core:
379
380
  *   - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration
  *     tokens as an alternative to tokens defined in the project makefile
381
  *   - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting
382
  *   - Added Audio class control request definitions
383
  *   - Added new CALLBACK_Audio_Device_GetSetEndpointProperty() callback to the Audio Device Class driver to allow for endpoint control manipulations
384
  *     such as data sample rates
385
  *   - Added support for the Audio class GET STATUS request in the Audio Device Class driver so that it is correctly ACKed when sent by the host
386
  *   - Added new EVENT_Audio_Device_StreamStartStop() event to the Audio Device Class driver to detect stream start/stop events
387
  *   - Added board driver support for the Busware TUL board
388
  *   - Added board hardware driver support for the EVK1100 board
389
  *   - Added board hardware driver support for the EVK1104 board
390
391
392
  *   - Added new Host mode Audio Class driver
  *   - Added new SPI_GetCurrentMode() function to the SPI peripheral driver
  *   - Added RingBuffer_GetFreeCount() function to the Ring Buffer driver
393
  *   - Added new HID_Host_SetIdlePeriod() function to the HID Host Class driver
394
  *   - Added new USB_Host_ConfigurationNumber global variable to indicate the selected configuration in an attached device
395
  *   - Added new USB_Host_GetDeviceStatus() function to the host standard request function set
396
  *   - Added AVR USB XMEGA architecture port (currently incomplete/experimental)
397
  *   - Added new STRINGIFY() and STRINGIFY_EXPANDED() convenience macros
398
  *   - Added new JTAG_DISABLE() macro for the AVR8 architecture
399
  *   - Added Device Qualifier standard descriptor structure definitions USB_StdDescriptor_DeviceQualifier_t and USB_Descriptor_DeviceQualifier_t
400
  *  - Library Applications:
401
  *   - Added RNDIS device mode to the Webserver project
402
  *   - Added new incomplete AndroidAccessoryHost Host LowLevel demo
403
  *   - Added new HIDReportViewer project
404
  *   - Added new MediaControl project
405
406
  *   - Added new AudioInputHost Host ClassDriver demo
  *   - Added new AudioOutputHost Host ClassDriver demo
407
408
  *   - Added new AudioInputHost Host LowLevel demo
  *   - Added new AudioOutputHost Host LowLevel demo
409
  *   - Added new "checksource" target to all library project makefiles
410
  *   - Added new VTARGET_USE_INTERNAL_REF configuration option to the AVRISP-MKII clone project (thanks to Volker Bosch)
411
412
413
  *
  *  <b>Changed:</b>
  *  - Core:
414
415
416
  *   - Altered the definition of the USB_Audio_Descriptor_Format_t descriptor so that the user is now responsible for supplying
  *     the supported audio sampling rates, to allow for multiple audio interfaces with different numbers of supported rates and/or
  *     continuous sample rates
417
418
  *   - Pipe_BoundEndpointNumber() has been renamed to Pipe_GetBoundEndpointAddress(), and now returns the correct endpoint direction
  *     as part of the endpoint address
419
420
421
  *   - Renamed global state variables that are specific to a certain USB mode to clearly indicate which mode the variable relates to,
  *     by changing the USB_* prefix to USB_Device_* or USB_Host_*
  *   - Removed the HOST_STATE_WaitForDeviceRemoval and HOST_STATE_Suspended host state machine states, as these are no longer required
422
423
  *   - Altered the USB_Host_SetDeviceConfiguration() function to update the global Host state machine state and the new
  *     USB_Host_ConfigurationNumber global as required
424
  *   - Added endian correcting code to the library USB class drivers for multiple architecture support
425
  *   - Removed the ENDPOINT_DESCRIPTOR_DIR_* macros, replaced by ENDPOINT_DIR_* instead
426
  *   - Renamed the JTAG_DEBUG_ASSERT() macro to JTAG_ASSERT()
427
  *   - Added variable number of axis to HID_DESCRIPTOR_JOYSTICK() for multi-axis joysticks above just X and Y
428
429
430
431
  *   - Renamed USB_Host_ClearPipeStall() to USB_Host_ClearEndpointStall() as the function works on an endpoint address within the attached device,
  *     and not a Pipe within the host
  *   - The MS_Host_ResetMSInterface() now performs a full Mass Storage reset sequence to prevent data corruption in the event of a device
  *     lock up or timeout (thanks to David Lyons)
432
  *   - Added endian-correction to the CDC driver's Line Encoding control request handlers.
433
  *  - Library Applications:
434
  *   - Modified the Low Level and Class Driver AudioInput and AudioOutput demos to support multiple audio sample rates
435
436
  *   - Updated all host mode demos and projects to use the EVENT_USB_Host_DeviceEnumerationComplete() event callback for device configuration
  *     instead of manual host state machine manipulations in the main application task
437
  *   - Changed the reports in the GenericHID device demos to control the board LEDs, to reduce user confusion over the callback routines
438
  *   - Added reliability patches to the AVRISP-MKII Clone project's ISP and PDI/TPI protocols (thanks to Justin Mattair)
439
440
441
  *
  *  <b>Fixed:</b>
  *  - Core:
442
443
444
  *   - Large number of documentation and code comment corrections (thanks to Andrey from Microsin.ru)
  *   - Fixed possibility of the AVR's SPI interface being pulled out of master mode if the /SS pin is a input and pulled low (thanks
  *     to Andrey from Microsin.ru)
445
446
447
  *   - Fixed compile error when FIXED_CONTROL_ENDPOINT_SIZE compile time option was disabled, and a USE_*_DESCRIPTORS compile time
  *     option was not enabled on the AVR8s
  *   - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects
448
  *   - Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices
449
  *   - Fixed USB_USBTask not being called internally in stream transfers between packets when Partial Stream Transfers are used
450
451
  *   - Fixed swapped TWI_ADDRESS_READ and TWI_ADDRESS_WRITE values
  *   - Fixed TWI_ReadPacket() not releasing the TWI bus on read completion
452
453
454
  *   - Fixed optimization error in the HID Parser item value USB_SetHIDReportItemInfo() and USB_GetHIDReportItemInfo() routines if the report item was
  *     \c NULL (which should be allowable according to the API)
  *   - Fixed HID Parser CALLBACK_HIDParser_FilterHIDReportItem() callback function not being passed a cacheable report item pointer
455
456
  *   - Fixed HID Parser's largest report size bit count not including the size of the last parsed report item
  *   - Fixed HID host driver's largest HID report size count corrupt when the number of report bits exceeds 255
457
  *  - Library Applications:
458
  *   - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2
459
  *   - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed
460
  *   - Fixed compile errors in the incomplete BluetoothHost demo application (thanks to Timo Lindfors)
461
  *   - Fixed incorrect Dataflash buffer use in the DataflashManager_WriteBlocks_RAM() function of several demos/projects (thanks to Jeremy Willden)
462
  *   - Fixed incorrect logging interval (always 500ms longer than requested) in the TempDataLogger project
463
  *   - Fixed incorrect buffer size check in the USBtoSerial project (thanks to Yuri A Nikiforov)
464
  *   - Fixed port state table corruption in the TCP layer of the RNDIS Ethernet device demos
465
466
467
468
  *
  *  \section Sec_ChangeLog110528 Version 110528
  *  <b>New:</b>
  *  - Core:
469
470
  *   - Added new ORDERED_EP_CONFIG compile time option to restrict endpoint/pipe configuration to ascending order
  *     in exchange for a smaller compiled program binary size
471
472
  *   - Added a new general RingBuff.h miscellaneous ring buffer library driver header
  *   - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses
473
  *   - Added new GCC_MEMORY_BARRIER() macro to prevent instruction reordering across boundaries
474
  *   - Added basic driver example use code to the library documentation
Dean Camera's avatar
Dean Camera committed
475
  *   - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions
476
  *   - Added new ADC_GET_CHANNEL_MASK() convenience macro
477
  *   - Added new HID report item macros (with HID_RI_ prefix) to allow for easy creation and editing of HID report descriptors
478
  *   - Added new HID_DESCRIPTOR_MOUSE(), HID_DESCRIPTOR_KEYBOARD(), HID_DESCRIPTOR_JOYSTICK() and HID_DESCRIPTOR_VENDOR() macros
479
  *     for easy automatic creation of basic USB HID device reports
480
  *   - Added new MAX() and MIN() convenience macros
481
  *   - Added new Serial_SendData() function to the Serial driver
482
  *   - Added board driver support for the Sparkfun ATMEGA8U2 breakout board
483
484
  *   - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus)
  *   - Internal restructuring for eventual multiple architecture ports
485
  *   - Added AVR32 UC3 architecture port (currently incomplete/experimental)
486
487
  *   - Added new architecture independent functions to enable, disable, save and restore the Global Interrupt Enable flags
  *   - Added new RNDIS Device Class Driver packet send and receive functions
488
  *  - Library Applications:
489
  *   - Added ability to write protect Mass Storage disk write operations from the host OS
490
  *   - Added new MIDIToneGenerator project
491
  *   - Added new KeyboardMouseMultiReport Device ClassDriver demo
492
  *   - Added new VirtualSerialMassStorage Device ClassDriver demo
493
494
  *   - Added HID class bootloader, compatible with a modified version of the command line Teensy loader from PJRC.com
  *   - Added LED flashing to the CDC and DFU class bootloaders to indicate when they are running
495
496
497
  *
  *  <b>Changed:</b>
  *  - Core:
498
  *   - Unordered Endpoint/Pipe configuration is now allowed once again by default via the previous reconfig workaround
499
500
  *   - Refactored Host mode Class Driver *_Host_ConfigurePipes() routines to be more space efficient when compiled
  *   - Added new *_ENUMERROR_PipeConfigurationFailed error codes for the *_Host_ConfigurePipes() routines
501
502
  *   - The USARTStream global is now public and documented in the SerialStream module, allowing for the serial USART
  *     stream to be accessed via its handle rather than via the implicit stdout and stdin streams
503
  *   - The FAST_STREAM_TRANSFERS compile time option has been removed due to lack of use and low cost/benefit ratio
504
505
506
507
  *   - Altered all endpoint/pipe stream transfers so that the new BytesProcessed parameter now points to a location
  *     where the number of bytes in the transfer that have been completed can be stored (or NULL if entire transaction
  *     should be performed in one chunk)
  *   - The NO_STREAM_CALLBACKS compile time option has now been removed due to the new partial stream transfer feature
508
509
  *   - Changed over all project and demo HID report descriptors to use the new HID report item macros
  *   - Moved the HIDParser.c source file to the LUFA/Drivers/USB/Class/Common/ directory from the LUFA/Drivers/USB/Class/Host/
510
  *   - Added support to the HID parser for extended USAGE items that contain the usage page as well as the usage index
511
512
513
514
515
  *   - Removed the SerialStream driver, rolled functionality into the regular Serial peripheral driver via the new
  *     Serial_CreateStream() and Serial_CreateBlockingStream() functions
  *   - Renamed the low level Serial byte send/receive functions, to be consistent with the CDC class driver byte functions
  *   - Altered the behaviour of the serial byte reception function so that is is non-blocking, and now returns a negative
  *     value if no character is received (to remain consistent with the CDC class driver byte reception routines)
516
517
  *   - Renamed the PRNT_Host_SendString(), CDC_Host_SendString() and CDC_Device_SendString() functions to *_SendData(), and
  *     added new versions of the *_SendString() routines that expect a null terminated string instead
518
  *   - Renamed all driver termination *_ShutDown() functions to the more logical name *_Disable()
519
  *   - Reduced latency for executing the Start-Of-Frame events (if enabled in the user application)
520
  *   - Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called
521
  *   - Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name
522
  *   - Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs when automatic PLL mode is specified
523
  *   - F_CLOCK changed to F_USB to be more descriptive, and applicable on future architecture ports
524
525
526
527
  *   - Renamed all low level Endpoint_Read_*, Endpoint_Write_* and Endpoint_Discard_* functions to use the number of bits instead of
  *     a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures
  *   - Renamed all low level Pipe_Read_*, Pipe_Write_* and Pipe_Discard_* functions to use the number of bits instead of
  *     a symbolic size (Byte, Word, DWord) so that the function names are applicable and correct across all architectures
528
  *   - Separated out board drivers by architecture in the library internals for better organisation
529
  *  - Library Applications:
530
  *   - Changed the XPLAINBridge software UART to use the regular timer CTC mode instead of the alternative CTC mode
531
  *     via the Input Capture register, to reduce user confusion
532
533
  *   - Combined page and word ISP programming mode code in the AVRISP-MKII clone project to reduce compiled size and
  *     increase maintainability of the code
534
  *   - Changed over library projects to use the new general ring buffer library driver module
535
  *   - Added new high level TWI packet read/write commands, altered behaviour of the TWI_StartTransmission() function
536
  *   - Changed TempDataLogger project's DS1307 driver to simplify the function interface and prevent a possible race condition
537
538
  *   - Changed AVRISP-MKII project to use the Watchdog interrupt for command timeouts, to reduce CPU usage and free timer 0
  *     for other uses
539
  *   - Updated the software USART code in the XPLAIN Bridge application so that the incoming bits are sampled at their mid-point
540
  *     instead of starting point, to give maximum reliability (thanks to Anton Staaf)
541
542
543
  *
  *  <b>Fixed:</b>
  *  - Core:
544
  *   - Fixed broken USBFOO board drivers due to missing BOARD_USBFOO define
545
  *   - Fixed HID host class driver incorrectly binding to HID devices that do not have an OUT endpoint
546
  *   - Fixed incorrect definition of the HID_KEYBOARD_SC_D constant in the HID class driver (thanks to Opendous Inc.)
547
  *   - Fixed incorrect definition of the HID_KEYBOARD_SC_RIGHT_ARROW constant in the HID class driver (thanks to Joby Taffey)
548
  *   - Fixed incorrect endpoint initialisation order in the several device demos (thanks to Rick Drolet)
549
  *   - Fixed inverted Minimus board LEDs
550
  *   - Fixed incorrect byte ordering in the Audio_Device_WriteSample24 function (thanks to WZab)
551
552
  *   - Fixed several functions in the Host mode Still Image Class driver returning an error code from the incorrect
  *     error code enum (thanks to Daniel Seibert)
553
  *   - Fixed ReportID not being removed from the feature/out report data array in the HID class driver when Report IDs are used
554
  *   - Fixed incorrect BUTTONS_BUTTON1 definition for the Minimus board
Dean Camera's avatar
Dean Camera committed
555
556
557
  *   - Fixed Still Image Host class driver exiting the descriptor search routine prematurely if the data pipes (but not event pipe)
  *     is found
  *   - Fixed missing call to Pipe_SetInfiniteINRequests() in the Pipe_ConfigurePipe() routine
558
  *   - Fixed Remote Wakeup broken on the AVRs due to the mechanism only operating when the SUSPI bit is set (thanks to Holger Steinhaus)
559
  *   - Fixed possible invalid program execution when in host mode if corrupt descriptor lengths are supplied by the attached device
560
561
  *  - Library Applications:
  *   - Fixed Benito project discarding incoming data from the USB virtual serial port when the USART is busy
562
  *   - Fixed broken DFU bootloader, added XPLAIN support for bootloader start when XCK jumpered to ground
563
  *   - Fixed broken HID_REQ_GetReport request handler in the Low Level GenericHID demo
564
565
  *   - Fixed possible lost data in the XPLAINBridge, USBtoSerial and Benito projects when the host exceeds the packet
  *     timeout period on received packets as set by USB_STREAM_TIMEOUT_MS (thanks to Justin Rajewski)
566
567
  *   - Fixed possible programming problem in the AVRISP-MKII clone project when programming specific patterns into a target
  *     memory space that is only byte (not page) addressable
568
  *   - Fixed errors in the incomplete Test and Measurement device demo preventing proper operation (thanks to Pavel Plotnikov)
569
570
  *   - Fixed programming errors in the AVRISP-MKII project when the programming packet is a round multiple of the endpoint bank
  *     size under avrdude (thanks to Steffan Woltjer)
Dean Camera's avatar
Dean Camera committed
571
  *
572
  *
Dean Camera's avatar
Dean Camera committed
573
  *  \section Sec_ChangeLog101122 Version 101122
574
  *  <b>New:</b>
575
576
577
578
579
580
581
582
583
584
585
  *  - Core:
  *    - Added new SCSI_ASENSE_NOT_READY_TO_READY_CHANGE constant to the Mass Storage class driver, to indicate when a previously
  *      not ready removable medium has now become ready for the host's use (thanks to Martin Degelsegger)
  *    - Moved the Pipe and Endpoint stream related code to two new USB library core source files EndpointStream.c and PipeStream.c
  *    - Added new USB_Device_GetFrameNumber() and USB_Host_GetFrameNumber() functions to retrieve the current USB frame number
  *    - Added new USB_Host_EnableSOFEvents(), USB_Host_DisableSOFEvents() and EVENT_USB_Host_StartOfFrame() for the user application
  *      handling of USB Start of Frame events while in USB Host mode
  *    - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the
  *      Print Host Class driver
  *    - Added class specific descriptor alternative struct type defines with standard USB-IF element naming
  *    - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory
586
  *    - Added board hardware driver support for the Adafruit U4 breakout board
587
588
  *    - Added board hardware driver support for the Arduino Uno development board
  *    - Added board hardware driver support for the Blackcat USB JTAG board (thanks to the PSGroove team)
589
590
591
592
593
  *    - Added board hardware driver support for the Busware BUI development board
  *    - Added board hardware driver support for the Busware CUL V3 868MHZ radio board (thanks to Dirk Tostmann)
  *    - Added board hardware driver support for the Kernel Concepts USBFOO development board
  *    - Added board hardware driver support for the Linnix UDIP development board
  *    - Added board hardware driver support for the Olimex AVR-USB-162 development board (thanks to Steve Fawcett)
594
  *    - Added board hardware driver support for the Maximus board (thanks to the PSGroove team)
595
  *    - Added board hardware driver support for the Microsin AVR-USB162 breakout board
596
597
598
  *    - Added board hardware driver support for the Minimus board (thanks to the PSGroove team)
  *    - Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management
  *      tasks for each driver is called
599
  *    - Added standard keyboard HID report scan-code defines (thanks to Laszlo Monda)
600
601
602
603
604
605
  *    - Added new Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() and Endpoint_AbortPendingIN() functions
  *  - Library Applications:
  *    - Added default test tone generation mode to the Device mode AudioInput demos
  *    - Added new NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT and NO_LOCK_BYTE_WRITE_SUPPORT compile time options to the
  *      CDC class bootloader
  *    - Added new XCK_RESCUE_CLOCK_ENABLE compile time option to the AVRISP-MKII clone programmer project (thanks to Tom Light)
606
  *
607
  *  <b>Changed:</b>
608
609
610
611
612
613
614
615
616
617
618
619
620
  *  - Core:
  *    - Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions
  *      depending of if the given bank size is a compile time constant, as the compiler does a better job of optimizing
  *      with basic code
  *    - Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove
  *      the need for extra casting inside the callback (thanks to Jonathan Kollasch)
  *    - Reduced HOST_DEVICE_SETTLE_DELAY_MS to 1000ms down from 1500ms to improve device compatibility while in USB Host mode
  *    - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode correctly now defaults to UID selection mode
  *    - Renamed and moved class driver common constant definitions to make the naming scheme more uniform
  *    - Moved the USB mode specifier constants into a new enum, so that they are semantically related to one another
  *    - Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of supported banks for
  *      the given endpoint
  *    - Better algorithm to extract and convert the internal device serial number into a string descriptor (if present)
621
  *    - All USB class drivers are now automatically included when LUFA/Drivers/USB.h is included, and no longer need to be separately included
622
623
624
625
626
627
628
629
630
631
  *    - The MIDI class drivers now automatically flushes the MIDI interface when the MIDI class driver's USBTask() function is called
  *    - Renamed the EVENT_USB_Device_UnhandledControlRequest() event to EVENT_USB_Device_ControlRequest() as it is now fired before the library
  *      request handlers, not afterwards
  *  - Library Applications:
  *    - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints
  *    - Added missing DataflashManager_CheckDataflashOperation() function to the MassStorageKeyboard demo, removed redundant
  *      SCSI_Codes.h file as these values are part of the MassStorage Class Driver
  *    - Added compile time error to the AVRISP-MKII project when built for the U4 chips, as the default VTARGET detection ADC channel
  *      does not exist on these chips (thanks to Marco)
  *    - Changed all Device mode LowLevel demos and Device Class drivers so that the control request is acknowledged and any data
632
  *      transferred as quickly as possible without any processing in between sections, so that long callbacks or event handlers will
633
634
635
636
637
638
639
640
641
  *      not break communications with the host by exceeding the maximum control request stage timeout period
  *    - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible
  *      to free up the Start of Frame flag for interrupt use in the user application
  *    - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany)
  *    - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive
  *    - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices
  *    - All LowLevel demos changed to use the constants and types defined in the USB class drivers
  *    - Changed AudioInput and AudioOutput demos to reload the next sample via an interrupt rather than polling the sample timer
  *    - Rescue clock of the AVRISP-MKII moved to the AVR's OCR1A pin, so that the clock can be generated at all times
642
643
  *    - Changed ClassDriver MIDI demos to process all incoming events in a loop until the bank becomes empty rather than one at a time
  *    - Changed LowLevel MIDI demos to only clear the incoming event bank once it has become empty to support packed event packets
644
  *
645
  *  <b>Fixed:</b>
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
  *  - Core:
  *    - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist
  *      within the supplied report of a multiple report HID device
  *    - Fixed critical pipe/endpoint memory allocation issue where the bank memory address space could be silently overlapped
  *      in the USB controller if the endpoints or pipes were allocated in anything other than ascending order (thanks to Martin Degelsegger)
  *    - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev)
  *    - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts
  *    - Fixed USB_Host_ClearPipeStall() incorrectly determining the endpoint direction from the currently selected pipe
  *    - Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode
  *    - Fixed endpoint selection within the CALLBACK_HID_Device_CreateHIDReport() callback function causing broken GET REPORT requests
  *    - Fixed incorrect command name for EEPROM memory programming in the makefile dfu-ee target
  *    - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver
  *    - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set
  *    - Fixed SPI driver not explicitly setting /SS and MISO pins as inputs when SPI_Init() is called
  *    - Fixed random enumeration failure while in device mode due to interrupts causing the Set Address request to exceed maximum timings
  *    - Fixed MIDI_Host_Flush() not aborting early when the specified MIDI host interface was not configured
  *    - Fixed MIDI class driver send routines silently discarding packets if the endpoint or pipe is busy (thanks to Robin Green)
  *  - Library Applications:
  *    - Fixed MassStorage based demos and projects resetting the SCSI sense values before the command is executed, leading to
  *      missed SCSI sense values when the host retrieves the sense key (thanks to Martin Degelsegger)
  *    - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control
  *      request handler
  *    - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value
  *    - Fixed incorrect signature reported in the CDC class bootloader for the ATMEGA32U2
  *    - Fixed BootloaderCDC project failing on some operating systems due to removed Line Encoding options (thanks to Alexey Belyaev)
  *    - Fixed broken FLASH/EEPROM programming in the AVRISP-MKII clone project when writing in non-paged mode and the polling byte cannot be used
  *    - Fixed ISR definition conflict in the XPLAIN bridge between the software UART and the AVRISP-MKII ISP modules
  *    - Fixed USBtoSerial and XPLAINBridge demos discarding data from the PC if the send buffer becomes full
  *    - Fixed broken input in the MagStripe reader project due to an incorrect HID report descriptor
  *    - Fixed incorrect PollingIntervalMS values in the demo/project/bootloader endpoint descriptors (thanks to MCS Electronics)
  *    - Fixed AVRISP-MKII clone project not starting the target's program automatically after exiting TPI programming mode
677
  *
678
  *
Dean Camera's avatar
Dean Camera committed
679
  *  \section Sec_ChangeLog100807 Version 100807
680
  *  <b>New:</b>
681
  *  - Added new ADC_DisableChannel() function (thanks to Mich Davis)
682
683
  *  - Added new VTARGET_REF_VOLTS and VTARGET_SCALE_FACTOR compile time defines to the AVRISP-MKII programmer project to set
  *    the VTARGET reference voltage and scale factor
684
685
  *  - Added new pgm_read_ptr() macro to Common.h for reading of pointers out of flash memory space
  *  - Added new SWAPENDIAN_16() and SWAPENDIAN_32() macros to Common.h for statically initialized variables at compile time
686
  *  - Added new Drivers/USB/LowLevel/Device.c file to house Device mode specific functions that are more complicated than simple macros
687
  *  - Added new AVRStudio 4 project files for all library demos, projects and bootloaders
688
  *  - Added ability to set the serial baud rate via the user's terminal in the XPLAINBridge project
689
  *  - Added new LUFA module variables for the different source modules in the core library makefile to simplify project makefiles
690
  *  - Added start of a new Test and Measurement class demo (thanks to Peter Lawrence)
691
692
  *  - Added new SPI_ORDER_* data order masks to the SPI peripheral driver
  *  - Added support to the AVRISP-MKII project for ISP speeds slower than 125KHz via a new software SPI driver
693
  *  - Added support for the new button/LED on the latest model USBTINY-MKII
694
695
  *
  *  <b>Changed:</b>
696
697
  *  - The RingBuff library code has been replaced in the XPLAINBridge, Benito and USBtoSerial projects with an ultra lightweight
  *    ring buffer to help improve the reliability of the projects
698
699
700
701
  *  - The EEPROM stream read/write functions now use eeprom_update_byte() instead of eeprom_write_byte(), so that only
  *    changed bytes are written to EEPROM to preserve its lifespan
  *  - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile
  *    parameters to EEPROM to preserve its lifespan
702
  *  - Removed unused line encoding data and control requests from the CDC Bootloader code, to save space
703
  *  - Renamed SERIAL_STREAM_ASSERT() macro to STDOUT_ASSERT()
704
  *  - The USB_Device_IsRemoteWakeupSent() and USB_Device_IsUSBSuspended() macros have been deleted, as they are now obsolete
705
706
  *  - Rewrote the implementation of the SwapEndian_16() and SwapEndian_32() functions so that they compile down in most instances to
  *    minimal loads and stores rather than complicated shifts
707
  *  - The software UART in the XPLAINBridge has been largely altered to try to improve upon its performance and reliability
708
  *  - The USBtoSerial and Benito projects now flushes received data via a flush timer, so that several bytes can be transmitted at once
709
  *  - Removed the automated checking of event names in the demo, project and bootloader makefiles due to inconsistencies between the
710
  *    behaviour of the command line tools used to perform the check on each platform
711
  *  - Internal USB driver source files renamed and moved to ease future possible architecture ports
712
  *  - All internal pseudo-function macros have been converted to true inline functions for type-safety and readability
713
  *  - Changed LED indicator masks for the AVRISP-MKII project, so that there are defined roles for each LED
714
  *  - Altered the CDC Device and Host Class drivers' receive byte routines, so that no data is indicated by the function returning a
715
  *    negative value (thanks to Andreas Paulin)
716
  *  - Added auto flushing of OUT data to the CDC Host Class driver's USBTask function to automatically flush the send pipe buffer
717
718
  *
  *  <b>Fixed:</b>
719
  *  - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
720
721
722
  *    the last page of FLASH (thanks to Gerard Sexton)
  *  - Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM
  *    instead of the split write-only command (thanks to Tim Margush)
723
724
  *  - Fixed RNDISEthernet demos crashing when calculating checksums for Ethernet/TCP packets of more than ~500 bytes due to
  *    an overflow in the checksum calculation loop (thanks to Kevin Malec)
725
  *  - Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host
726
  *  - Fixed incorrect signature for the ATMEGA32U2 in the DFU bootloader (thanks to Axel Rohde)
727
  *  - Fixed internal device serial not being accessible on the ATMEGAXXU2 AVRs (thanks to Axel Rohde)
728
  *  - Fixed void pointer arithmetic in ConfigDescriptor.h breaking C++ compatibility (thanks to Michael Hennebry)
729
  *  - Fixed broken PDI EEPROM Section Erase functionality in the AVRISP-MKII project
730
  *  - Fixed USB_Device_SendRemoteWakeup() not working when the USB clock was frozen during USB bus suspend (thanks to Brian Dickman)
731
732
  *  - Fixed occasional lockup of the AVRISP project due to the timeout extension code incorrectly extending the timeout in
  *    PDI and TPI programming modes infinitely
733
734
  *  - Fixed HID device class driver still using PrevReportINBuffer for GetReport control requests even when it has been
  *    set to NULL by the user application (thanks to Axel Rohde)
735
  *  - Fixed MIDI_Device_SendEventPacket() not correctly waiting for the endpoint to become ready (thanks to Robin Green)
736
737
  *  - Fixed Benito and USBtoSerial projects not turning off the USART before reconfiguring it, which could cause incorrect
  *    operation to occur (thanks to Bob Paddock)
738
739
  *  - Fixed Serial peripheral driver not turning off the USART before reconfiguring it, which would cause incorrect operation
  *    to occur (thanks to Bob Paddock)
740
741
  *  - Fixed software application start command broken in the DFU class bootloader when dfu-programmer is used due to application
  *    start address corruption
Dean Camera's avatar
Dean Camera committed
742
  *
743
  *
744
  *  \section Sec_ChangeLog100513 Version 100513
745
746
747
748
749
750
751
752
  *  <b>New:</b>
  *  - Added incomplete MIDIToneGenerator project
  *  - Added new Relay Controller Board project (thanks to OBinou)
  *  - Added board hardware driver support for the Teensy, USBTINY MKII, Benito and JM-DB-U2 lines of third party USB AVR boards
  *  - Added new ATTR_NO_INIT variable attribute for global variables that should not be automatically cleared on startup
  *  - Added new ENDPOINT_*_BusSuspended error code to the Endpoint function, so that the stream functions early-abort if the bus
  *    is suspended before or during a transfer
  *  - Added new EVENT_CDC_Device_BreakSent() event and CDC_Host_SendBreak() function to the Device and Host CDC Class drivers
753
754
755
756
  *  - Added ReportType parameter to the HID device class driver CALLBACK_HID_Device_ProcessHIDReport() function so that FEATURE
  *    reports from the host to the device can be correctly processed
  *  - Added ReportType parameter to the HID host class driver HID_Host_SendReportByID() function so that FEATURE reports can be
  *    issued to the attached device
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
  *
  *  <b>Changed:</b>
  *  - AVRISP programmer project now has a more robust timeout system
  *  - Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond
  *  - Webserver project now uses the board LEDs to indicate the current IP configuration state
  *  - Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired
  *  - Increased throughput of the USBtoSerial demo on systems that send multiple bytes per packet (thanks to Opendous Inc.)
  *  - Double bank CDC endpoints in the XPLAIN Bridge project, re-enable JTAG once the mode selection pin has been sampled.
  *  - Standardized the naming scheme given to configuration descriptor sub-elements in the Device mode demos, bootloaders
  *    and projects
  *  - All Class Driver Host mode demos now correctly set the board LEDs to READY once the enumeration process has completed
  *  - Added LIBUSB_FILTERDRV_COMPAT compile time option to the AVRISP programmer project to make the code compatible with Windows
  *    builds of avrdude at the expense of AVRStudio compatibility
  *  - Removed two-step endpoint/pipe bank clear and switch sequence for smaller, faster endpoint/pipe code
  *  - The USB_Init() function no longer calls sei() - the user is now responsible for enabling interrupts when they are ready
  *    for them to be enabled (thanks to Andrei Krainev)
  *  - The Audio_Device_IsSampleReceived() and Audio_Device_IsReadyForNextSample() functions are now inline, to reduce overhead
  *  - Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be
  *    selected (thanks to Steffan Woltjer)
  *  - Removed software PDI and TPI emulation from the AVRISP-MKII clone project as it was very buggy and slow - PDI and TPI must
777
  *    now be implemented via separate programming headers
778
779
780
781
  *  - The CDC class bootloader now uses a watchdog reset rather than a soft-reset when exited to ensure that all hardware is
  *    properly reset to their defaults
  *  - Device mode class driver callbacks are now fired before the control request status stage is sent to prevent the host from
  *    timing out if another request is immediately fired and the device has a lengthy callback routine
782
783
784
  *  - The TeensyHID bootloader has been removed, per request from Paul at PJRC
  *  - The LIBUSB_FILTERDRV_COMPAT compile time option in the XPLAINBridge and AVRISP-MKII projects has been renamed
  *    LIBUSB_DRIVER_COMPAT, as it applies to all software on all platforms using the libUSB driver
785
786
  *
  *  <b>Fixed:</b>
787
788
789
  *  - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly
  *    selected when the ISR completes
  *  - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address
790
  *    boundary is crossed during programming or read back (thanks to Gerard Sexton)
791
  *  - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
  *  - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
  *  - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
  *  - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus
  *  - Fixed ADC routines not correctly returning the last result when multiple channels were read
  *  - Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the
  *    U4 series USB AVR parts
  *  - Fixed LowLevel MassStorage demo broken on the U2 series USB AVRs due to unsupported double-banked endpoint modes used
  *  - Fixed compilation error in the AudioInput demos when MICROPHONE_BIASED_TO_HALF_RAIL is defined (thanks to C. Scott Ananian)
  *  - Fixed incorrect definition of HID_ALIGN_DATA() causing incorrect HID report item data alignment
  *  - Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending
  *    a valid session ID to the device
  *  - Removed invalid dfu and flip related targets from the bootloaders - bootloaders can only be replaced with an external programmer
  *  - Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host
  *  - Fixed HID Device Class Driver not allocating a temporary buffer when the host requests a report via the control endpoint and the
  *    user has set the PrevReportINBuffer driver configuration element to NULL (thanks to Lars Noschinski)
  *  - Fixed device state not being reset to DEVICE_STATE_Default if the host sets a 0x00 device address
  *  - Fixed device not stalling configuration requests before the device's address has been set
  *  - Fixed possibility of internal signature retrieval being corrupted if an interrupt occurs during a signature byte
  *    read (thanks to Andrei Krainev)
  *  - Fixed device state not being reset back to the default state i