MigrationInformation.txt 34.1 KB
 Dean Camera committed Feb 23, 2009 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. *  Dean Camera committed Nov 23, 2009 13  * \section Sec_MigrationXXXXXX Migrating from 091122 to XXXXXX  Dean Camera committed Nov 23, 2009 14 15 16 17 18  * * Host Mode * - The Still Image Host Class driver SI_Host_USBTask() and SI_Host_ConfigurePipes() functions were misnamed, and are * now named SImage_Host_USBTask() and SImage_Host_ConfigurePipes() respectively. *  Dean Camera committed Nov 23, 2009 19 20 21  * Device Mode * - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to * indicate the report type to generate. Existing applications may simply add and ignore this additional parameter.  Dean Camera committed Nov 23, 2009 22  *  Dean Camera committed Nov 22, 2009 23  * \section Sec_Migration091122 Migrating from 090924 to 091122  Dean Camera committed Nov 03, 2009 24 25  * * Host Mode  Dean Camera committed Nov 04, 2009 26  * - The HID_PARSE_UsageStackOverflow HID parser error constant is now named \ref HID_PARSE_UsageListOverflow  Dean Camera committed Nov 03, 2009 27 28  * - The \ref CALLBACK_HIDParser_FilterHIDReportItem() HID Parser callback now passes a complete HID_ReportItem_t to the * user application, instead of just its attributes.  Dean Camera committed Nov 13, 2009 29  * - The USB_GetDeviceConfigDescriptor() function was incorrectly named and is now called \ref USB_Host_GetDeviceConfigDescriptor().  Dean Camera committed Nov 03, 2009 30  *  Dean Camera committed Sep 28, 2009 31 32  * \section Sec_Migration090924 Migrating from 090810 to 090924 *  Dean Camera committed Aug 23, 2009 33 34  * Non-USB Library Components * - The ADC_Off() function has been renamed to \ref ADC_ShutDown() to be consistent with the rest of the library.  Dean Camera committed Sep 09, 2009 35 36 37  * - The \ref SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See * the \ref SPI_Init() function documentation for more details * - The \ref Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a  Dean Camera committed Aug 23, 2009 38  * call to SPI_Init() before using the Dataflash driver  Dean Camera committed Aug 11, 2009 39  *  Dean Camera committed Aug 31, 2009 40  * Host Mode  Dean Camera committed Nov 13, 2009 41  * - The USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to  Dean Camera committed Aug 31, 2009 42 43 44  * preallocate the largest allowable buffer, and pass the size of the buffer to the function. This allows for a single * call to the function to retrieve, size check and validate the Configuration Descriptor rather than having the user * application perform these intermediatary steps.  Dean Camera committed Sep 02, 2009 45 46 47 48  * - The HID report parser now requires a mandatory callback in the user code, to filter only the items the application * is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem(). * - The HID report parser now always parses FEATURE and always ignores constant-data items - the HID_ENABLE_FEATURE_PROCESSING * and HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect.  Dean Camera committed Sep 09, 2009 49 50 51 52 53 54 55 56  * - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_* * and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in * the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants. * * Device Mode * - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_* * and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in * the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants.  Dean Camera committed Aug 31, 2009 57  *  Dean Camera committed Aug 05, 2009 58  * \section Sec_Migration090810 Migrating from 090605 to 090810  Dean Camera committed Jun 05, 2009 59  *  Dean Camera committed Jun 15, 2009 60  * All  61 62  * - The "Simple Scheduler" has been deprecated, as it was little more than an abtracted loop and caused much confusion. * User applications using the scheduler should switch to regular loops instead. The scheduler code will be removed in a future  Dean Camera committed Jun 19, 2009 63  * release.  Dean Camera committed Jun 15, 2009 64 65 66  * - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never * used in user applications. The library is available from the author's website for those wishing to still use it in their * applications.  Dean Camera committed Aug 03, 2009 67 68 69 70 71 72 73 74 75  * * Non-USB Library Components * - The ATTR_NOINLINE function attribute macro has been renamed to ATTR_NO_INLINE to be in line with the rest of the function attribute * macro names. * * Library Demos * - Most demos now have a corresponding Class Driver implementation, which uses the new internal library class drivers for the standard * USB classes. This allows for more rapid device and host development, and so should be used in preference to the low level APIs where * possible so that fixes to the class drivers propagate to all applications which use them automatically with each new LUFA release.  Dean Camera committed Jun 05, 2009 76  *  Dean Camera committed Jun 19, 2009 77  * Host Mode  78  * - The HIDParser.c module has moved from LUFA/Drivers/USB/Class/ to LUFA/Drivers/USB/Class/Host/.  Dean Camera committed Nov 13, 2009 79  * - The USB_GetDeviceConfigDescriptor() function now requires the desired configuration index within the device as its first  Dean Camera committed Jun 19, 2009 80 81  * 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.  82 83 84  * - 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.  Dean Camera committed Aug 03, 2009 85 86  * - The USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_HostState explicitly to ensure the host is * in the desired state instead.  Dean Camera committed Aug 05, 2009 87 88  * - The USB event names have been changed and their firing conditions changed to properly seperate out Host mode events from Device mode * events. See the \ref Group_Events page for details on the new event names and firing conditions.  Dean Camera committed Jun 19, 2009 89  *  Dean Camera committed Jul 16, 2009 90 91 92 93  * Device Mode * - The \ref CALLBACK_USB_GetDescriptor() function now takes an extra parameter to specify the descriptor's memory space so that * descriptors in mixed memory spaces can be used. The previous functionality can be returned by defining the USE_FLASH_DESCRIPTORS * token in the project makefile to fix all descriptors into FLASH space and remove the extra function parameter.  Dean Camera committed Jul 27, 2009 94  * - The USB_IsSuspended global has been removed - test \ref USB_DeviceState against \ref DEVICE_STATE_Suspended instead.  Dean Camera committed Aug 03, 2009 95 96  * - The USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_DeviceState explicitly to ensure the device * is in the desired state instead.  Dean Camera committed Aug 05, 2009 97 98 99  * - The VBUS events have been removed, as they are already exposed to the user via the USB_Connect and USB_Disconnect events. * - The USB event names have been changed and their firing conditions changed to properly seperate out Host mode events from Device mode * events. See the \ref Group_Events page for details on the new event names and firing conditions. *  Dean Camera committed Jul 16, 2009 100  *  Dean Camera committed Jun 05, 2009 101  * \section Sec_Migration090605 Migrating from 090510 to 090605  Dean Camera committed May 11, 2009 102  *  Dean Camera committed May 12, 2009 103 104  * Device Mode * - Support for non-control data endpoint interrupts has been dropped due to many issues in the implementation. All existing  Dean Camera committed May 14, 2009 105 106  * projects using interrupts on non-control endpoints should switch to polling. For control interrupts, the library can * manage the control endpoint via interrupts automatically by compiling with the INTERRUPT_CONTROL_ENDPOINT token defined.  107 108  * - The DESCRIPTOR_ADDRESS() macro has been removed. User applications should use normal casts to obtain a descriptor's memory * address.  Dean Camera committed May 18, 2009 109 110 111 112  * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See * \ref Group_Events for new API details. * - The 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 uint8_t value.  Dean Camera committed May 22, 2009 113 114 115 116 117  * - The Event_DeviceError() event no longer exists, as its sole caller (unlinked USB_GetDescriptor() function) now produces a * compilation error rather than a runtime error. The StdDescriptors.c file no longer exists as a result, and should be removed * from project makefiles. * - The USB_GetDescriptor() function has been renamed to CALLBACK_USB_GetDescriptor() to be in line with the new CALLBACK_ function * prefixes for functions which *must* be implemented in the user application.  Dean Camera committed May 12, 2009 118  *  Dean Camera committed May 18, 2009 119  * Host Mode  Dean Camera committed May 12, 2009 120 121  * - 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.  Dean Camera committed May 18, 2009 122 123 124 125 126  * - The library events system has been rewritten, so that all macros have been removed to allow for clearer user code. See * \ref Group_Events for new API details. * - The 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 uint8_t value. * - The DESCRIPTOR_COMPARATOR() macro has been removed. User applications should replace all instances of the macro with  Dean Camera committed Jun 04, 2009 127  * regular function signatures of a function accepting a void pointer to the descriptor to test, and returning a uint8_t value.  Dean Camera committed May 12, 2009 128  *  Dean Camera committed May 11, 2009 129 130  * * \section Sec_Migration090510 Migrating from 090401 to 090510  Dean Camera committed Apr 01, 2009 131  *  Dean Camera committed Apr 16, 2009 132 133 134  * All * - The ButtLoadTag.h header has been removed, as it was never used for its intended purpose. Projects should either remove all * BUTTLOADTAG elements, or download and extract ButtLoadTag.h header from the ButtLoad project.  Dean Camera committed Apr 16, 2009 135  * - The Drivers/AT90USBXXX directory has been renamed to Drivers/Peripheral.  Dean Camera committed Apr 17, 2009 136  * - The Serial_Stream driver has been renamed to SerialStream to remain consistent with the rest of the library naming scheme.  Dean Camera committed May 06, 2009 137  * - The HWB driver has changed to the Buttons driver. See the board Buttons driver documentation for the new API.  Dean Camera committed Apr 16, 2009 138  *  139 140  * Dual Role Mode * - The USB_PowerOnFail even has been renamed to USB_InitFailure.  141 142  * - The functions in OTG.h have been renamed to remain more consistent with the library API. See the functions in OTG.h for more * details.  143  *  Dean Camera committed Apr 16, 2009 144 145 146 147 148  * Library Demos * - Most demos, bootloaders and applications have had significant changes from previous versions. Applications built off of any * library demos should update to the latest versions. * * Device Mode  Dean Camera committed Apr 21, 2009 149 150  * - The Endpoint_ClearCurrentBank() macro has been removed, and is now replaced with the Endpoint_ClearIN(), Endpoint_ClearOUT() * macros. See Endpoint.h documentation for more details on the new endpoint management macros.  Dean Camera committed Apr 16, 2009 151 152  * - The Endpoint_ReadWriteAllowed() macro has been renamed to Endpoint_IsReadWriteAllowed() to be more consistent with the rest of * the API naming scheme.  Dean Camera committed Apr 19, 2009 153  * - The Endpoint_IsSetupINReady() and Endpoint_IsSetupOutReceived() macros have been renamed to Endpoint_IsINReady() and  Dean Camera committed Apr 16, 2009 154 155  * Endpoint_IsOUTReceived() respectively. * - The Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived().  Dean Camera committed Apr 21, 2009 156  * - The Endpoint_ClearSetupReceived() macro has been renamed to Endpoint_ClearSETUP().  Dean Camera committed Apr 19, 2009 157  * - All endpoint read/write/discard aliases which did not have an explicitly endianness specifier (such as Endpoint_Read_Word()) have  Dean Camera committed Apr 16, 2009 158  * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions.  Dean Camera committed Apr 22, 2009 159 160 161  * - The USB_UnhandledControlPacket event no longer has any parameters. User code should no longer attempt to read in the remainder of * the Control Request header as all Control Request header data is now preloaded by the library and made available in the * USB_ControlRequest structure.  Dean Camera committed Apr 23, 2009 162  * - The FEATURELESS_CONTROL_ONLY_DEVICE token has been renamed to CONTROL_ONLY_DEVICE.  Dean Camera committed Apr 24, 2009 163  * - The STATIC_ENDPOINT_CONFIGURATION is no longer applicable as the library will apply this optimization when appropriate automatically.  164 165  * - The values of the Endpoint_Stream_RW_ErrorCodes_t and Endpoint_ControlStream_RW_ErrorCodes_t enums have had the "ERROR_" portion * of their names removed.  Dean Camera committed Apr 16, 2009 166  *  Dean Camera committed Apr 14, 2009 167 168 169 170 171 172  * Host Mode * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0) to allow it to be used on * other control type pipes. Care should be taken to ensure that the Control pipe is always selected before the function is called * in existing projects where the Control pipe is to be operated on. * - The USB Host management task now saves and restores the currently selected pipe before and after the task runs. Projects no longer * need to manage this manually when calling the USB management task.  Dean Camera committed Apr 21, 2009 173 174  * - The Pipe_ClearCurrentBank() macro has been removed, and is now replaced with the Pipe_ClearIN(), Pipe_ClearOUT() macros. See * Pipe.h documentation for more details on the new pipe management macros.  Dean Camera committed Apr 16, 2009 175 176 177 178  * - The Pipe_ReadWriteAllowed() macro has been renamed to Pipe_IsReadWriteAllowed() to be more consistent with the rest of the API * naming scheme. * - The Pipe_IsSetupINReceived() and Pipe_IsOutReady() macros have been renamed to Pipe_IsINReceived() and Pipe_IsOUTReady() * respectively.  Dean Camera committed Apr 21, 2009 179  * - The new Pipe_ClearSETUP() macro should be used to send SETUP transactions, rather than the previous Pipe_ClearSetupOUT() macro.  Dean Camera committed Apr 16, 2009 180 181  * - The Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent(). * - The Pipe_ClearSetupSent() macro is no longer applicable and should be removed.  Dean Camera committed Apr 19, 2009 182  * - All pipe read/write/discard aliases which did not have an explicitly endianness specifier (such as Pipe_Read_Word()) have  Dean Camera committed Apr 16, 2009 183 184  * been removed for clarity. Existing projects should use the "_LE" suffix on such calls to use the explicit Little Endian versions. * - The Host_IsResetBusDone() macro has been renamed to Host_IsBusResetComplete().  Dean Camera committed Apr 20, 2009 185 186  * - The Pipe_Ignore_Word() and Pipe_Ignore_DWord() functions have been renamed to Pipe_Discard_Word() and Pipe_Discard_DWord() to remain * consistent with the rest of the pipe API.  Dean Camera committed Apr 16, 2009 187 188  * - It is no longer needed to manually include the headers from LUFA/Drivers/USB/Class, as they are now included along with the rest * of the USB headers when LUFA/Drivers/USB/USB.h is included.  Dean Camera committed Apr 17, 2009 189 190 191  * - Functions in the ConfigDescriptor.h header file no longer have "Host_" as part of their names. * - The ProcessHIDReport() has been renamed to USB_ProcessHIDReport(), GetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo() * and SetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo().  Dean Camera committed Apr 19, 2009 192 193  * - The values of the DSearch_Return_ErrorCodes_t and DSearch_Comp_Return_ErrorCodes_t enums have had their respective "Descriptor_Search" * and "Descriptor_Search_Comp" prefixes changed to all caps.  Dean Camera committed Apr 22, 2009 194 195  * - The USB_HostRequest global has been renamed to USB_ControlRequest, and is used in Device mode also. The USB_Host_Request_Header_t * structure type has been renamed to USB_Request_Header_t.  196 197  * - The values of the Pipe_Stream_RW_ErrorCodes_t enum have had the "ERROR_" portion of their names removed. *  Dean Camera committed Apr 01, 2009 198  *  Dean Camera committed Mar 31, 2009 199  * \section Sec_Migration090401 Migrating from 090209 to 090401  Dean Camera committed Feb 23, 2009 200  *  Dean Camera committed Feb 26, 2009 201 202 203 204 205  * All * - LUFA projects must now give the raw input clock frequency (before any prescaling) as a compile time constant "F_CLOCK", * 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.  Dean Camera committed Mar 09, 2009 206 207  * - As the avr-libc macro has been corrected in recent avr-libc distributions, the SetSystemClockPrescaler() macro has been removed. * Include and call clock_prescale_set(clock_div_1); instead on recent avr-libc distributions.  Dean Camera committed Feb 26, 2009 208 209 210  * * Library Demos * - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission.  Dean Camera committed Mar 10, 2009 211 212 213  * - Most demos, bootloaders and applications have had their control request handling code corrected, to properly send the status * stage in all handled requests. If you are using code based off one of the library demos, bootloaders or applications, you should * update to the latest revisions.  Dean Camera committed Feb 23, 2009 214  *  Dean Camera committed Mar 04, 2009 215 216  * Non-USB Library Components * - The ATTR_ALWAYSINLINE function attribute macro has been renamed to ATTR_ALWAYS_INLINE.  Dean Camera committed Mar 17, 2009 217  * - Custom board Dataflash drivers now require the implementation of Dataflash_SelectChipFromPage() and Dataflash_SendAddressBytes().  Dean Camera committed Mar 04, 2009 218  *  Dean Camera committed Mar 11, 2009 219  * Device Mode  Dean Camera committed Mar 27, 2009 220  * - The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded  Dean Camera committed Mar 11, 2009 221  * to also remove parts of the Get Status chapter 9 request to further reduce code usage. On all applications currently using the  Dean Camera committed Mar 27, 2009 222  * NO_CLEARSET_FEATURE_REQUEST compile time token, it can be replaced with the FEATURELESS_CONTROL_ONLY_DEVICE token with no further  Dean Camera committed Mar 11, 2009 223 224  * modifications required. *  Dean Camera committed Mar 29, 2009 225  *  Dean Camera committed Feb 23, 2009 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253  * \section Sec_Migration090209 Migrating from 081217 to 090209 * * Device Mode * - The ENDPOINT_MAX_ENDPOINTS constant has been renamed to the more appropriate name of ENDPOINT_TOTAL_ENDPOINTS. * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user * makefile if desired to restore the previous 50ms timeout. * * Host Mode * - The PIPE_MAX_ENDPOINTS constant has been renamed to the more appropriate name of PIPE_TOTAL_ENDPOINTS. * - The USB_STREAM_TIMEOUT_MS stream timeout default period has been extended to 100ms. This can be overridden in the user * makefile if desired to restore the previous 50ms timeout. * - The USB_DeviceEnumerationFailed event now contains a second "SubErrorCode" parameter, giving the error code of the function * which failed. * - The HID_PARSE_Sucessful enum member constant has been corrected to HID_PARSE_Successful. * * Non-USB Library Components * - The previous SPI_SendByte() functionality is now located in SPI_TransferByte(). SPI_SendByte() now discards the return byte * for speed, to compliment the new SPI_ReceiveByte() function. If two-way SPI transfers are required, calls to SPI_SendByte() * should be changed to SPI_TransferByte(). * - The serial driver now sets the Tx line as an output explicitly, and enables the pullup of the Rx line. * - The Serial_Init() and SerialStream_Init() functions now take a second 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. * * Library Demos * - Most library demos have been enhanced and/or had errors corrected. All users of all demos should upgrade their codebase to * the latest demo versions. *  Dean Camera committed Mar 29, 2009 254  *  Dean Camera committed Feb 23, 2009 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271  * \section Sec_Migration171208 Migrating from V1.5.3 to 081217 * * All * - The MyUSB project name has been changed to LUFA (Lightweight Framework for USB AVRs). All references to MyUSB, including macro names, * have been changed to LUFA. * * Library Demos * - The ReconfigureUSART() routine in the USBtoSerial demo was not being called after new line encoding * parameters were set by the host. Projects built on the USBtoSerial code should update to the latest version. * - The HID Parser now supports multiple report (on a single endpoint) HID devices. The MouseHostWithParser and * KeyboardHostWithPaser demos use the updated API functions to function correctly on such devices. Projects * built on either "WithParser" demo should update to the latest code. * - The RNDIS demo TCP stack has been modified so that connections can be properly closed. It is still not * recommended that the MyUSB RNDIS demo TCP/IP stack be used for anything other than demonstration purposes, * as it is neither a full nor a standards compliant implementation. * * Non-USB Library Components  Dean Camera committed Sep 02, 2009 272  * - The Serial_IsCharReceived() macro has been changed to the correct spelling of Serial_IsCharReceived() in Serial.h.  Dean Camera committed Feb 23, 2009 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331  * * Device Mode * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask * to be used in the Options parameter of the USB_Init() function. * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is * currently initialized. * - Interrupts are now disabled when processing control requests, to avoid problems with interrupts causing the library * or user request processing code to exceed the strict USB timing requirements on control transfers. * - The USB Reset event now resets and disables all device endpoints. If user code depends on endpoints remaining configured * after a Reset event, it should be altered to explicitly re-initialize all user endpoints. * - The prototype for the GetDescriptor function has been changed, as the return value was redundant. The function now * returns the size of the descriptor, rather than passing it back via a parameter, or returns NO_DESCRIPTOR if the specified * descriptor does not exist. * - The NO_DESCRIPTOR_STRING macro has been renamed NO_DESCRIPTOR, and is now also used as a possible return value for the * GetDescriptor function. * * Host Mode * - The MANUAL_PLL_CONTROL compile time token has been removed, and replaced with a USB_OPT_MANUAL_PLL mask * to be used in the Options parameter of the USB_Init() function. * - The HID report parser now supports multiple Report IDs. The HID report parser GetReportItemInfo() and * SetReportItemInfo() routines now return a boolean, set if the requested report item was located in the * current report. If sending a report to a multi-report device, the first byte of the report is automatically * set to the report ID of the given report item. * - Calling USB_Init() now forces a complete USB interface reset and enumeration, even if the USB interface is * currently initialized. * * * \section Sec_Migration152 Migrating from V1.5.2 to V1.5.3 * * Library Demos * - Previously, all demos contained a serial number string descriptor, filled with all zeros. A serial number * string is required in Mass Storage devices, or devices which are to retain settings when moved between * ports on a machine. As people were not changing the serial number value, this was causing conflicts and so * the serial number descriptor has been removed from all but the Mass Storage demo, which requires it. * - The AudioOut and AudioIn demos did not previously silence their endpoints when the host has deactivated * them. Projects built upon either demo should upgrade to the latest code. * - The FEATURE_ENDPOINT macro has been renamed FEATURE_ENDPOINT_HALT, and is now correctly documented. * - The MassStoreHost demo contained errors which caused it to lock up randomly on certain devices. Projects built * on the MassStoreDemo code should update to the latest version. * - The Interrupt type endpoint in the CDC based demos previously had a polling interval of 0x02, which caused * problems on some Linux systems. This has been changed to 0xFF, projects built on the CDC demos should upgrade * to the latest code. * - The HID keyboard and mouse demos were not previously boot mode compatible. To enable boot mode support, projects * built on the keyboard or mouse demos (or derivatives) should upgrade to the latest code. * - The Mass Storage demo was not previously standards compliant. Projects built on the Mass Storage demo should * upgrade to the latest code. * - The USART was not being reconfigured after the host sent new encoding settings in the USBtoSerial demo. This was * previously discovered and fixed, but the change was lost. Projects built on the USBtoSerial demo should update * to the latest code. * * Device Mode * - The endpoint non-control stream functions now have a default timeout of 50ms between packets in the stream. * If this timeout is exceeded, the function returns the new ENDPOINT_RWSTREAM_ERROR_Timeout error value. The * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired * timeout duration in ms. * - Rather than returning fixed values, the flags indicating if the device has Remote Wakeup currently enabled * and/or is self-powered are now accessed and set through the new USB_RemoteWakeupEnabled and * USB_CurrentlySelfPowered macros. See the DevChapter9.h documentation for more details. * - All endpoint stream functions now require an extra Callback function parameter. Existing code may be updated  Dean Camera committed Apr 19, 2009 332  * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing  Dean Camera committed Feb 23, 2009 333 334 335 336 337 338 339 340 341  * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. * * Host Mode * - The pipe non-control stream functions now have a default timeout of 50ms between packets in the stream. * If this timeout is exceeded, the function returns the new PIPE_RWSTREAM_ERROR_Timeout error value. The * timeout value can be overridden by defining the USB_STREAM_TIMEOUT_MS in the project makefile to the desired * timeout duration in ms. * - CollectionPath_t has been renamed to HID_CollectionPath_t to be more in line with the other HID parser structures. * - All pipe stream functions now require an extra Callback function parameter. Existing code may be updated  Dean Camera committed Apr 19, 2009 342  * to either supply NO_STREAM_CALLBACK as the extra parameter, or disable stream callbacks altogether by passing  Dean Camera committed Feb 23, 2009 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378  * the token NO_STREAM_CALLBACKS to the compiler using the -D switch. * * * \section Sec_Migration151 Migrating from V1.5.1 to V1.5.2 * * Library Demos * - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations * of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade * to the latest code. * - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where * possible any existing devices upgrade to the latest bootloader code. * * * \section Sec_Migration150 Migrating from V1.5.0 to V1.5.1 * * Library Demos * - The USBtoSerial demo was broken in the 1.5.0 release, due to incorrect register polling in place of the * global "Transmitting" flag. The change has been reverted in this release. Projects built upon the demo * should upgrade to the latest code. * - The HID class demos did not implement the mandatory GetReport HID class request. Projects built upon the HID * demos should upgrade to the latest code. * - The HID class demos incorrectly reported themselves as boot-protocol enabled HID devices in their descriptors. * Projects built upon the HID demos should upgrade to the latest code. * - The MIDI device demo had incorrect AudioStreaming interface descriptors. Projects built upon the MIDI demo * should upgrade to the latest code. * - The AudioOut demo did not correctly tristate the speaker pins when USB was disconnected, wasting power. * Projects built upon the AudioOut demo should upgrade to the latest code. * * * \section Sec_Migration141 Migrating from V1.4.1 to V1.5.0 * * Library Demos * - Previous versions of the library demos had incorrectly encoded BCD version numbers in the descriptors. To * avoid such mistakes in the future, the VERSION_BCD macro has been added to StdDescriptors.h. Existing * projects should at least manually correct the BCD version numbers, or preferably update the descriptors to * encode the version number in BCD format using the new macro.  Dean Camera committed Apr 19, 2009 379  * - The mandatory GetReport class-specific request was accidentally omitted from previous versions of the demos  Dean Camera committed Feb 23, 2009 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406  * based on the Human Interface Device (HID) class. This has been corrected, and any user projects based on the * HID demos should also be updated accordingly. * - The CDC demos now correctly send an empty packet directly after a full packet, to end the transmission. * Failure to do this on projects which always or frequently send full packets will cause buffering issues on * the host OS. All CDC user projects are advised to update their transmission routines in the same manner as * the library CDC demos. * - The previous interrupt-driven Endpoint/Pipe demos did not properly save and restore the currently selected * Endpoint/Pipe when the ISR fired. This has been corrected - user projects based on the interrupt driven * demos should also update to properly save and restore the selected Endpoint/Pipe. * * Non-USB Library Components * - The Atomic.h and ISRMacro.h header files in MyUSB/Common have been removed, as the library is now only * compatible with avr-libc library versions newer than the time before the functionality of the deleted * headers was available. * * Device Mode * - The GetDescriptor function (see StdDescriptors.h) now has a new prototype, with altered parameter names and * functions. Existing projects will need to update the GetDescriptor implementation to reflect the new API. * The previously split Type and Index parameters are now passed as the original wValue parameter to the * function, to make way for the USB specification wIndex parameter which is not the same as the * previous Index parameter. * - The USB_UnhandledControlPacket event (see Events.h) now has new parameter names, to be in line with the * official USB specification. Existing code will need to be altered to use the new parameter names. * - The USB_CreateEndpoints event (see Events.h) has been renamed to USB_ConfigurationChanged, which is more * appropriate. It fires in an identical manner to the previously named event, thus the only change to be made * is the event name itself in the user project. * - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a  Dean Camera committed Apr 19, 2009 407  * pseudo-descriptor modelled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type  Dean Camera committed Feb 23, 2009 408  * descriptor as indicated in the USB specification, thus all device code must be updated accordingly.  Dean Camera committed Apr 19, 2009 409  * - The names of several Endpoint macros have been changed to be more consistent with the rest of the library,  Dean Camera committed Feb 23, 2009 410 411 412  * 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  Dean Camera committed Apr 19, 2009 413  * structure named SenseData in SCSI.c which caused some problems with some hosts. User projects based on this  Dean Camera committed Feb 23, 2009 414 415 416 417 418 419 420 421 422 423  * demo should correct the structure value to maintain compatibility across multiple OS platforms. * - By default, the descriptor structures use the official USB specification names for the elements. Previous * versions of the library used non-standard (but more verbose) names, which are still usable in the current * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file * documentation for more details. * * Host Mode * - The USB_Host_Request_Header_t structure in HostChapter9.h (used for issuing control requests) has had its * members renamed to the official USB specification names for requests. Existing code will need to be updated * to use the new names.  Dean Camera committed Apr 19, 2009 424  * - The names of several Pipe macros have been changed to be more consistent with the rest of the library,  Dean Camera committed Feb 23, 2009 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439  * with no implementation changes. This means that existing code can be altered to use the new macro names * with no other considerations required. See Pipe.h for the new macro names. * - By default, the descriptor structures use the official USB specification names for the elements. Previous * versions of the library used non-standard (but more verbose) names, which are still usable in the current * and future releases when the correct compile time option is enabled. See the StdDescriptors.h file * documentation for more details. * - The names of the macros in Host.h for controlling the SOF generation have been renamed, see the Host.h * module documentation for the new macro names. * * Dual Role Mode * - The OTG.h header file has been corrected so that the macros now perform their stated functions. Any existing * projects using custom headers to fix the broken OTG header should now be altered to once again use the OTG * header inside the library. * - The USB_DeviceEnumerationComplete event (see Events.h) now also fires in Device mode, when the host has * finished enumerating the device. Projects relying on the event only firing in Host mode should be updated  Dean Camera committed Apr 19, 2009 440  * so that the event action only occurs when the USB_Mode global is set to USB_MODE_HOST.  Dean Camera committed Feb 23, 2009 441  */