SAMV71 Xplained Ultra Software Package 1.4

USBDDriverDescriptors.c

Go to the documentation of this file.
00001 /* ----------------------------------------------------------------------------
00002  *         SAM Software Package License 
00003  * ----------------------------------------------------------------------------
00004  * Copyright (c) 2012, Atmel Corporation
00005  *
00006  * All rights reserved.
00007  *
00008  * Redistribution and use in source and binary forms, with or without
00009  * modification, are permitted provided that the following conditions are met:
00010  *
00011  * - Redistributions of source code must retain the above copyright notice,
00012  * this list of conditions and the disclaimer below.
00013  *
00014  * Atmel's name may not be used to endorse or promote products derived from
00015  * this software without specific prior written permission.
00016  *
00017  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
00018  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00019  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
00020  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
00021  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00022  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
00023  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00024  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00025  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00026  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027  * ----------------------------------------------------------------------------
00028  */
00029 
00030 /** \file
00031  * \addtogroup usbd_audio_speaker
00032  *@{
00033  */
00034 
00035 /*----------------------------------------------------------------------------
00036  *         Headers
00037  *----------------------------------------------------------------------------*/
00038 
00039 #include <board.h>
00040 
00041 #include <USBD_Config.h>
00042 
00043 #include <HIDAUDDDriver.h>
00044 #include <HIDDKeyboard.h>
00045 #include <AUDDFunction.h>
00046 
00047 /*----------------------------------------------------------------------------
00048  *         Definitions
00049  *----------------------------------------------------------------------------*/
00050 
00051 /** \addtogroup usbd_audio_id USB Device Audio Speaker Codes
00052  *      @{
00053  * This section lists the device IDs and release number of the USB Audio
00054  * Speaker device.
00055  * - \ref AUDDSpeakerDriverDescriptors_VENDORID
00056  * - \ref AUDDSpeakerDriverDescriptors_PRODUCTID
00057  * - \ref AUDDSpeakerDriverDescriptors_RELEASE
00058  */
00059 /** Device vendor ID. */
00060 #define AUDDSpeakerDriverDescriptors_VENDORID            USBD_VID_ATMEL
00061 /** Device product ID. */
00062 #define AUDDSpeakerDriverDescriptors_PRODUCTID           USBD_PID_HIDAUDIO
00063 /** Device release number in BCD format. */
00064 #define AUDDSpeakerDriverDescriptors_RELEASE             USBD_RELEASE_1_00
00065 /**     @}*/
00066 
00067 /*----------------------------------------------------------------------------
00068  *         Internal types
00069  *----------------------------------------------------------------------------*/
00070 
00071 
00072 /*----------------------------------------------------------------------------
00073  *         Exported variables
00074  *----------------------------------------------------------------------------*/
00075 
00076 /** Device descriptor for a USB audio speaker driver. */
00077 const USBDeviceDescriptor deviceDescriptor = {
00078 
00079     sizeof(USBDeviceDescriptor),
00080     USBGenericDescriptor_DEVICE,
00081     USBDeviceDescriptor_USB2_00,
00082     AUDDeviceDescriptor_CLASS,
00083     AUDDeviceDescriptor_SUBCLASS,
00084     AUDDeviceDescriptor_PROTOCOL,
00085     CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
00086     AUDDSpeakerDriverDescriptors_VENDORID,
00087     AUDDSpeakerDriverDescriptors_PRODUCTID,
00088     AUDDSpeakerDriverDescriptors_RELEASE,
00089     1, /* Manufacturer string descriptor index */
00090     2, /* Product string descriptor index */
00091     3, /* Index of serial number string descriptor */
00092     1  /* One possible configuration */
00093 };
00094 
00095 /** Device qualifier descriptor (Necessary to pass USB test). */
00096 static const USBDeviceQualifierDescriptor qualifierDescriptor = {
00097 
00098     sizeof(USBDeviceQualifierDescriptor),
00099     USBGenericDescriptor_DEVICEQUALIFIER,
00100     USBDeviceDescriptor_USB2_00,
00101     AUDDeviceDescriptor_CLASS,            
00102     AUDDeviceDescriptor_SUBCLASS,                           
00103     AUDDeviceDescriptor_PROTOCOL,                           
00104     CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),    
00105     1, // Device has one possible configuration.
00106     0x00
00107 };
00108 
00109 /** Configuration descriptors for a USB HID(keyboard) + Audio(speaker) driver. */
00110 const HidAuddDriverConfigurationDescriptors fsConfigurationDescriptors = {
00111 
00112     /* Configuration descriptor */
00113     {
00114         sizeof(USBConfigurationDescriptor),
00115         USBGenericDescriptor_CONFIGURATION,
00116         sizeof(HidAuddDriverConfigurationDescriptors),
00117         HIDAUDDDriverDescriptors_NUMINTERFACE, /* 3 interfaces */
00118         1, /* This is configuration #1 */
00119         0, /* No string descriptor */
00120         USBD_BMATTRIBUTES,
00121         USBConfigurationDescriptor_POWER(100)
00122     },
00123     /* -- HID */
00124     /* Interface descriptor */
00125     {
00126         sizeof(USBInterfaceDescriptor),
00127         USBGenericDescriptor_INTERFACE,
00128         HIDAUDDDriverDescriptors_HID_INTERFACE,
00129         0, // This is alternate setting #0
00130         2, // Two endpoints used
00131         HIDInterfaceDescriptor_CLASS,
00132         HIDInterfaceDescriptor_SUBCLASS_NONE,
00133         HIDInterfaceDescriptor_PROTOCOL_NONE,
00134         0  // No associated string descriptor
00135     },
00136     /* HID descriptor */
00137     {
00138         sizeof(HIDDescriptor1),
00139         HIDGenericDescriptor_HID,
00140         HIDDescriptor_HID1_11,
00141         0, // Device is not localized, no country code
00142         1, // One HID-specific descriptor (apart from this one)
00143         HIDGenericDescriptor_REPORT,
00144         {HIDDKeyboard_REPORTDESCRIPTORSIZE}
00145     },
00146     /* Interrupt IN endpoint descriptor */
00147     {
00148         sizeof(USBEndpointDescriptor),
00149         USBGenericDescriptor_ENDPOINT,
00150         USBEndpointDescriptor_ADDRESS(
00151             USBEndpointDescriptor_IN,
00152             HIDAUDD_Descriptors_INTERRUPTIN),
00153         USBEndpointDescriptor_INTERRUPT,
00154         sizeof(HIDDKeyboardInputReport),
00155         HIDDKeyboardDescriptors_INTERRUPTIN_POLLING_FS
00156     },
00157     /* Interrupt OUT endpoint descriptor */
00158     {
00159         sizeof(USBEndpointDescriptor),
00160         USBGenericDescriptor_ENDPOINT,
00161         USBEndpointDescriptor_ADDRESS(
00162             USBEndpointDescriptor_OUT,
00163             HIDAUDD_Descriptors_INTERRUPTOUT),
00164         USBEndpointDescriptor_INTERRUPT,
00165         sizeof(HIDDKeyboardOutputReport),
00166         HIDDKeyboardDescriptors_INTERRUPTOUT_POLLING_FS
00167     },
00168 
00169     /* -- AUDIO */
00170     /* IAD for AUDIO function */
00171     {
00172         sizeof(USBInterfaceAssociationDescriptor),
00173         USBGenericDescriptor_INTERFACEASSOCIATION,
00174         HIDAUDDDriverDescriptors_AUD_INTERFACE,
00175         2,
00176         AUDControlInterfaceDescriptor_CLASS,
00177         AUDControlInterfaceDescriptor_SUBCLASS,
00178         AUDControlInterfaceDescriptor_PROTOCOL,
00179         0  // No string descriptor for this interface
00180     },
00181     /* Audio control interface standard descriptor */
00182     {
00183         sizeof(USBInterfaceDescriptor),
00184         USBGenericDescriptor_INTERFACE,
00185         HIDAUDDDriverDescriptors_AUD_INTERFACE,
00186         0, /* This is alternate setting #0 */
00187         0, /* This interface uses no endpoint */
00188         AUDControlInterfaceDescriptor_CLASS,
00189         AUDControlInterfaceDescriptor_SUBCLASS,
00190         AUDControlInterfaceDescriptor_PROTOCOL,
00191         0  /* No string descriptor */
00192     },
00193     /* Audio control interface descriptors */
00194     {
00195         /* Header descriptor */
00196         {
00197             {
00198                 sizeof(AUDHeaderDescriptor1),
00199                 AUDGenericDescriptor_INTERFACE,
00200                 AUDGenericDescriptor_HEADER,
00201                 AUDHeaderDescriptor_AUD1_00,
00202                 sizeof(AUDDSpeakerDriverAudioControlDescriptors),
00203                 1 /* One streaming interface */
00204             },
00205             HIDAUDDDriverDescriptors_AUD_INTERFACE + 1
00206         },
00207         /* Input terminal descriptor */
00208         {
00209             sizeof(AUDInputTerminalDescriptor),
00210             AUDGenericDescriptor_INTERFACE,
00211             AUDGenericDescriptor_INPUTTERMINAL,
00212             AUDDFunction_INPUTTERMINAL,
00213             AUDInputTerminalDescriptor_USBSTREAMING,
00214             AUDDFunction_OUTPUTTERMINAL,
00215             AUDDevice_NUMCHANNELS, /* L,R */
00216             AUDInputTerminalDescriptor_LEFTFRONT
00217             | AUDInputTerminalDescriptor_RIGHTFRONT,
00218             0, /* No string descriptor for channels */
00219             0  /* No string descriptor for input terminal */
00220         },
00221         /* Output terminal descriptor */
00222         {
00223             sizeof(AUDOutputTerminalDescriptor),
00224             AUDGenericDescriptor_INTERFACE,
00225             AUDGenericDescriptor_OUTPUTTERMINAL,
00226             AUDDFunction_OUTPUTTERMINAL,
00227             AUDOutputTerminalDescriptor_SPEAKER,
00228             AUDDFunction_INPUTTERMINAL,
00229             AUDDFunction_FEATUREUNIT,
00230             0 /* No string descriptor */
00231         },
00232         /* Feature unit descriptor */
00233         {
00234             {
00235                 sizeof(AUDFeatureUnitDescriptor3),
00236                 AUDGenericDescriptor_INTERFACE,
00237                 AUDGenericDescriptor_FEATUREUNIT,
00238                 AUDDFunction_FEATUREUNIT,
00239                 AUDDFunction_INPUTTERMINAL,
00240                 1, /* 1 byte per channel for controls */
00241             },
00242             {
00243                 AUDFeatureUnitDescriptor_MUTE, /* Master channel controls */
00244                 0, /* Right channel controls */
00245                 0  /* Left channel controls */
00246             },
00247             0 /* No string descriptor */
00248         }
00249     },
00250     /* Audio streaming interface with 0 endpoints */
00251     {
00252         sizeof(USBInterfaceDescriptor),
00253         USBGenericDescriptor_INTERFACE,
00254         HIDAUDDDriverDescriptors_AUD_INTERFACE + 1,
00255         0, /* This is alternate setting #0 */
00256         0, /* This interface uses no endpoints */
00257         AUDStreamingInterfaceDescriptor_CLASS,
00258         AUDStreamingInterfaceDescriptor_SUBCLASS,
00259         AUDStreamingInterfaceDescriptor_PROTOCOL,
00260         0  /* No string descriptor */
00261     },
00262     /* Audio streaming interface with data endpoint */
00263     {
00264         sizeof(USBInterfaceDescriptor),
00265         USBGenericDescriptor_INTERFACE,
00266         HIDAUDDDriverDescriptors_AUD_INTERFACE + 1,
00267         1, /* This is alternate setting #1 */
00268         1, /* This interface uses 1 endpoint */
00269         AUDStreamingInterfaceDescriptor_CLASS,
00270         AUDStreamingInterfaceDescriptor_SUBCLASS,
00271         AUDStreamingInterfaceDescriptor_PROTOCOL,
00272         0  /* No string descriptor */
00273     },
00274     /* Audio streaming class-specific descriptor */
00275     {
00276         sizeof(AUDStreamingInterfaceDescriptor),
00277         AUDGenericDescriptor_INTERFACE,
00278         AUDStreamingInterfaceDescriptor_GENERAL,
00279         AUDDFunction_INPUTTERMINAL,
00280         0, /* No internal delay because of data path */
00281         AUDFormatTypeOneDescriptor_PCM
00282     },
00283     /* Format type I descriptor */
00284     {
00285         {
00286             sizeof(AUDFormatTypeOneDescriptor1),
00287             AUDGenericDescriptor_INTERFACE,
00288             AUDStreamingInterfaceDescriptor_FORMATTYPE,
00289             AUDFormatTypeOneDescriptor_FORMATTYPEONE,
00290             AUDDevice_NUMCHANNELS,
00291             AUDDevice_BYTESPERSAMPLE,
00292             AUDDevice_BYTESPERSAMPLE*8,
00293             1 /* One discrete frequency supported */
00294         },
00295         {
00296             AUDDevice_SAMPLERATE & 0xFF,
00297             (AUDDevice_SAMPLERATE >> 8) & 0xFF,
00298             (AUDDevice_SAMPLERATE >> 16) & 0xFF
00299         }
00300     },
00301     /* Audio streaming endpoint standard descriptor */
00302     {
00303         sizeof(AUDEndpointDescriptor),
00304         USBGenericDescriptor_ENDPOINT,
00305         USBEndpointDescriptor_ADDRESS(
00306             USBEndpointDescriptor_OUT, HIDAUDD_Descriptors_ISO_DATAOUT),
00307         USBEndpointDescriptor_ISOCHRONOUS,
00308         AUDDevice_BYTESPERFRAME,
00309         AUDDFunction_FS_INTERVAL, /* Polling interval = 1 ms */
00310         0, /* This is not a synchronization endpoint */
00311         0  /* No associated synchronization endpoint */
00312     },
00313     /* Audio streaming endpoint class-specific descriptor */
00314     {
00315         sizeof(AUDDataEndpointDescriptor),
00316         AUDGenericDescriptor_ENDPOINT,
00317         AUDDataEndpointDescriptor_SUBTYPE,
00318         0, /* No attributes */
00319         0, /* Endpoint is not synchronized */
00320         0  /* Endpoint is not synchronized */
00321     }
00322 };
00323 
00324 /** Configuration descriptors for a USB HID(keyboard) + Audio(speaker) driver. */
00325 const HidAuddDriverConfigurationDescriptors hsConfigurationDescriptors = {
00326 
00327     /* Configuration descriptor */
00328     {
00329         sizeof(USBConfigurationDescriptor),
00330         USBGenericDescriptor_CONFIGURATION,
00331         sizeof(HidAuddDriverConfigurationDescriptors),
00332         HIDAUDDDriverDescriptors_NUMINTERFACE, /* 3 interfaces */
00333         1, /* This is configuration #1 */
00334         0, /* No string descriptor */
00335         USBD_BMATTRIBUTES,
00336         USBConfigurationDescriptor_POWER(100)
00337     },
00338     /* -- HID */
00339     /* Interface descriptor */
00340     {
00341         sizeof(USBInterfaceDescriptor),
00342         USBGenericDescriptor_INTERFACE,
00343         HIDAUDDDriverDescriptors_HID_INTERFACE,
00344         0, // This is alternate setting #0
00345         2, // Two endpoints used
00346         HIDInterfaceDescriptor_CLASS,
00347         HIDInterfaceDescriptor_SUBCLASS_NONE,
00348         HIDInterfaceDescriptor_PROTOCOL_NONE,
00349         0  // No associated string descriptor
00350     },
00351     /* HID descriptor */
00352     {
00353         sizeof(HIDDescriptor1),
00354         HIDGenericDescriptor_HID,
00355         HIDDescriptor_HID1_11,
00356         0, // Device is not localized, no country code
00357         1, // One HID-specific descriptor (apart from this one)
00358         HIDGenericDescriptor_REPORT,
00359         {HIDDKeyboard_REPORTDESCRIPTORSIZE}
00360     },
00361     /* Interrupt IN endpoint descriptor */
00362     {
00363         sizeof(USBEndpointDescriptor),
00364         USBGenericDescriptor_ENDPOINT,
00365         USBEndpointDescriptor_ADDRESS(
00366             USBEndpointDescriptor_IN,
00367             HIDAUDD_Descriptors_INTERRUPTIN),
00368         USBEndpointDescriptor_INTERRUPT,
00369         sizeof(HIDDKeyboardInputReport),
00370         HIDDKeyboardDescriptors_INTERRUPTIN_POLLING_HS
00371     },
00372     /* Interrupt OUT endpoint descriptor */
00373     {
00374         sizeof(USBEndpointDescriptor),
00375         USBGenericDescriptor_ENDPOINT,
00376         USBEndpointDescriptor_ADDRESS(
00377             USBEndpointDescriptor_OUT,
00378             HIDAUDD_Descriptors_INTERRUPTOUT),
00379         USBEndpointDescriptor_INTERRUPT,
00380         sizeof(HIDDKeyboardOutputReport),
00381         HIDDKeyboardDescriptors_INTERRUPTOUT_POLLING_HS
00382     },
00383 
00384     /* -- AUDIO */
00385     /* IAD for AUDIO function */
00386     {
00387         sizeof(USBInterfaceAssociationDescriptor),
00388         USBGenericDescriptor_INTERFACEASSOCIATION,
00389         HIDAUDDDriverDescriptors_AUD_INTERFACE,
00390         2,
00391         AUDControlInterfaceDescriptor_CLASS,
00392         AUDControlInterfaceDescriptor_SUBCLASS,
00393         AUDControlInterfaceDescriptor_PROTOCOL,
00394         0  // No string descriptor for this interface
00395     },
00396     /* Audio control interface standard descriptor */
00397     {
00398         sizeof(USBInterfaceDescriptor),
00399         USBGenericDescriptor_INTERFACE,
00400         HIDAUDDDriverDescriptors_AUD_INTERFACE,
00401         0, /* This is alternate setting #0 */
00402         0, /* This interface uses no endpoint */
00403         AUDControlInterfaceDescriptor_CLASS,
00404         AUDControlInterfaceDescriptor_SUBCLASS,
00405         AUDControlInterfaceDescriptor_PROTOCOL,
00406         0  /* No string descriptor */
00407     },
00408     /* Audio control interface descriptors */
00409     {
00410         /* Header descriptor */
00411         {
00412             {
00413                 sizeof(AUDHeaderDescriptor1),
00414                 AUDGenericDescriptor_INTERFACE,
00415                 AUDGenericDescriptor_HEADER,
00416                 AUDHeaderDescriptor_AUD1_00,
00417                 sizeof(AUDDSpeakerDriverAudioControlDescriptors),
00418                 1 /* One streaming interface */
00419             },
00420             HIDAUDDDriverDescriptors_AUD_INTERFACE + 1
00421         },
00422         /* Input terminal descriptor */
00423         {
00424             sizeof(AUDInputTerminalDescriptor),
00425             AUDGenericDescriptor_INTERFACE,
00426             AUDGenericDescriptor_INPUTTERMINAL,
00427             AUDDFunction_INPUTTERMINAL,
00428             AUDInputTerminalDescriptor_USBSTREAMING,
00429             AUDDFunction_OUTPUTTERMINAL,
00430             AUDDevice_NUMCHANNELS, /* L,R */
00431             AUDInputTerminalDescriptor_LEFTFRONT
00432             | AUDInputTerminalDescriptor_RIGHTFRONT,
00433             0, /* No string descriptor for channels */
00434             0  /* No string descriptor for input terminal */
00435         },
00436         /* Output terminal descriptor */
00437         {
00438             sizeof(AUDOutputTerminalDescriptor),
00439             AUDGenericDescriptor_INTERFACE,
00440             AUDGenericDescriptor_OUTPUTTERMINAL,
00441             AUDDFunction_OUTPUTTERMINAL,
00442             AUDOutputTerminalDescriptor_SPEAKER,
00443             AUDDFunction_INPUTTERMINAL,
00444             AUDDFunction_FEATUREUNIT,
00445             0 /* No string descriptor */
00446         },
00447         /* Feature unit descriptor */
00448         {
00449             {
00450                 sizeof(AUDFeatureUnitDescriptor3),
00451                 AUDGenericDescriptor_INTERFACE,
00452                 AUDGenericDescriptor_FEATUREUNIT,
00453                 AUDDFunction_FEATUREUNIT,
00454                 AUDDFunction_INPUTTERMINAL,
00455                 1, /* 1 byte per channel for controls */
00456             },
00457             {
00458                 AUDFeatureUnitDescriptor_MUTE, /* Master channel controls */
00459                 0, /* Right channel controls */
00460                 0  /* Left channel controls */
00461             },
00462             0 /* No string descriptor */
00463         }
00464     },
00465     /* Audio streaming interface with 0 endpoints */
00466     {
00467         sizeof(USBInterfaceDescriptor),
00468         USBGenericDescriptor_INTERFACE,
00469         HIDAUDDDriverDescriptors_AUD_INTERFACE + 1,
00470         0, /* This is alternate setting #0 */
00471         0, /* This interface uses no endpoints */
00472         AUDStreamingInterfaceDescriptor_CLASS,
00473         AUDStreamingInterfaceDescriptor_SUBCLASS,
00474         AUDStreamingInterfaceDescriptor_PROTOCOL,
00475         0  /* No string descriptor */
00476     },
00477     /* Audio streaming interface with data endpoint */
00478     {
00479         sizeof(USBInterfaceDescriptor),
00480         USBGenericDescriptor_INTERFACE,
00481         HIDAUDDDriverDescriptors_AUD_INTERFACE + 1,
00482         1, /* This is alternate setting #1 */
00483         1, /* This interface uses 1 endpoint */
00484         AUDStreamingInterfaceDescriptor_CLASS,
00485         AUDStreamingInterfaceDescriptor_SUBCLASS,
00486         AUDStreamingInterfaceDescriptor_PROTOCOL,
00487         0  /* No string descriptor */
00488     },
00489     /* Audio streaming class-specific descriptor */
00490     {
00491         sizeof(AUDStreamingInterfaceDescriptor),
00492         AUDGenericDescriptor_INTERFACE,
00493         AUDStreamingInterfaceDescriptor_GENERAL,
00494         AUDDFunction_INPUTTERMINAL,
00495         0, /* No internal delay because of data path */
00496         AUDFormatTypeOneDescriptor_PCM
00497     },
00498     /* Format type I descriptor */
00499     {
00500         {
00501             sizeof(AUDFormatTypeOneDescriptor1),
00502             AUDGenericDescriptor_INTERFACE,
00503             AUDStreamingInterfaceDescriptor_FORMATTYPE,
00504             AUDFormatTypeOneDescriptor_FORMATTYPEONE,
00505             AUDDevice_NUMCHANNELS,
00506             AUDDevice_BYTESPERSAMPLE,
00507             AUDDevice_BYTESPERSAMPLE*8,
00508             1 /* One discrete frequency supported */
00509         },
00510         {
00511             AUDDevice_SAMPLERATE & 0xFF,
00512             (AUDDevice_SAMPLERATE >> 8) & 0xFF,
00513             (AUDDevice_SAMPLERATE >> 16) & 0xFF
00514         }
00515     },
00516     /* Audio streaming endpoint standard descriptor */
00517     {
00518         sizeof(AUDEndpointDescriptor),
00519         USBGenericDescriptor_ENDPOINT,
00520         USBEndpointDescriptor_ADDRESS(
00521             USBEndpointDescriptor_OUT, HIDAUDD_Descriptors_ISO_DATAOUT),
00522         USBEndpointDescriptor_ISOCHRONOUS,
00523         AUDDevice_BYTESPERFRAME,
00524         AUDDFunction_HS_INTERVAL, /* Polling interval = 1 ms */
00525         0, /* This is not a synchronization endpoint */
00526         0  /* No associated synchronization endpoint */
00527     },
00528     /* Audio streaming endpoint class-specific descriptor */
00529     {
00530         sizeof(AUDDataEndpointDescriptor),
00531         AUDGenericDescriptor_ENDPOINT,
00532         AUDDataEndpointDescriptor_SUBTYPE,
00533         0, /* No attributes */
00534         0, /* Endpoint is not synchronized */
00535         0  /* Endpoint is not synchronized */
00536     }
00537 };
00538 
00539 /** String descriptor with the supported languages. */
00540 const unsigned char languageIdDescriptor[] = {
00541 
00542     USBStringDescriptor_LENGTH(1),
00543     USBGenericDescriptor_STRING,
00544     USBStringDescriptor_ENGLISH_US
00545 };
00546 
00547 /** Manufacturer name. */
00548 const unsigned char manufacturerDescriptor[] = {
00549 
00550     USBStringDescriptor_LENGTH(5),
00551     USBGenericDescriptor_STRING,
00552     USBStringDescriptor_UNICODE('A'),
00553     USBStringDescriptor_UNICODE('t'),
00554     USBStringDescriptor_UNICODE('m'),
00555     USBStringDescriptor_UNICODE('e'),
00556     USBStringDescriptor_UNICODE('l')
00557 };
00558 
00559 /** Product name. */
00560 const unsigned char productDescriptor[] = {
00561 
00562     USBStringDescriptor_LENGTH(14),
00563     USBGenericDescriptor_STRING,
00564     USBStringDescriptor_UNICODE('K'),
00565     USBStringDescriptor_UNICODE('e'),
00566     USBStringDescriptor_UNICODE('y'),
00567     USBStringDescriptor_UNICODE('p'),
00568     USBStringDescriptor_UNICODE('a'),
00569     USBStringDescriptor_UNICODE('d'),
00570     USBStringDescriptor_UNICODE('&'),
00571     USBStringDescriptor_UNICODE('s'),
00572     USBStringDescriptor_UNICODE('p'),
00573     USBStringDescriptor_UNICODE('e'),
00574     USBStringDescriptor_UNICODE('a'),
00575     USBStringDescriptor_UNICODE('k'),
00576     USBStringDescriptor_UNICODE('e'),
00577     USBStringDescriptor_UNICODE('r')
00578 };
00579 
00580 /** Product serial number. */
00581 const unsigned char serialNumberDescriptor[] = {
00582 
00583     USBStringDescriptor_LENGTH(4),
00584     USBGenericDescriptor_STRING,
00585     USBStringDescriptor_UNICODE('0'),
00586     USBStringDescriptor_UNICODE('1'),
00587     USBStringDescriptor_UNICODE('2'),
00588     USBStringDescriptor_UNICODE('3')
00589 };
00590 
00591 /** Array of pointers to the four string descriptors. */
00592 const unsigned char *stringDescriptors[] = {
00593 
00594     languageIdDescriptor,
00595     manufacturerDescriptor,
00596     productDescriptor,
00597     serialNumberDescriptor,
00598 };
00599 
00600 /*----------------------------------------------------------------------------
00601  *         Exported functions
00602  *----------------------------------------------------------------------------*/
00603 
00604 /** List of descriptors required by an USB audio speaker device driver. */
00605 const USBDDriverDescriptors hidauddDriverDescriptors = {
00606 
00607     &deviceDescriptor,
00608     (const USBConfigurationDescriptor *) &fsConfigurationDescriptors,
00609     &qualifierDescriptor,
00610     0,
00611     0,
00612     (const USBConfigurationDescriptor *) &hsConfigurationDescriptors,
00613     &qualifierDescriptor,
00614     0,
00615     stringDescriptors, 4 /* Number of string descriptors */
00616 };
00617 
00618 /**@}*/
00619 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines