From 77adb2ba529973b99383fd4571f67eede3afcda4 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 14 Mar 2012 22:12:40 +0000 Subject: [PATCH] Audio Device Class driver changed to also require the index of the Audio Control interface within the device, for SET/GET/CUR/MIN/MAX/RES property adjustments. --- Demos/Device/ClassDriver/AudioInput/AudioInput.c | 1 + Demos/Device/ClassDriver/AudioOutput/AudioOutput.c | 1 + LUFA/DoxygenPages/ChangeLog.txt | 1 + LUFA/DoxygenPages/MigrationInformation.txt | 4 ++++ LUFA/Drivers/USB/Class/Device/AudioClassDevice.c | 6 +++++- LUFA/Drivers/USB/Class/Device/AudioClassDevice.h | 3 +++ Maintenance/makefile | 2 +- 7 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Demos/Device/ClassDriver/AudioInput/AudioInput.c b/Demos/Device/ClassDriver/AudioInput/AudioInput.c index 9aa8667551..382446a80a 100644 --- a/Demos/Device/ClassDriver/AudioInput/AudioInput.c +++ b/Demos/Device/ClassDriver/AudioInput/AudioInput.c @@ -44,6 +44,7 @@ USB_ClassInfo_Audio_Device_t Microphone_Audio_Interface = { .Config = { + .ControlInterfaceNumber = 0, .StreamingInterfaceNumber = 1, .DataINEndpointNumber = AUDIO_STREAM_EPNUM, diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c index 6a87211e59..78d81f57a8 100644 --- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c +++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c @@ -44,6 +44,7 @@ USB_ClassInfo_Audio_Device_t Speaker_Audio_Interface = { .Config = { + .ControlInterfaceNumber = 0, .StreamingInterfaceNumber = 1, .DataOUTEndpointNumber = AUDIO_STREAM_EPNUM, diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index c769c07e91..b24e94a3fe 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -17,6 +17,7 @@ * Changed: * - Core: * - Android Accessory Host property strings changed from a struct of pointer to an array to prevent unaligned access on greater than 8-bit architectures + * - Audio Device Class driver changed to also require the index of the Audio Control interface within the device, for SET/GET/CUR/MIN/MAX/RES property adjustments * - Library Applications: * - Raised the guard bits in the AVRISP-MKII clone project when in PDI and TPI to 32, to prevent communication errors on low quality connections to a target * diff --git a/LUFA/DoxygenPages/MigrationInformation.txt b/LUFA/DoxygenPages/MigrationInformation.txt index 0210a37d83..e005af7ebb 100644 --- a/LUFA/DoxygenPages/MigrationInformation.txt +++ b/LUFA/DoxygenPages/MigrationInformation.txt @@ -11,6 +11,10 @@ * areas relevant to making older projects compatible with the API changes of each new release. * * \section Sec_MigrationXXXXXX Migrating from 120219 to XXXXXX + * Device Mode + * - The device mode Audio Class driver now requires an additional configuration parameter, the Audio Control interface index. Existing applications should + * be adjusted to specify the additional configuration parameter. + * * Host Mode * - The Android Accessory Host class driver property strings are now a array of \c char* rather than a struct of named pointers. Existing applications * should use C99 Designated Initializers with the property string indexes located in \ref AOA_Strings_t instead. diff --git a/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c b/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c index 1e91a61340..4f3cfd62df 100644 --- a/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c +++ b/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c @@ -44,7 +44,11 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT) == REQREC_INTERFACE) { - if ((USB_ControlRequest.wIndex & 0xFF) != AudioInterfaceInfo->Config.StreamingInterfaceNumber) + uint8_t InterfaceIndex = (USB_ControlRequest.wIndex & 0xFF); + + if ((InterfaceIndex != AudioInterfaceInfo->Config.ControlInterfaceNumber) && + (InterfaceIndex != AudioInterfaceInfo->Config.StreamingInterfaceNumber)) + return; } else if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT) == REQREC_ENDPOINT) diff --git a/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h b/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h index dad177e043..2391266074 100644 --- a/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h +++ b/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h @@ -79,6 +79,9 @@ { struct { + uint8_t ControlInterfaceNumber; /**< Index of the Audio Control interface within the device this + * structure controls. + */ uint8_t StreamingInterfaceNumber; /**< Index of the Audio Streaming interface within the device this * structure controls. */ diff --git a/Maintenance/makefile b/Maintenance/makefile index ae40fd7571..137b802a7f 100644 --- a/Maintenance/makefile +++ b/Maintenance/makefile @@ -6,7 +6,7 @@ # www.lufa-lib.org # -# Maintenance scripts not required by general LUFA users, used for development. +# Maintenance scripts not required by general LUFA users, used for project development purposes. LUFA_ROOT = ../