Changelog for MyUSB:
=======================================

	Version 1.5.3 - Released 2nd October, 2008:
	--------------------------------------------
		* Fixed CDC bootloader using pgmspace macros for some descriptors inappropriately
		* Updated all Mouse and Keyboard device demos to include boot protocol support (now works in BIOS)
		* Renamed bootloader directories to remove spaces, which were causing build problems on several OSes
		* Removed serial number strings from all but the MassStore demo where it is required - users were not
		  modifing the code to either ommit the descriptor or use a unique serial per device causing problems
		  when multiple units of the same device were plugged in at the same time
		* AudioOutput and AudioInput demos now correctly silence endpoints when not enabled by the host
		* Added KeyboardMouse demo (Keyboard and Mouse functionality combined into a single demo)
		* Added DriverStubs directory to house board level driver templates, to make MyUSB compatible custom board
		  driver creation easier
		* Extended MassStorage demo to support multiple LUNs, 2 by default
		* Fixed incorrect device address mask, preventing the device from enumerating with addresses larger than 63
		* Fixed incorrect data direction mask in the GetStatus standard request, preventing it from being handled
		* Fixed incorrect GetStatus standard request for endpoints, now returns the endpoint STALL status correctly
		* Added in new USB_RemoteWakeupEnabled and USB_CurrentlySelfPowered flags rather than using fixed values
		* Added DualCDC demo to demonstrate the use of Interface Association Descriptors
		* Added pipe NAK detection and clearing API
		* Added pipe status change (NAK, STALL, etc.) interrupt API
		* Fixed MassStorageHost demo so that it no longer freezes randomly when issuing several commands in a row
		* Host demos configuration descriptor routines now return a unique error code when the returned data does
		  not have a valid configuration descriptor header
		* Added Endpoint_WaitUntilReady() and Pipe_WaitUntilReady() functions
		* Stream functions now have software timeouts, timeout period can be set by the USB_STREAM_TIMEOUT_MS token
		* All demos now pass the USB.org automated Chapter 9 device compliance tests
		* All HID demos now pass the USB.org automated HID compliance tests
		* Polling interval of the interrupt endpoint in the CDC based demos changed to 0xFF to fix problems on Linux systems
		* Changed stream functions to accept a new callback function, with NO_STREAM_CALLBACKS used to disable all callbacks
		* Mass Storage demo dataflash management routines changed to use the endpoint stream functions		
		* Added AVRStudio project files for each demo in addition to the existing Programmer's Notepad master project file
		* Re-added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes
		  are reflected in the hardware (change was previously lost)

	Version 1.5.2 - Released 31st July, 2008:
	--------------------------------------------
		* Fixed SwapEndian_32() function in Common.h so that it now works correctly (wrong parameter types)
		* Updated RNDIS demo - notification endpoint is no longer blocking so that it works with faulty Linux RNDIS
		  implementations (where the notification endpoint is ignored in favour of polling the control endpoint)
		* Fixed incorrect Vendor Description string return size in RNDIS demo for the OID_GEN_VENDOR_DESCRIPTION OID token
		* Added very basic TCP/IP stack and HTTP/TELNET servers to RNDIS demo
		* Fixed DFU bootloader exit causing programming software to complain about failed writes
		* Fixed DFU bootloader EEPROM programming mode wiping first flash page
		* Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process)
		* Added support for the ATMEGA16U4 AVR microcontroller
		* Library licence changed from LGPLv3 to MIT license

	Version 1.5.1 - Released 8th July, 2008:
	--------------------------------------------
		* Changed host demos to enable the host function task on the firing of the USB_DeviceEnumerationComplete event
		  rather than the USB_DeviceAttached event
		* HID Usage Stack now forcefully cleared after an IN/OUT/FEATURE item has been completely processed to remove
		  any referenced but not created usages
		* Changed USB_INT_DisableAllInterrupts() and USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(),
		  USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() to normal functions (from inline)
		* Fixed USBtoSerial demo not sending data, only receiving
		* Fixed main makefile to make all by default, fixed MagStripe directory case to prevent case-sensitive path problems
		* ConfigDescriptor functions made normal, instead of static inline
		* Pipe/Endpoint *_Ignore_* functions changed to *_Discard_*, old names still present as aliases
		* Fixed ENDPOINT_MAX_SIZE define to be correct on limited USB controller AVRs
		* Changed endpoint and pipe size translation routines to use previous IF/ELSE IF cascade code, new algorithmic
		  approach was buggy and caused problems
		* Bootloaders now compile with -fno-inline-small-functions option to reduce code size
		* Audio demos now use correct endpoint sizes for full and limited controller USB AVRs, double banking in all cases
		  to be in line with the specification (isochronous endpoints MUST be double banked)
		* Added Interface Association descriptor to StdDescriptors.h, based on the relevant USB2.0 ECN
		* Fixed MIDI demo, corrected Audio Streaming descriptor to follow the MIDI-specific AS structure
		* Fixed HID class demo descriptors so that the HID interface's protocol is 0x00 (required for non-boot protocol HID
                  devices) to prevent problems on hosts expecting the boot protocol functions to be supported
		* Added read/write control stream functions to Endpoint.h
		* Fixed AudioOut demo not setting port pins to inputs on USB disconnect properly
		* Added RNDISEthernet demo application

	Version 1.5.0 - Released 10 June, 2008:
	--------------------------------------------
		* Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages
		* Added CDC Host demo application
		* Added KeyboardFullInt demo application
		* Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction
		  size bits not required for the routines (improves compatibility with devices)
		* Fixed AudioInput demo - now correctly sends sampled audio to the host PC
		* Fixed AudioOutput demo oncemore -- apparently Windows requires endpoint packets to be >=192 bytes
		* Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes
		* Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser
		* Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder
		* Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler
		* Added Still Image Host demo application
		* The USB device task now restores the previously selected endpoint, allowing control requests to be transparently
		  handled via interrupts while other endpoints are serviced through polling
		* Fixed device signature being sent in reverse order in the CDC bootloader
		* Host demos now have a seperate ConfigDescriptor.c/.h file for configuration descriptor processing
		* HostWithParser demos now have a seperate HIDReport.c/.h file for HID report processing and dumping
		* Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value
		* CDC demos now send empty packets after sending a full one to prevent buffering issues on the host
		* Updated demo descriptors to use VID/PID values donated by Atmel
		* Added DoxyGen documentation to the source files
		* Fixed Serial_IsCharRecieved() definition, was previously reversed
		* Removed seperate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead
		* Removed unused Device Qualifier descriptor structure
		* Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged
		* Fixed MassStorageHost demo reading in the block data in reverse
		* Removed outdated typedefs in StdRequestType.h, superceeded by the macro masks
		* Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products
		* USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration
		* Interrupt driven demos now properly restore previously selected endpoint when ISR is complete
		* USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value
		* Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()
		  and USB_Host_IsBusSuspended()
		* Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistant, Pipe_SetInterruptFreq() is now
		  Pipe_SetInterruptPeriod() to use the correct terminology
		* UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC
		  Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays
		  of ASCII characters
		* Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR
		  model was given as the bank size
		* HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array
		* Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors
		* Cleaned up GetDescriptor device chapter 9 handler function
		* Added GET_REPORT class specific request to HID demos to make them complaint to the HID class
		* Cleaned up setting of USB_IsInitialized and USB_IsConnected values to only when needed
		* Removed Atomic.c and ISRMacro.h; the library was already only compatible with recent avr-lib-c for other reasons
		* All demos and library functions now use USB standardized names for the USB data (bRequest, wLength, etc.)
		* Added USE_NONSTANDARD_DESCRIPTOR_NAMES token to switch back to the non-standard descriptor element names

	Version 1.4.1 - Released 5 May, 2008:
	--------------------------------------------
		* Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo
		* Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly
		* Corrected version number in Version.h

	Version 1.4.0 - Released 30 April, 2008:
	--------------------------------------------
		* Added HID Report Parser API to the library
		* Added Mouse and Keyboard host demo applications, using the new HID report parser engine
		* Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device
		* Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos
		* Added MIDI device demo application to the library
		* Fixed problem preventing USB devices from being resumed from a suspended state
		* Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol
		* Added header to each demo application indicating the mode, class, subclass, standards used and supported speed
		* Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or
          PIPE_PIPENUM_MASK - this should be manually added to code which requires it
		* Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time
		* Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor()
		  to USB_Host_GetNextDescriptor()
		* Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines
		* Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file
		* Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the
		  new comparator API
		* Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct
		  big-endian for SCSI devices
		* Fixed macro/function naming consistancy; USB_HOST is now USB_Host, USB_DEV is now USB_Device
	    * Added better error reporting to host demos
		* Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls

	Version 1.3.2 - Released April 1st, 2008:
	--------------------------------------------
		* Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes
		  are reflected in the hardware
		* Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the 
		  GetLineCoding request had an incorrect RequestType mask preventing it from being processed
		* Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full
		* Device control endpoint size is now determined from the device's descriptors rather than being fixed
		* Seperated out SPI code into new SPI driver in AT90USBXXX driver directory
		* Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID
		* Added support for the RZUSBSTICK board
		* Bicolour driver removed in favour of generic LEDs driver
		* Added support for the ATMEGA32U4 AVR
		* Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL

	Version 1.3.1 - Release March 19th 2008:
	--------------------------------------------
		* Fixed USB to Serial demo - class value in the descriptors was incorrect
		* Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low
		  speed mode devices to enumerate properly
		* USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work
		  on USB AVRs with limited USB FIFO RAM
		* Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited
		  USB device controller AVRs (AT90USB162, AT90USB82) to function correctly
		* Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output
		* Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile
		* Optimized Mass Storage demo for a little extra transfer speed
		* Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock
		* Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions
		  (including Big and Little Endian variants)
		* Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file
		* Added new SetSystemClockPrescaler() macro - thanks to Joerg Wunsch
		* Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7)
		* Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the
		  directives in the datasheet
		* Fixed PLL prescaler defines for all AVR models and frequencies
		* Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions
		* Added interrupt driven keyboard and mouse device demos
		* Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code
		  size savings
		* Added missing Pipe_GetCurrentPipe() macro to Pipe.h

	Version 1.3.0 - Released March 7th 2008:
	--------------------------------------------
		* Unneccesary control endpoint config removed from device mode
		* Fixed device standard request interpreter accidentally processing some class-specific requests
		* Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library
		  to use descriptors stored in RAM or EEPROM rather than flash memory
		* All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader
		* USB_DEV_OPT_LOWSPEED option now works correctly
		* Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS
		  compile time define
		* USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or
		  if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options
		* USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS
		* Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the
		  compiler can throw away the result more efficiently
		* Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be
		  controlled by the new Scheduler_SetGroupTaskMode() routine
		* Added support for AT90USB162 and AT90USB82 AVR models
		* Added support for the STK525 and STK526 boards
		* Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and
		  placing board drivers in <APP DIRECTORY>/Board/
		* PLL is now stopped and USB clock is frozen when detatched from host in device mode, to save power
		* Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY
		* Fixed USB_DEV_IsUSBSuspended() - now checks the correct register
		* Fixed data transfers to devices when in host mode
		* Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to
		  USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with
		  the real high speed mode, which is unavaliable on the USB AVRs)

	Version 1.2.0 - Released February 4th, 2008:
	--------------------------------------------
		* Added USB_DeviceEnumerationComplete event for host mode
		* Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and
		  stopped before the scheduler has been started (via Scheduler_Start)
		* Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management
		  task to be stopped when the USB is not connected to a host or device
		* All demos updated to stop the USB task when not in use via the appropriate USB events
		* Mass Storage Host demo application updated to function correctly with all USB flash disks
		* Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached
		  device, and prints the first block as hexadecimal numbers rather than ASCII characters
		* Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags
		* Shifted error handling code in the host enum state machine to a single block, to reduce code complexity
		* Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing
		  clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices
		* Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro


	Version 1.1.0 - Released January 25th, 2008:
	--------------------------------------------
		* Fixed DCONNI interrupt being enabled accidentally after a USB reset
		* Fixed DDISCI interrupt not being disabled when a device is not connected
		* Added workaround for powerless pullup devices causing false disconnect interrupts
		* Added USB_DeviceEnumerationFailed event for Host mode
		* AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer
		  pointer is passed
		* Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables
		  dependant on size of memory parameters passed in via the user project's makefile
		* Fixed incorrect device reset routine being called in USBTask
		* Devices which do not connect within the standard 300mS are now supported
		* Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being
		  started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects
		* Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the
		  need to have a task ID list
		* ID transistion interrupt now raises the appropriate device/host disconnect event if device attached
		* Fixed double VBUS change (and VBUS -) event when detatching in device mode
		* Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile
		* Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and 
		  Endpoint_IsConfigured() after calling the config functions to determine success