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

/** \page Page_Migration Migrating from Older Versions
 *
 *  Below is migration information for updating existing projects based on previous versions of the LUFA library
 *  to the next version released. It does not indicate all new additions to the library in each version change, only
 *  areas relevant to making older projects compatible with the API changes of each new release.
 *
13
 *  \section Sec_MigrationXXXXXX Migrating from 111009 to XXXXXX
14 15 16
 *  <b>USB Core</b>
 *    - The HID_KEYBOARD_MODIFER_* macros in the HID class driver have been corrected to HID_KEYBOARD_MODIFIER_* (note the spelling of "modifier").
 *      Existing applications should switch over to the correctly spelled macro names.
17
 *
18
 *  \section Sec_Migration111009 Migrating from 110528 to 111009
19 20
 *  <b>Non-USB Library Components</b>
 *    - The \c JTAG_DEBUG_ASSERT() macro has been renamed \ref JTAG_ASSERT() to be consistent with \ref STDOUT_ASSERT().
21
 *
22 23
 *  <b>USB Core</b>
 *    - By default, unordered Endpoint and Pipe configuration is now allowed once again, via the previous workaround of
24
 *      reconfiguring all Endpoints/Pipes in order each time a new Endpoint/Pipe is created. To minimize the compiled program
25
 *      size, the new \c ORDERED_EP_CONFIG compile time option may be defined in the project makefile to restrict the ordering
26
 *      in exchange for a smaller compiled binary size.
Dean Camera's avatar
Dean Camera committed
27
 *    - The previous \c F_CLOCK symbol, required in the project makefile, has been renamed to \c F_USB. This is due to the previous name
28
 *      being far too generic for use in future architecture ports, where multiple clock domains are used.
Dean Camera's avatar
Dean Camera committed
29
 *
30
 *  <b>Device Mode</b>
31 32 33
 *    - The Endpoint stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter.
 *      This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes
 *      processed in the current transaction can be stored. If the \c BytesProcessed parameter is non \c NULL, each time the endpoint
34 35
 *      bank becomes full and the packet is sent, the routine will exit with the new \ref ENDPOINT_RWSTREAM_IncompleteTransfer
 *      error code to allow the user application to determine when to send the next chunk of data.
36 37
 *    - The \ref CDC_Device_SendString() function now expects a null terminated string instead of an explicit length. Existing code
 *      should use the new \ref CDC_Device_SendData() function, or remove the length parameter from the function call.
Dean Camera's avatar
Dean Camera committed
38
 *    - The \c Endpoint_ResetFIFO() function has been renamed to \ref Endpoint_ResetEndpoint(), to make the API function names more
39
 *      consistent. Existing applications using the old function name should simply replace it with a call to the new function name.
Dean Camera's avatar
Dean Camera committed
40
 *    - The \c Endpoint_*_Byte() functions have been renamed Endpoint_*_8() to ensure they are correct across all architectures. Existing
41
 *      code using these functions should replace the previous function names with the new function names.
Dean Camera's avatar
Dean Camera committed
42
 *    - The \c Endpoint_*_Word() functions have been renamed Endpoint_*_16() to ensure they are correct across all architectures. Existing
43
 *      code using these functions should replace the previous function names with the new function names.
Dean Camera's avatar
Dean Camera committed
44
 *    - The \c Endpoint_*_DWord() functions have been renamed Endpoint_*_32() to ensure they are correct across all architectures. Existing
45
 *      code using these functions should replace the previous function names with the new function names.
46 47
 *    - The Device mode RNDIS class driver no longer stores the incoming and outgoing packets in the class driver instance; the user is
 *      now expected to manually define a storage location for the packet data. Packets must now be sent and received manually via a call
48
 *      to \ref RNDIS_Device_ReadPacket() and/or \ref RNDIS_Device_SendPacket().
49 50 51 52 53 54 55 56 57 58 59 60 61 62
 *    - The definition of the Audio class \ref USB_Audio_Descriptor_Format_t has been altered, to remove the fixed singular
 *      audio sample rate in the descriptor definition, and to rename the \c SampleFrequencyType to the more appropriate
 *      \c TotalDiscreteSampleRates. Existing applications will need to add an array of \ref USB_Audio_SampleFreq_t elements
 *      immediately following any \ref USB_Audio_Descriptor_Format_t descriptors, and insert the appropriate sampling rates
 *      supported by the device, as well as rename the descriptor elements to match the updated element names.
 *    - The device mode Audio class driver now requires a new user application callback, \ref CALLBACK_Audio_Device_GetSetEndpointProperty().
 *      Existing applications must implement this new callback, however if multiple sample rates or pitch control is not used,
 *      this function may be hard-coded to always return false for previous behaviour to be retained.
 *    - The \c USB_ConfigurationNumber, \c USB_RemoteWakeupEnabled and \c USB_CurrentlySelfPowered globals have been renamed to
 *      \ref USB_Device_ConfigurationNumber, \ref USB_Device_RemoteWakeupEnabled and \ref USB_Device_CurrentlySelfPowered to clearly indicate
 *      the USB mode they relate to. Existing applications using these variables should rename all references to the previous names.
 *    - The \c ENDPOINT_DESCRIPTOR_DIR_IN and \c ENDPOINT_DESCRIPTOR_DIR_OUT macros have now been replaced by \ref ENDPOINT_DIR_IN and
 *      \ref ENDPOINT_DIR_OUT to improve code clarity.
 *    - The \ref HID_DESCRIPTOR_JOYSTICK() macro now takes an additional (first) parameter indicating the number of axis in the joystick.
63 64
 *
 *  <b>Host Mode</b>
65 66 67
 *    - The Pipe stream functions now all require a \c BytesProcessed parameter instead of the previous callback parameter.
 *      This should be set to \c NULL to retain previous behaviour of the functions, or point to a location where the number of bytes
 *      processed in the current transaction can be stored. If the BytesProcessed parameter is non \c NULL, each time the pipe
68 69
 *      bank becomes full and the packet is sent, the routine will exit with the new \ref PIPE_RWSTREAM_IncompleteTransfer
 *      error code to allow the user application to determine when to send the next chunk of data.
70 71 72
 *    - The \ref PRNT_Host_SendString() and \ref CDC_Host_SendString() functions now expect a null terminated string instead of an explicit
 *      length. Existing code should use the new \ref PRNT_Host_SendData() and \ref CDC_Host_SendData() functions, or remove the
 *      length parameter from the function call.
Dean Camera's avatar
Dean Camera committed
73
 *    - The \c Pipe_ClearErrorFlags() function has been removed, as the pipe error flags are now automatically cleared when the
74
 *      \ref Pipe_ClearError() function is called.
Dean Camera's avatar
Dean Camera committed
75
 *    - The \c Pipe_*_Byte() functions have been renamed Pipe_*_8() to ensure they are correct across all architectures. Existing code using
76
 *      these functions should replace the previous function names with the new function names.
Dean Camera's avatar
Dean Camera committed
77
 *    - The \c Pipe_*_Word() functions have been renamed Pipe_*_16() to ensure they are correct across all architectures. Existing code using
78
 *      these functions should replace the previous function names with the new function names.
Dean Camera's avatar
Dean Camera committed
79
 *    - The \c Pipe_*_DWord() functions have been renamed Pipe_*_32() to ensure they are correct across all architectures. Existing code using
80
 *      these functions should replace the previous function names with the new function names.
Dean Camera's avatar
Dean Camera committed
81 82 83
 *    - The \c USB_Host_ClearPipeStall() function has been renamed to USB_Host_ClearEndpointStall(), as it operates on a full endpoing address
 *      within the attached device and not a pipe within the host. Existing code using the old function name should update the function calls and
 *      check for correct usage.
84
 *
Dean Camera's avatar
Dean Camera committed
85
 *  \section Sec_Migration101122 Migrating from 100807 to 101122
86
 *  <b>USB Core</b>
87
 *    - A new USB driver source file, \c Drivers/USB/HighLevel/EndpointStream.c now exists. This source file should be added
88 89
 *      to all project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source
 *      variables.
90
 *    - A new USB driver source file, \c Drivers/USB/HighLevel/PipeStream.c now exists. This source file should be added to all
91
 *      project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables.
92
 *    - The \c EVENT_USB_InitFailure() event has been removed, as the \ref USB_Init() function will no longer fail; if not USB mode is
93
 *      specified, the controller will default to UID selection mode.
94 95
 *    - The USB mode specifier constants have been moved into a new enum and renamed. Existing projects should use the equivalent
 *      value in the new \ref USB_Modes_t enum.
96
 *    - All class driver headers are now included as part of the standard \c LUFA/Drivers/USB/USB.h master dispatch header, and should
97
 *      no longer be included separately. Class driver module source files must still be added as a separate module in the project's
98
 *      makefile if used.
99
 *
100
 *  <b>Device Mode</b>
101 102
 *    - Endpoints MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application
 *      allocated endpoints in ascending order - or if your application uses the USB device mode class drivers, ensure that each instance's
103
 *      endpoint indexes are not overlapped with other interface's endpoints.
104 105 106
 *    - The signature for the \ref CALLBACK_USB_GetDescriptor() callback has changed, the \c void** \c const \c DescriptorAddress parameter is
 *      now \c const \c void** \c const \c DescriptorAddress. Existing applications should update their callback signatures to match this, and
 *      eliminate any casting of descriptor pointers to a non \c const pointer.
107 108
 *    - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation
 *      for each class driver for the new class specific descriptor type names.
109
 *    - The \c ENDPOINT_DOUBLEBANK_SUPPORTED() macro is has been renamed \ref ENDPOINT_BANKS_SUPPORTED() and now returns the total number of
110
 *      banks supported by the given endpoint. Existing code should switch to the new naming scheme, and test that the return value of the
111
 *      macro is equal to or greater than 2 to regain the previous functionality.
112
 *    - The \c EVENT_USB_Device_UnhandledControlRequest() event is now named \ref EVENT_USB_Device_ControlRequest() and fires before (not after)
113 114
 *      the internal library event handlers. Existing code should rename the event handlers in the user application to match the new event
 *      name, and should ensure that the new execution order does not affect the application's operation.
115
 *
116
 *  <b>Host Mode</b>
117 118
 *    - Pipes MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application
 *      allocated pipes in ascending order - or if your application uses the USB host mode class drivers, ensure that each instance's
119
 *      pipe indexes are not overlapped with other interface's pipes.
120
 *    - The \c PRNT_Host_SendData() function has been renamed to \ref PRNT_Host_SendString(). Existing applications should simply
121
 *      replace all references to the obsolete function name with the new function name.
122 123
 *    - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation
 *      for each class driver for the new class specific descriptor type names.
124
 *    - The Still Image Host class' function prefix has been changed from \c SImage_ to  \c SI_, to remain consistent with the rest of the
125
 *      driver's enums, type defines and constants.
126
 *
Dean Camera's avatar
Dean Camera committed
127
 *  \section Sec_Migration100807 Migrating from 100513 to 100807
128
 *
129 130 131 132 133
 *  <b>Non-USB Library Components</b>
 *    - The Dataflash board driver stub file has changed, as dataflash functions previously located in the internal
 *      Dataflash driver of the library have now been moved to the individual board files. Existing drivers can
 *      copy-paste the new functions from the board Dataflash stub driver.
 *
134
 *  <b>USB Core</b>
135
 *    - A new USB driver source file, \c Drivers/USB/LowLevel/Device.c now exists. This source file should be added to all project
136
 *      makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables.
137
 *    - The \c Drivers/USB/LowLevel/DevChapter9.c source file has moved to \c Drivers/USB/HighLevel/DeviceStandardReq.c - this should
138
 *      be updated in all project makefiles, or the makefile should be updated to use the new module source variables.
139
 *    - The \c Drivers/USB/LowLevel/HostChapter9.h source file has moved to \c Drivers/USB/HighLevel/HostStandardReq.c - this should
140
 *      be updated in all project makefiles, or the makefile should be updated to use the new module source variables.
141
 *    - The \c Drivers/USB/LowLevel/LowLevel.c source file has moved to \c Drivers/LowLevel/USBController.c - this should be updated
142
 *      in all project makefiles, or the makefile should be updated to use the new module source variables.
143 144
 *
 *  <b>Device Mode</b>
145 146 147
 *    - The \c USB_Device_IsRemoteWakeupSent() macro has been removed, as the remote wakeup request is now fully handled by the
 *      enhanced \ref USB_Device_SendRemoteWakeup() function. Existing code may now discard any checks to \c USB_Device_IsRemoteWakeupSent().
 *    - The \c USB_Device_IsUSBSuspended() macro has been removed, as it is obsolete. Existing code should compare \ref USB_DeviceState
148
 *      to see if it the device is in the \ref DEVICE_STATE_Suspended state instead.
149 150 151 152 153 154
 *    - The \ref CDC_Device_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was
 *      received. This allows for more efficient coding, as a call to \ref CDC_Device_BytesReceived() is no longer needed if the exact
 *      number of queued bytes received is not needed.
 *
 *  <b>Host Mode</b>
 *    - The \ref CDC_Host_ReceiveByte() function has changed, and now returns a signed 16-bit integer, with -1 indicating no data was
155
 *      received. This allows for more efficient coding, as a call to \ref CDC_Host_BytesReceived() is no longer needed if the exact
156 157 158
 *      number of queued bytes received is not needed.
 *    - The \ref CDC_Host_USBTask() now calls \ref CDC_Host_Flush() automatically, flushing any queued data to the attached device. Manual
 *      flushing of the interface is no longer needed if the flushes should be in sync with calls to \ref CDC_Host_USBTask().
Dean Camera's avatar
Dean Camera committed
159
 *
Dean Camera's avatar
Dean Camera committed
160
 *  \section Sec_Migration100513 Migrating from 100219 to 100513
161 162 163 164 165 166
 *
 *  <b>Non-USB Library Components</b>
 *    - The \ref TWI_StartTransmission() function now takes in a timeout period, expressed in milliseconds, within which the addressed
 *      device must respond or the function will abort.
 *
 *  <b>Device Mode</b>
167
 *    - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need
168 169 170
 *      to perform other initialization before it is ready to handle global interrupts. The user application is now responsible
 *      for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process
 *      functions correctly.
171
 *    - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel.
172
 *      Projects must update their makefile SRC values accordingly.
173 174
 *    - The HID Device Class driver's function signature for the \ref CALLBACK_HID_Device_ProcessHIDReport() function has been changed, to
 *      allow for a new \c ReportType parameter. This new parameter must be added in all user applications using the Device mode HID Class
175
 *      Driver, but may be ignored unless Host-to-Device FEATURE HID reports are used.
176 177
 *
 *  <b>Host Mode</b>
178
 *    - The \ref USB_Init() function no longer calls \c sei() to enable global interrupts, as the user application may need
179 180 181
 *      to perform other initialization before it is ready to handle global interrupts. The user application is now responsible
 *      for enabling global interrupts before or shortly after calling \ref USB_Init() to ensure that the enumeration process
 *      functions correctly.
182 183 184 185
 *    - The \c USBInterrupt.c USB driver source file has been relocated from \c LUFA/Drivers/USB/HighLevel/ to \c LUFA/Drivers/USB/LowLevel.
 *      Projects must update their makefile \c SRC values accordingly.
 *    - The HID Host Class driver's function signature for the \ref HID_Host_SendReportByID() function has been changed, to allow for a new
 *      ReportType parameter. Existing calls to this function should substitute \c REPORT_ITEM_TYPE_Out as this parameter's value.
186
 *
Dean Camera's avatar
Dean Camera committed
187
 *  \section Sec_Migration100219 Migrating from 091223 to 100219
188 189 190
 *
 *  <b>Non-USB Library Components</b>
 *    - Due to some ADC channels not being identical to their ADC MUX selection masks for single-ended conversions on some AVR models,
191 192
 *      the ADC driver now has explicit masks for each of the standard ADC channels (see \ref Group_ADC). These masks should be used
 *      when calling the ADC functions to ensure proper operation across all AVR models. Note that the \ref ADC_SetupChannel() function
193 194 195 196 197
 *      is an exception, and should always be called with a channel number rather than a channel mask.
 *
 *  <b>Host Mode</b>
 *    - The MIDI Host Class driver send and receive routines now operate on packed events, where multiple MIDI events may be
 *      packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send
198
 *      pipe bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually
199
 *      flush the queued event(s) to the device by calling \ref MIDI_Host_Flush().
200
 *    - The \ref Pipe_IsEndpointBound() function now takes the endpoint's direction into account, by checking if the MSB of the endpoint's address
201
 *      is set to denote IN endpoints. If the previous functionality where the direction is to be discounted is required, mask the endpoint
202
 *      address against the \ref PIPE_EPNUM_MASK token before calling \ref Pipe_IsEndpointBound().
203 204 205 206
 *
 *  <b>Device Mode</b>
 *    - The MIDI Device Class driver send and receive routines now operate on packed events, where multiple MIDI events may be
 *      packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send
207
 *      endpoint bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually
208 209
 *      flush the queued event(s) to the host by calling \ref MIDI_Device_Flush().
 *
Dean Camera's avatar
Dean Camera committed
210
 *  \section Sec_Migration091223 Migrating from 091122 to 091223
211 212
 *
 *  <b>Host Mode</b>
213 214 215
 *    - The Still Image Host Class driver \ref SI_Host_USBTask() and \ref SI_Host_ConfigurePipes() functions were misnamed, and are
 *      now named \c SImage_Host_USBTask() and \c SImage_Host_ConfigurePipes() respectively.
 *    - The \c HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to \ref HOST_SENDCONTROL_DeviceDisconnected to be in
216
 *      line with the rest of the library error codes.
217
 *    - The HID Parser item usages no longer contain separate minimum and maximum values, as this was a violation of the HID
218
 *      specification. Instead, the values are distributed evenly across each item as its usage value, to ensure that all items
219
 *      can be distinguished from one-another.
220 221
 *
 *  <b>Device Mode</b>
222
 *    - The \ref CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new \c ReportType parameter to
223 224
 *      indicate the report type to generate. Existing applications may simply add and ignore this additional parameter.
 *
Dean Camera's avatar
Dean Camera committed
225
 *  \section Sec_Migration091122 Migrating from 090924 to 091122
226
 *
227
 *  <b>Host Mode</b>
228 229
 *    - The \c HID_PARSE_UsageStackOverflow HID parser error constant is now named \ref HID_PARSE_UsageListOverflow
 *    - The \ref CALLBACK_HIDParser_FilterHIDReportItem() HID Parser callback now passes a complete \ref HID_ReportItem_t to the
230
 *      user application, instead of just its attributes.
231
 *    - The \c USB_GetDeviceConfigDescriptor() function was incorrectly named and is now called \ref USB_Host_GetDeviceConfigDescriptor().
232
 *
Dean Camera's avatar
Dean Camera committed
233
 *  \section Sec_Migration090924 Migrating from 090810 to 090924
234 235
 *
 *  <b>Non-USB Library Components</b>
236
 *    - The \c ADC_Off() function has been renamed to \c ADC_ShutDown() to be consistent with the rest of the library.
237 238
 *    - The \ref SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See
 *      the \ref SPI_Init() function documentation for more details
239
 *    - The \ref Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a
240
 *      call to \ref SPI_Init() before using the Dataflash driver
241 242
 *
 *  <b>Host Mode</b>
243
 *    - The \c USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to
244 245
 *      preallocate the largest allowable buffer, and pass the size of the buffer to the function. This allows for a single
 *      call to the function to retrieve, size check and validate the Configuration Descriptor rather than having the user
246
 *      application perform these intermediary steps.
247 248
 *    - The HID report parser now requires a mandatory callback in the user code, to filter only the items the application
 *      is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem().
249 250 251 252 253
 *    - The HID report parser now always parses FEATURE and always ignores constant-data items - the \c HID_ENABLE_FEATURE_PROCESSING
 *      and \c HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect.
 *    - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_*
 *      and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
 *      the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants.
254 255
 *
 *  <b>Device Mode</b>
256 257 258
 *    - The \c USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate \c USB_Descriptor_*
 *      and \c USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
 *      the one project. For existing projects using the standardized names, change all code to use the \c USB_StdDescriptor_* variants.
259
 *
Dean Camera's avatar
Dean Camera committed
260
 *  \section Sec_Migration090810 Migrating from 090605 to 090810
261 262
 *
 *  <b>All</b>
263
 *    - The "Simple Scheduler" has been <i>deprecated</i>, as it was little more than an abstracted loop and caused much confusion.
264 265 266
 *      User applications using the scheduler should switch to regular loops instead. The scheduler code will be removed in a future
 *      release.
 *    - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never
267
 *      used in user applications.
268 269
 *
 *  <b>Non-USB Library Components</b>
270
 *    - The \c ATTR_NOINLINE function attribute macro has been renamed to \ref ATTR_NO_INLINE to be in line with the rest of the function attribute
271 272 273 274 275 276 277 278
 *      macro names.
 *
 *  <b>Library Demos</b>
 *    - Most demos now have a corresponding Class Driver implementation, which uses the new internal library class drivers for the standard
 *      USB classes. This allows for more rapid device and host development, and so should be used in preference to the low level APIs where
 *      possible so that fixes to the class drivers propagate to all applications which use them automatically with each new LUFA release.
 *
 *  <b>Host Mode</b>
279 280
 *    - The \c HIDParser.c module has moved from \c LUFA/Drivers/USB/Class/ to \c LUFA/Drivers/USB/Class/Host/.
 *    - The \c USB_GetDeviceConfigDescriptor() function now requires the desired configuration index within the device as its first
281 282 283 284 285
 *      parameter, to add support for multi-configuration devices. Existing code should use a configuration index of 1 to indicate the
 *      first configuration descriptor within the device.
 *    - The non-standard "Ready" host state has been removed. Existing \ref HOST_STATE_Configured code should be moved to the end of
 *      the existing \ref HOST_STATE_Addressed state, and the existing HOST_STATE_Ready state code should be moved to the \ref HOST_STATE_Configured
 *      state.
286
 *    - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_HostState explicitly to ensure the host is
287
 *      in the desired state instead.
288
 *    - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode
289 290 291 292
 *      events. See the \ref Group_Events page for details on the new event names and firing conditions.
 *
 *  <b>Device Mode</b>
 *    - The \ref CALLBACK_USB_GetDescriptor() function now takes an extra parameter to specify the descriptor's memory space so that
293
 *      descriptors in mixed memory spaces can be used. The previous functionality can be returned by defining the \c USE_FLASH_DESCRIPTORS
294
 *      token in the project makefile to fix all descriptors into FLASH space and remove the extra function parameter.
295 296
 *    - The \c USB_IsSuspended global has been removed - test \ref USB_DeviceState against \ref DEVICE_STATE_Suspended instead.
 *    - The \c USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_DeviceState explicitly to ensure the device
297
 *      is in the desired state instead.
298
 *    - The VBUS events have been removed, as they are already exposed to the user via the \c USB_Connect and \c USB_Disconnect events.
299
 *    - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode
300
 *      events. See the \ref Group_Events page for details on the new event names and firing conditions.
301
 *
Dean Camera's avatar
Dean Camera committed
302
 *  \section Sec_Migration090605 Migrating from 090510 to 090605
303 304 305 306
 *
 *  <b>Device Mode</b>
 *    - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing
 *      projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can
307 308
 *      manage the control endpoint via interrupts automatically by compiling with the \c INTERRUPT_CONTROL_ENDPOINT token defined.
 *    - The \c DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory
309 310 311
 *      address.
 *    - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See
 *      \ref Group_Events for new API details.
312 313 314 315
 *    - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular
 *      function signatures of a function accepting no arguments and returning a \c uint8_t value.
 *    - The \c Event_DeviceError() event no longer exists, as its sole caller (unlinked \c USB_GetDescriptor() function) now produces a
 *      compilation error rather than a runtime error. The \c StdDescriptors.c file no longer exists as a result, and should be removed
316
 *      from project makefiles.
317 318
 *    - The \c USB_GetDescriptor() function has been renamed to \ref CALLBACK_USB_GetDescriptor() to be in line with the new \c CALLBACK_
 *      function prefixes for functions which <i>must</i> be implemented in the user application.
319 320 321 322 323 324
 *
 *  <b>Host Mode</b>
 *    - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing
 *      projects using interrupts on non-control pipes should switch to polling.
 *    - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See
 *      \ref Group_Events for new API details.
325 326 327 328
 *    - The \c STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular
 *      function signatures of a function accepting no arguments and returning a \c uint8_t value.
 *    - The \c DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with
 *      regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a \c uint8_t value.
329
 *
Dean Camera's avatar
Dean Camera committed
330
 *  \section Sec_Migration090510 Migrating from 090401 to 090510
331 332
 *
 *  <b>All</b>
333 334 335 336 337
 *    - The \c ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all
 *      \c BUTTLOADTAG() elements, or download and extract \c ButtLoadTag.h header from the ButtLoad project.
 *    - The \c Drivers/AT90USBXXX/ directory has been renamed to \c Drivers/Peripheral/.
 *    - The \c Serial_Stream driver has been renamed to \c SerialStream to remain consistent with the rest of the library naming scheme.
 *    - The HWB driver has changed to the \c Buttons driver. See the board Buttons driver documentation for the new API.
338 339
 *
 *  <b>Dual Role Mode</b>
340
 *    - The \c USB_PowerOnFail event has been renamed to \c USB_InitFailure.
341
 *    - The functions in \c OTG.h have been renamed to remain more consistent with the library API. See the functions in \c OTG.h for more
342 343 344
 *      details.
 *
 *  <b>Device Mode</b>
345 346 347
 *    - The \c Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the \ref Endpoint_ClearIN(), \ref Endpoint_ClearOUT()
 *      macros. See \c Endpoint.h documentation for more details on the new endpoint management macros.
 *    - The \c Endpoint_ReadWriteAllowed() macro has been renamed to \ref Endpoint_IsReadWriteAllowed() to be more consistent with the rest of
348
 *      the API naming scheme.
349 350 351 352 353 354 355
 *    - The \c Endpoint_IsSetupINReady() and \c Endpoint_IsSetupOUTReceived() macros have been renamed to \ref Endpoint_IsINReady() and
 *      \ref Endpoint_IsOUTReceived() respectively.
 *    - The \c Endpoint_IsSetupReceived() macro has been renamed to \ref Endpoint_IsSETUPReceived().
 *    - The \c Endpoint_ClearSetupReceived() macro has been renamed to \ref Endpoint_ClearSETUP().
 *    - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Endpoint_Read_Word()) have
 *      been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions.
 *    - The \c USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of
356 357
 *      the Control Request header as all Control Request header data is now preloaded by the library and made available in the
 *      USB_ControlRequest structure.
358 359 360
 *    - The \c FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to \c CONTROL_ONLY_DEVICE.
 *    - The \c STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically.
 *    - The values of the \ref Endpoint_Stream_RW_ErrorCodes_t and \ref Endpoint_ControlStream_RW_ErrorCodes_t enums have had the \c ERROR_ portion
361 362 363
 *      of their names removed.
 *
 *  <b>Host Mode</b>
364
 *    - The \ref USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on
365 366 367 368
 *      other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called
 *      in existing projects where the Control pipe is to be operated on.
 *    - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer
 *      need to manage this manually when calling the USB management task.
369
 *    - The \c Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See
370
 *      Pipe.h documentation for more details on the new pipe management macros.
371
 *    - The \c Pipe_ReadWriteAllowed() macro has been renamed to \ref Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API
372
 *      naming scheme.
373
 *    - The \c Pipe_IsSetupINReceived() and \c Pipe_IsOutReady() macros have been renamed to \ref Pipe_IsINReceived() and \ref Pipe_IsOUTReady()
374
 *      respectively.
375 376 377 378 379 380
 *    - The new \ref Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous \c Pipe_ClearSetupOUT() macro.
 *    - The \c Pipe_IsSetupSent() macro has been renamed to \ref Pipe_IsSETUPSent().
 *    - The \c Pipe_ClearSetupSent() macro is no longer applicable and should be removed.
 *    - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as \c Pipe_Read_Word()) have
 *      been removed for clarity. Existing projects should use the \c _LE suffix on such calls to use the explicit Little Endian versions.
 *    - The \c Host_IsResetBusDone() macro has been renamed to \c Host_IsBusResetComplete().
381
 *    - The \c Pipe_Ignore_Word() and \c Pipe_Ignore_DWord() functions have been renamed to \c Pipe_Discard_Word() and \c Pipe_Discard_DWord()
382 383 384 385 386 387 388 389 390 391 392
 *      to remain consistent with the rest of the pipe API.
 *    - It is no longer needed to manually include the headers from \c LUFA/Drivers/USB/Class, as they are now included along with the rest
 *      of the USB headers when \c LUFA/Drivers/USB/USB.h is included.
 *    - Functions in the \c ConfigDescriptor.h header file no longer have \c Host_ as part of their names.
 *    - The \c ProcessHIDReport() has been renamed to \ref USB_ProcessHIDReport(), \c GetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo()
 *      and \c SetReportItemInfo() has been renamed to \ref USB_GetHIDReportItemInfo().
 *    - The values of the \ref DSearch_Return_ErrorCodes_t and \ref DSearch_Comp_Return_ErrorCodes_t enums have had their respective \c Descriptor_Search
 *      and \c Descriptor_Search_Comp prefixes changed to all caps.
 *    - The \c USB_HostRequest global has been renamed to \ref USB_ControlRequest, and is used in Device mode also. The \c USB_Host_Request_Header_t
 *      structure type has been renamed to \ref USB_Request_Header_t.
 *    - The values of the \ref Pipe_Stream_RW_ErrorCodes_t enum have had the \c ERROR_ portion of their names removed.
393
 *
Dean Camera's avatar
Dean Camera committed
394
 *  \section Sec_Migration090401 Migrating from 090209 to 090401
395 396
 *
 *  <b>All</b>
397
 *    - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant \c F_USB,
398 399 400
 *      defined in the project makefile and passed to the compiler via the -D switch.
 *    - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the
 *      EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called.
401 402
 *    - As the avr-libc macro has been corrected in recent avr-libc distributions, the \c SetSystemClockPrescaler() macro has been removed.
 *      Include \c <avr/power.h> and call \c clock_prescale_set(clock_div_1); instead on recent avr-libc distributions.
403 404 405 406 407
 *
 *  <b>Library Demos</b>
 *    - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission.
 *
 *  <b>Non-USB Library Components</b>
408 409
 *    - The \c ATTR_ALWAYSINLINE function attribute macro has been renamed to \ref ATTR_ALWAYS_INLINE.
 *    - Custom board Dataflash drivers now require the implementation of \ref Dataflash_SelectChipFromPage() and \ref Dataflash_SendAddressBytes().
410 411
 *
 *  <b>Device Mode</b>
412
 *    - The \c NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to \c FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded
413
 *      to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the
414
 *      \c NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the \c FEATURELESS_CONTROL_ONLY_DEVICE token with no further
415 416
 *      modifications required.
 *
Dean Camera's avatar
Dean Camera committed
417
 *  \section Sec_Migration090209 Migrating from 081217 to 090209
418 419
 *
 *  <b>Device Mode</b>
420 421
 *    - The \c ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c ENDPOINT_TOTAL_ENDPOINTS.
 *    - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user
422 423 424
 *      makefile if desired to restore the previous 50ms timeout.
 *
 *  <b>Host Mode</b>
425 426
 *    - The \c PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of \c PIPE_TOTAL_ENDPOINTS.
 *    - The \c USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user
427
 *      makefile if desired to restore the previous 50ms timeout.
428
 *    - The \c USB_DeviceEnumerationFailed event now contains a second \c SubErrorCode parameter, giving the error code of the function
429
 *      which failed.
430
 *    - The \c HID_PARSE_Sucessful enum member constant name has been corrected to \ref HID_PARSE_Successful.
431 432
 *
 *  <b>Non-USB Library Components</b>
433 434 435
 *    - The previous \c SPI_SendByte() functionality is now located in \ref SPI_TransferByte(). \ref SPI_SendByte() now discards the return byte
 *      for speed, to compliment the new \ref SPI_ReceiveByte() function. If bidirectional SPI transfers are required, calls to \ref SPI_SendByte()
 *      should be changed to \ref SPI_TransferByte().
436
 *    - The serial driver now sets the Tx line as an output explicitly, and enables the pull-up of the Rx line.
437 438 439
 *    - The \ref Serial_Init() and \c SerialStream_Init() functions now take a second \c DoubleSpeed parameter, which indicates if the USART
 *      should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at the given AVR
 *      clock speed.
440
 *
Dean Camera's avatar
Dean Camera committed
441
 *  \section Sec_Migration171208 Migrating from V1.5.3 to 081217
442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484
 *
 *  <b>All</b>
 *    - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names,
 *      have been changed to LUFA.
 *
 *  <b>Library Demos</b>
 *    - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding
 *      parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version.
 *    - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and
 *      KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects
 *      built on either "WithParser" demo should update to the latest code.
 *    - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not
 *      recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes,
 *      as it is neither a full nor a standards compliant implementation.
 *
 *  <b>Non-USB Library Components</b>
 *    - The Serial_IsCharReceived() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h.
 *
 *  <b>Device Mode</b>
 *    - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask
 *      to be used in the Options parameter of the USB_Init() function.
 *    - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is
 *      currently initialized.
 *    - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library
 *      or user request processing code to exceed the strict USB timing requirements on control transfers.
 *    - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured
 *      after a Reset event, it should be altered to explicitly re-initialize all user endpoints.
 *    - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now
 *      returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified
 *      descriptor does not exist.
 *    - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the
 *      GetDescriptor function.
 *
 *  <b>Host Mode</b>
 *    - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask
 *      to be used in the Options parameter of the USB_Init() function.
 *    - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and
 *      SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the
 *      current report. If sending a report to a multi-report device, the first byte of the report is automatically
 *      set to the report ID of the given report item.
 *    - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is
 *      currently initialized.
 *
Dean Camera's avatar
Dean Camera committed
485
 *  \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3
486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529
 *
 *  <b>Library Demos</b>
 *    - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number
 *      string is required in Mass Storage devices, or devices which are to retain settings when moved between
 *      ports on a machine. As people were not changing the serial number value, this was causing conflicts and so
 *      the serial number descriptor has been removed from all but the Mass Storage demo, which requires it.
 *    - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated
 *      them. Projects built upon either demo should upgrade to the latest code.
 *    - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented.
 *    - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built
 *      on the MassStoreDemo code should update to the latest version.
 *    - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused
 *      problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade
 *      to the latest code.
 *    - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects
 *      built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code.
 *    - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should
 *      upgrade to the latest code.
 *    - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was
 *      previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update
 *      to the latest code.
 *
 *  <b>Device Mode</b>
 *    - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream.
 *      If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The
 *      timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired
 *      timeout duration in ms.
 *    - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled
 *      and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and
 *      USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details.
 *    - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated
 *      to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing
 *      the token NO_STREAM_CALLBACKS to the compiler using the -D switch.
 *
 *  <b>Host Mode</b>
 *    - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream.
 *      If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The
 *      timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired
 *      timeout duration in ms.
 *    - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures.
 *    - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated
 *      to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing
 *      the token NO_STREAM_CALLBACKS to the compiler using the -D switch.
 *
Dean Camera's avatar
Dean Camera committed
530
 *  \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2
531 532 533
 *
 *  <b>Library Demos</b>
 *    - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations
534
 *      of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade
535 536 537 538
 *      to the latest code.
 *    - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where
 *      possible any existing devices upgrade to the latest bootloader code.
 *
Dean Camera's avatar
Dean Camera committed
539
 *  \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1
540 541 542 543 544 545 546 547 548 549 550 551 552 553
 *
 *  <b>Library Demos</b>
 *    - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the
 *      global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo
 *      should upgrade to the latest code.
 *    - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID
 *      demos should upgrade to the latest code.
 *    - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors.
 *      Projects built upon the HID demos should upgrade to the latest code.
 *    - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo
 *      should upgrade to the latest code.
 *    - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power.
 *      Projects built upon the AudioOut demo should upgrade to the latest code.
 *
Dean Camera's avatar
Dean Camera committed
554
 *  \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0
555 556 557 558 559 560 561 562 563 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
 *
 *  <b>Library Demos</b>
 *    - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To
 *      avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing
 *      projects should at least manually correct the BCD version numbers, or preferably update the descriptors to
 *      encode the version number in BCD format using the new macro.
 *    - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos
 *      based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the
 *      HID demos should also be updated accordingly.
 *    - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission.
 *      Failure to do this on projects which always or frequently send full packets will cause buffering issues on
 *      the host OS. All CDC user projects are advised to update their transmission routines in the same manner as
 *      the library CDC demos.
 *    - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected
 *      Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven
 *      demos should also update to properly save and restore the selected Endpoint/Pipe.
 *
 *  <b>Non-USB Library Components</b>
 *    - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only
 *      compatible with avr-libc library versions newer than the time before the functionality of the deleted
 *      headers was available.
 *
 *  <b>Device Mode</b>
 *    - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and
 *      functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API.
 *      The previously split Type and Index parameters are now passed as the original wValue parameter to the
 *      function, to make way for the USB specification wIndex parameter which is <i>not</i> the same as the
 *      previous Index parameter.
 *    - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the
 *      official USB specification. Existing code will need to be altered to use the new parameter names.
 *    - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more
 *      appropriate. It fires in an identical manner to the previously named event, thus the only change to be made
 *      is the event name itself in the user project.
 *    - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a
589
 *      pseudo-descriptor modeled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type
590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623
 *      descriptor as indicated in the USB specification, thus all device code must be updated accordingly.
 *    - The names of several Endpoint macros have been changed to be more consistent with the rest of the library,
 *      with no implementation changes. This means that existing code can be altered to use the new macro names
 *      with no other considerations required. See Endpoint.h for the new macro names.
 *    - The previous version of the MassStorage demo had an incorrect value in the SCSI_Request_Sense_Response_t
 *      structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this
 *      demo should correct the structure value to maintain compatibility across multiple OS platforms.
 *    - By default, the descriptor structures use the official USB specification names for the elements. Previous
 *      versions of the library used non-standard (but more verbose) names, which are still usable in the current
 *      and future releases when the correct compile time option is enabled. See the StdDescriptors.h file
 *      documentation for more details.
 *
 *  <b>Host Mode</b>
 *    - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its
 *      members renamed to the official USB specification names for requests. Existing code will need to be updated
 *      to use the new names.
 *    - The names of several Pipe macros have been changed to be more consistent with the rest of the library,
 *      with no implementation changes. This means that existing code can be altered to use the new macro names
 *      with no other considerations required. See Pipe.h for the new macro names.
 *    - By default, the descriptor structures use the official USB specification names for the elements. Previous
 *      versions of the library used non-standard (but more verbose) names, which are still usable in the current
 *      and future releases when the correct compile time option is enabled. See the StdDescriptors.h file
 *      documentation for more details.
 *    - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h
 *      module documentation for the new macro names.
 *
 *  <b>Dual Role Mode</b>
 *    - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing
 *      projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG
 *      header inside the library.
 *    - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has
 *      finished enumerating the device. Projects relying on the event only firing in Host mode should be updated
 *      so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST.
 */
624