diff --git a/Demos/Device/ClassDriver/AudioInput/AudioInput.h b/Demos/Device/ClassDriver/AudioInput/AudioInput.h index 03e2a6da3b..cf08c4e542 100644 --- a/Demos/Device/ClassDriver/AudioInput/AudioInput.h +++ b/Demos/Device/ClassDriver/AudioInput/AudioInput.h @@ -43,7 +43,6 @@ #include #include - #include #include #include #include diff --git a/Demos/Device/ClassDriver/AudioInput/Descriptors.c b/Demos/Device/ClassDriver/AudioInput/Descriptors.c index e6419ad488..6753171e87 100644 --- a/Demos/Device/ClassDriver/AudioInput/Descriptors.c +++ b/Demos/Device/ClassDriver/AudioInput/Descriptors.c @@ -199,7 +199,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .SubFrameSize = 0x02, .BitResolution = 16, - .SampleFrequencyType = (AUDIO_TOTAL_SAMPLE_RATES * sizeof(USB_Audio_SampleFreq_t)), + .SampleFrequencyType = AUDIO_TOTAL_SAMPLE_RATES, .SampleFrequencies = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h index bc4c632d85..6dea1267d6 100644 --- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h +++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h @@ -46,7 +46,6 @@ #include #include - #include #include #include diff --git a/Demos/Device/ClassDriver/AudioOutput/Descriptors.c b/Demos/Device/ClassDriver/AudioOutput/Descriptors.c index efbe82410f..afc30466e3 100644 --- a/Demos/Device/ClassDriver/AudioOutput/Descriptors.c +++ b/Demos/Device/ClassDriver/AudioOutput/Descriptors.c @@ -200,7 +200,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .SubFrameSize = 0x02, .BitResolution = 16, - .SampleFrequencyType = (AUDIO_TOTAL_SAMPLE_RATES * sizeof(USB_Audio_SampleFreq_t)), + .SampleFrequencyType = AUDIO_TOTAL_SAMPLE_RATES, .SampleFrequencies = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.h b/Demos/Device/LowLevel/AudioOutput/Descriptors.h index 0623c77752..9ad0299f9c 100644 --- a/Demos/Device/LowLevel/AudioOutput/Descriptors.h +++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.h @@ -138,7 +138,7 @@ #define EP_ACCEPTS_SMALL_PACKETS (0 << 7) /** Endpoint number of the Audio isochronous streaming data endpoint. */ - #define AUDIO_STREAM_EPNUM 1 + #define AUDIO_STREAM_EPNUM 1 /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires * at least 192 bytes for correct output, thus the smaller 128 byte maximum endpoint size on some of the smaller diff --git a/LUFA/Drivers/USB/HighLevel/Events.h b/LUFA/Drivers/USB/HighLevel/Events.h index 5a007ff2a4..1e03e7b48e 100644 --- a/LUFA/Drivers/USB/HighLevel/Events.h +++ b/LUFA/Drivers/USB/HighLevel/Events.h @@ -40,7 +40,8 @@ * listed here. If an event with no user-associated handler is fired within the library, it by default maps to an * internal empty stub function. * - * Each event must only have one associated event handler, but can be raised by multiple sources. + * Each event must only have one associated event handler, but can be raised by multiple sources by calling the event + * name just like any regular C function (with any required event parameters). * * @{ */ @@ -142,12 +143,19 @@ /** Event for USB device enumeration completion. This event fires when a the USB interface is * in host mode and an attached USB device has been completely enumerated and is ready to be * controlled by the user application. + * + * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around + * 1 second) when a transaction is waiting to be processed by the device will prevent break communications + * and cause the host to reset the USB bus. */ void EVENT_USB_Host_DeviceEnumerationComplete(void); /** Event for USB device connection. This event fires when the AVR in device mode and the device is connected * to a host, beginning the enumeration process, measured by a rising level on the AVR's VBUS pin. * + * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around + * two seconds) will prevent the device from enumerating correctly. + * * \note For the smaller series 2 USB AVRs with limited USB controllers, VBUS is not available to the USB controller. * this means that the current connection state is derived from the bus suspension and wake up events by default, * which is not always accurate (host may suspend the bus while still connected). If the actual connection state @@ -182,8 +190,10 @@ /** Event for unhandled control requests. This event fires when a the USB host issues a control * request to the control endpoint (address 0) that the library does not handle. This may either * be a standard request that the library has no handler code for, or a class specific request - * issued to the device which must be handled appropriately. Due to the strict timing requirements - * on control transfers, interrupts are disabled during control request processing. + * issued to the device which must be handled appropriately. + * + * This event is time-critical; eack packet within the request transaction must be acknowedged or + * sent within 50ms or the host will abort the transfer. * * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see * \ref Group_USBManagement documentation). @@ -199,6 +209,9 @@ * selected configuration number while in device mode. This event should be hooked in device * applications to create the endpoints and configure the device for the selected configuration. * + * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around + * one second) will prevent the device from enumerating correctly. + * * This event fires after the value of \ref USB_ConfigurationNumber has been changed. * * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see @@ -236,6 +249,9 @@ * a the USB host requests that the device reset its interface. This event fires after the control * endpoint has been automatically configured by the library. * + * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around + * two seconds) will prevent the device from enumerating correctly. + * * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see * \ref Group_USBManagement documentation). */ @@ -245,8 +261,11 @@ * frame, once per millisecond, and is synchronised to the USB bus. This can be used as an accurate * millisecond timer source when the USB bus is enumerated in device mode to a USB host. * - * This event is not normally active - it must be manually enabled and disabled via the - * \ref USB_Device_EnableSOFEvents() and \ref USB_Device_DisableSOFEvents() commands after enumeration. + * This event is time-critical; it is run once per millisecond and thus long handlers will significantly + * degrade device performance. This event should only be enabled when needed to reduce device wakeups. + * + * \note This event is not normally active - it must be manually enabled and disabled via the + * \ref USB_Device_EnableSOFEvents() and \ref USB_Device_DisableSOFEvents() commands after enumeration. * * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see * \ref Group_USBManagement documentation). diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt index b9ea7b665a..7ea7489fe4 100644 --- a/LUFA/ManPages/FutureChanges.txt +++ b/LUFA/ManPages/FutureChanges.txt @@ -23,11 +23,9 @@ * - Change makefiles to allow for absolute LUFA location to be used * - Abstract out the physical media from the Mass Storage device demos * - Add RNDIS Host Class driver - * - Make CDC Host Class driver work for devices with bidirectional endpoints * - Make new demos * -# Multiple-report HID device * -# Mouse/CDC Dual Class Device - * -# MIDI Host class driver and demo * - Port LUFA to other architectures * -# AVR32 UC3B series microcontrollers * -# Atmel ARM7 series microcontrollers