SAMV71 Xplained Ultra Software Package 1.5

USBDDriverDescriptors.c

Go to the documentation of this file.
00001 /* ---------------------------------------------------------------------------- */
00002 /*                  Atmel Microcontroller Software Support                      */
00003 /*                       SAM Software Package License                           */
00004 /* ---------------------------------------------------------------------------- */
00005 /* Copyright (c) 2015, Atmel Corporation                                        */
00006 /*                                                                              */
00007 /* All rights reserved.                                                         */
00008 /*                                                                              */
00009 /* Redistribution and use in source and binary forms, with or without           */
00010 /* modification, are permitted provided that the following condition is met:    */
00011 /*                                                                              */
00012 /* - Redistributions of source code must retain the above copyright notice,     */
00013 /* this list of conditions and the disclaimer below.                            */
00014 /*                                                                              */
00015 /* Atmel's name may not be used to endorse or promote products derived from     */
00016 /* this software without specific prior written permission.                     */
00017 /*                                                                              */
00018 /* DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR   */
00019 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
00020 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE   */
00021 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,      */
00022 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
00023 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,  */
00024 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    */
00025 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING         */
00026 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
00027 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */
00028 /* ---------------------------------------------------------------------------- */
00029 
00030 
00031 /**\file
00032     Title: HIDDKeyboardDriverDescriptors
00033 
00034     About: Purpose
00035         Declaration of the descriptors used by the HID device keyboard driver.
00036 */
00037 
00038 /** \addtogroup usbd_hid_key
00039  *@{
00040  */
00041 
00042 /*------------------------------------------------------------------------------
00043  *         Headers
00044  *----------------------------------------------------------------------------*/
00045 
00046 #include <USBD_Config.h>
00047 
00048 #include <USBDescriptors.h>
00049 #include <VIDEODescriptors.h>
00050 #include <USBDDriver.h>
00051 
00052 /* ------------------- USB Video ----------------------- */
00053 /** USB Device descriptor. */
00054 
00055 const USBDeviceDescriptor usbDeviceDescriptor = {
00056     sizeof(USBDeviceDescriptor),
00057     USBGenericDescriptor_DEVICE,
00058     USBDeviceDescriptor_USB2_00,
00059     VIDDeviceDescriptor_CLASS,
00060     VIDDeviceDescriptor_SUBCLASS,
00061     VIDDeviceDescriptor_PROTOCOL,
00062     CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
00063     USBD_VID_ATMEL, // Atmel vendor ID
00064     USBD_PID_UVC, // Product ID
00065     USBD_RELEASE_0_01, // Product release 0.01
00066     0, // No manufacturer string descriptor
00067     0, // No product string descriptor
00068     0, // No serial number string descriptor
00069     1 // One possible configuration
00070 };
00071 
00072 /** Device qualifier descriptor (to pass USB test). */
00073 
00074 static const USBDeviceQualifierDescriptor qualifierDescriptor = {
00075 
00076     sizeof(USBDeviceQualifierDescriptor),
00077     USBGenericDescriptor_DEVICEQUALIFIER,
00078     USBDeviceDescriptor_USB2_00,
00079     VIDDeviceDescriptor_CLASS,
00080     VIDDeviceDescriptor_SUBCLASS,
00081     VIDDeviceDescriptor_PROTOCOL,
00082     CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
00083     1, // Device has one possible configuration.
00084     0x00
00085 };
00086 
00087 /**  Configuration descriptors. */
00088 
00089 const struct UsbVideoCamConfigurationDescriptors configurationDescriptorsFS = {
00090     /* Configuration descriptor */
00091     {
00092         sizeof(USBConfigurationDescriptor),
00093         USBGenericDescriptor_CONFIGURATION,
00094         sizeof(struct UsbVideoCamConfigurationDescriptors),
00095         2, /* 2 interface in this configuration */
00096         1, /* This is configuration #1 */
00097         0, /* No string descriptor for this configuration */
00098         BOARD_USB_BMATTRIBUTES,
00099         USBConfigurationDescriptor_POWER(100)
00100     },
00101     /* IAD */
00102     {
00103         sizeof(USBInterfaceAssociationDescriptor),
00104         USBGenericDescriptor_INTERFACEASSOCIATION,
00105         VIDCAMD_ControlInterfaceNum, /* Start interface is #0 */
00106         2, /* 2 interface is associated */
00107         VIDIADDescriptor_CLASS,
00108         VIDIADDescriptor_SUBCLASS,
00109         VIDIADDescriptor_PROTOCOL,
00110         0
00111     },
00112     /* VC Interface descriptor */
00113     {
00114         sizeof(USBInterfaceDescriptor),
00115         USBGenericDescriptor_INTERFACE,
00116         VIDCAMD_ControlInterfaceNum, /* This is interface #0 */
00117         0, /* This is setting #0 for interface */
00118         0,
00119         VIDControlInterfaceDescriptor_CLASS,    /* CC_VIDEO */
00120         VIDControlInterfaceDescriptor_SUBCLASS, /* SC_VIDEOCONTROL */
00121         VIDControlInterfaceDescriptor_PROTOCOL, /* PC_PROTOCOL_UNDEFINED */
00122         0, /* No string descriptor */
00123     },
00124     /* VC Class defined descriptors */
00125     {
00126         /* VC Header */
00127         {
00128             sizeof(UsbVideoControlInterfaceHeader1),
00129             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00130             VIDGenericDescriptor_HEADER,    /* VC_HEADER */
00131             VIDHeaderDescriptor_VID1_00,
00132             sizeof(UsbVideoControlInterfaceDescriptor),
00133             BOARD_MCK,
00134             1, /* 1 VideoStreaming interface */
00135             VIDCAMD_StreamInterfaceNum, /* VideoStreaming interface 1: interface #1 */
00136         },
00137         /* VC Camera Terminal */
00138         {
00139             sizeof(USBVideoCameraTerminalDescriptor),
00140             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00141             VIDGenericDescriptor_INPUTTERMINAL, /* VC_INPUT_TERMINAL */
00142             1, /* Terminal ID: #1 */
00143             VIDInputTerminalDescriptor_CAMERA, /* ITT_CAMERA */
00144             0, /* Assoc: None */
00145             0, /* No string */
00146             0, /* Optical Zoom not supported */
00147             0, /* Optical Zoom not supported */
00148             0, /* Optical Zoom not supported */
00149             3, /* 3 bytes for bmControls */
00150             {0, 0, 0}
00151         },
00152         /* VC Output Terminal */
00153         {
00154             sizeof(USBVideoOutputTerminalDescriptor),
00155             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00156             VIDGenericDescriptor_OUTPUTTERMINAL, /* VC_OUTPUT_TERMINAL */
00157             2, /* Terminal ID: #2 */
00158             VIDTerminalDescriptor_STREAMING, /* Streaming terminal */
00159             0, /* Assoc: None */
00160             1, /* Source: Terminal is connected to #1 */
00161             0  /* No string */
00162         }
00163 
00164     },
00165     /* VS Interface descriptor */
00166     {
00167         sizeof(USBInterfaceDescriptor),
00168         USBGenericDescriptor_INTERFACE,
00169         VIDCAMD_StreamInterfaceNum, /* interface #1 */
00170         0, /* alternate 0 */
00171         0, /* no endpoint */
00172         VIDStreamingInterfaceDescriptor_CLASS,
00173         VIDStreamingInterfaceDescriptor_SUBCLASS,
00174         VIDStreamingInterfaceDescriptor_PROTOCOL,
00175         0  /* No string */
00176     },
00177     /* VS Class defined descriptors */
00178     {
00179         /* VS Input Header */
00180         {
00181             sizeof(UsbVideoInputHeaderDescriptor1),
00182             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00183             VIDStreamingInterfaceDescriptor_INPUTHEADER, /* VS_INPUT_HEADER */
00184             1, /* Only 1 payload format */
00185             sizeof(UsbVideoStreamingInterfaceDescriptor),
00186             0x80 | VIDCAMD_IsoInEndpointNum, /* Endpoint address is 0x82 */
00187             0x00, /* Dynamic Format Change not supported */
00188             2, /* Terminal Link to #2 */
00189             0, /* Still Capture not supported */
00190             0, /* Trigger not supported */
00191             0, /* No trigger usage */
00192             1, /* 1 bmaControls */
00193             0  /* No bmaControls */
00194         },
00195         /* VS Format Uncompressed */
00196         {
00197             /* Payload uncompressed format */
00198             {
00199                 sizeof(USBVideoUncompressedFormatDescriptor),
00200                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00201                 VIDStreamingInterfaceDescriptor_FMT_UNCOMPRESSED,
00202                 /* VS_FORMAT_UNCOMPRESSED */
00203                 1, /* Format index #1 */
00204                 VIDCAMD_NumFrameTypes, /* 3 frame types */
00205                 guidYUY2, /* guid YUY2 32595559-0000-0010-8000-00AA00389B71 */
00206                 FRAME_BPP, /* 16 bits per pixel */
00207                 1, /* Default frame index: #1 */
00208                 0, /* bAspectRatioX */
00209                 0, /* bAspectRatioY */
00210                 0, /* No interlace */
00211                 0  /* No copy protect restrictions */
00212             },
00213             /* Frame format 320x240 */
00214             {
00215                 sizeof(USBVideoUncompressedFrameDescriptor1),
00216                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00217                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED,
00218                 /* VS_FRAME_UNCOMPRESSED */
00219                 1, /* Frame index #1 */
00220                 0, /* Still image not supported */
00221                 VIDCAMD_FW_1, /* wWidth */
00222                 VIDCAMD_FH_1, /* wHeight */
00223                 FRAME_BITRATEC(VIDCAMD_FW_1, VIDCAMD_FH_1, 4), /* Min bitrate */
00224                 FRAME_BITRATEC(VIDCAMD_FW_1, VIDCAMD_FH_1, 4), /* Max bitrate */
00225                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_1, VIDCAMD_FH_1),
00226                 /* maxFrameBufferSize: 320*240*2 */
00227                 FRAME_INTERVALC(4), /* Default interval: 4F/s */
00228                 1, /* 1 Interval setting */
00229                 {FRAME_INTERVALC(4)}, /* 4F/s, 614.4KB/s */
00230             },
00231             /* Frame format 640x480 */
00232             {
00233                 sizeof(USBVideoUncompressedFrameDescriptor1),
00234                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00235                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED, /* VS_FRAME_UNCOMPRESSED */
00236                 2, /* Frame index #4 */
00237                 0, /* Still image not supported */
00238                 VIDCAMD_FW_2, /* wWidth */
00239                 VIDCAMD_FH_2, /* wHeight */
00240                 FRAME_BITRATEC(VIDCAMD_FW_2, VIDCAMD_FH_2, 1), /* Min bitrate */
00241                 FRAME_BITRATEC(VIDCAMD_FW_2, VIDCAMD_FH_2, 1), /* Max bitrate */
00242                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_2, VIDCAMD_FH_2),
00243                 /* maxFrameBufferSize: 640*480*2 */
00244                 FRAME_INTERVALC(1), /* Default interval: 1F/s */
00245                 1, /* 1 Interval setting */
00246                 {FRAME_INTERVALC(1)}, /* 1F/s, 614.4KB/s */
00247             },
00248             /* Frame format 176x144 */
00249             {
00250                 sizeof(USBVideoUncompressedFrameDescriptor1),
00251                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00252                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED,
00253                 /* VS_FRAME_UNCOMPRESSED */
00254                 3, /* Frame index #1 */
00255                 0, /* Still image not supported */
00256                 VIDCAMD_FW_3, /* wWidth */
00257                 VIDCAMD_FH_3, /* wHeight */
00258                 FRAME_BITRATEC(VIDCAMD_FW_3, VIDCAMD_FH_3, 4), /* Min bitrate */
00259                 FRAME_BITRATEC(VIDCAMD_FW_3, VIDCAMD_FH_3, 4), /* Max bitrate */
00260                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_3, VIDCAMD_FH_3),
00261                 /* maxFrameBufferSize: 176*144*2 = 50688 */
00262                 FRAME_INTERVALC(12), /* Default interval: 12F/s */
00263                 1, /* 1 Interval setting */
00264                 {FRAME_INTERVALC(12)}, /* 12F/s, 608.256KB/s */
00265             },
00266             /* Color format Uncompressed */
00267             {
00268                 sizeof(USBVideoColorMatchingDescriptor),
00269                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00270                 VIDStreamingInterfaceDescriptor_COLORFORMAT, /* VS_COLORFORMAT */
00271                 1, /* BT.709, sRGB */
00272                 1, /* BT.709 */
00273                 4, /* BT.601 */
00274             }
00275         }
00276     },
00277     /* VS Interface Descriptor: 400K */
00278     {
00279         sizeof(USBInterfaceDescriptor),
00280         USBGenericDescriptor_INTERFACE,
00281         VIDCAMD_StreamInterfaceNum, /* interface #1 */
00282         1, /* alternate 1 */
00283         1, /* 1 endpoint */
00284         VIDStreamingInterfaceDescriptor_CLASS,
00285         VIDStreamingInterfaceDescriptor_SUBCLASS,
00286         VIDStreamingInterfaceDescriptor_PROTOCOL,
00287         0  /* No string */
00288     },
00289     /* ISO IN EP 6 Descriptor */
00290     {
00291         sizeof(USBEndpointDescriptor),
00292         USBGenericDescriptor_ENDPOINT,
00293         0x80 | VIDCAMD_IsoInEndpointNum, /* EP2, IN */
00294         (USBEndpointDescriptor_ISOCHRONOUS),
00295         //|USBEndpointDescriptor_Asynchronous_ISOCHRONOUS),
00296         FRAME_PACKET_SIZE_FS,
00297         1
00298     }
00299 };
00300 
00301 /**  Configuration descriptors. */
00302 const struct UsbVideoCamConfigurationDescriptors configurationDescriptorsHS = {
00303     /* Configuration descriptor */
00304     {
00305         sizeof(USBConfigurationDescriptor),
00306         USBGenericDescriptor_CONFIGURATION,
00307         sizeof(struct UsbVideoCamConfigurationDescriptors),
00308         2, /* 2 interface in this configuration */
00309         1, /* This is configuration #1 */
00310         0, /* No string descriptor for this configuration */
00311         BOARD_USB_BMATTRIBUTES,
00312         USBConfigurationDescriptor_POWER(100)
00313     },
00314     /* IAD */
00315     {
00316         sizeof(USBInterfaceAssociationDescriptor),
00317         USBGenericDescriptor_INTERFACEASSOCIATION,
00318         VIDCAMD_ControlInterfaceNum, /* Start interface is #0 */
00319         2, /* 2 interface is associated */
00320         VIDIADDescriptor_CLASS,
00321         VIDIADDescriptor_SUBCLASS,
00322         VIDIADDescriptor_PROTOCOL,
00323         0
00324     },
00325     /* VC Interface descriptor */
00326     {
00327         sizeof(USBInterfaceDescriptor),
00328         USBGenericDescriptor_INTERFACE,
00329         VIDCAMD_ControlInterfaceNum, /* This is interface #0 */
00330         0, /* This is setting #0 for interface */
00331         0,
00332         VIDControlInterfaceDescriptor_CLASS,    /* CC_VIDEO */
00333         VIDControlInterfaceDescriptor_SUBCLASS, /* SC_VIDEOCONTROL */
00334         VIDControlInterfaceDescriptor_PROTOCOL, /* PC_PROTOCOL_UNDEFINED */
00335         0, /* No string descriptor */
00336     },
00337     /* VC Class defined descriptors */
00338     {
00339         /* VC Header */
00340         {
00341             sizeof(UsbVideoControlInterfaceHeader1),
00342             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00343             VIDGenericDescriptor_HEADER,    /* VC_HEADER */
00344             VIDHeaderDescriptor_VID1_00,
00345             sizeof(UsbVideoControlInterfaceDescriptor),
00346             BOARD_MCK,
00347             1, /* 1 VideoStreaming interface */
00348             VIDCAMD_StreamInterfaceNum, /* VideoStreaming interface 1: interface #1 */
00349         },
00350         /* VC Camera Terminal */
00351         {
00352             sizeof(USBVideoCameraTerminalDescriptor),
00353             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00354             VIDGenericDescriptor_INPUTTERMINAL, /* VC_INPUT_TERMINAL */
00355             1, /* Terminal ID: #1 */
00356             VIDInputTerminalDescriptor_CAMERA, /* ITT_CAMERA */
00357             0, /* Assoc: None */
00358             0, /* No string */
00359             0, /* Optical Zoom not supported */
00360             0, /* Optical Zoom not supported */
00361             0, /* Optical Zoom not supported */
00362             3, /* 3 bytes for bmControls */
00363             {0, 0, 0}
00364         },
00365         /* VC Output Terminal */
00366         {
00367             sizeof(USBVideoOutputTerminalDescriptor),
00368             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00369             VIDGenericDescriptor_OUTPUTTERMINAL, /* VC_OUTPUT_TERMINAL */
00370             2, /* Terminal ID: #2 */
00371             VIDTerminalDescriptor_STREAMING, /* Streaming terminal */
00372             0, /* Assoc: None */
00373             1, /* Source: Terminal is connected to #1 */
00374             0  /* No string */
00375         }
00376 
00377     },
00378     /* VS Interface descriptor */
00379     {
00380         sizeof(USBInterfaceDescriptor),
00381         USBGenericDescriptor_INTERFACE,
00382         VIDCAMD_StreamInterfaceNum, /* interface #1 */
00383         0, /* alternate 0 */
00384         0, /* no endpoint */
00385         VIDStreamingInterfaceDescriptor_CLASS,
00386         VIDStreamingInterfaceDescriptor_SUBCLASS,
00387         VIDStreamingInterfaceDescriptor_PROTOCOL,
00388         0  /* No string */
00389     },
00390     /* VS Class defined descriptors */
00391     {
00392         /* VS Input Header */
00393         {
00394             sizeof(UsbVideoInputHeaderDescriptor1),
00395             VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00396             VIDStreamingInterfaceDescriptor_INPUTHEADER, /* VS_INPUT_HEADER */
00397             1, /* Only 1 payload format */
00398             sizeof(UsbVideoStreamingInterfaceDescriptor),
00399             0x80 | VIDCAMD_IsoInEndpointNum, /* Endpoint address is 0x82 */
00400             0x00, /* Dynamic Format Change not supported */
00401             2, /* Terminal Link to #2 */
00402             0, /* Still Capture not supported */
00403             0, /* Trigger not supported */
00404             0, /* No trigger usage */
00405             1, /* 1 bmaControls */
00406             0  /* No bmaControls */
00407         },
00408         /* VS Format Uncompressed */
00409         {
00410             /* Payload uncompressed format */
00411             {
00412                 sizeof(USBVideoUncompressedFormatDescriptor),
00413                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00414                 VIDStreamingInterfaceDescriptor_FMT_UNCOMPRESSED,
00415                 /* VS_FORMAT_UNCOMPRESSED */
00416                 1, /* Format index #1 */
00417                 VIDCAMD_NumFrameTypes, /* 3 frame types */
00418                 guidYUY2, /* guid YUY2 32595559-0000-0010-8000-00AA00389B71 */
00419                 FRAME_BPP, /* 16 bits per pixel */
00420                 1, /* Default frame index: #1 */
00421                 0, /* bAspectRatioX */
00422                 0, /* bAspectRatioY */
00423                 0, /* No interlace */
00424                 0  /* No copy protect restrictions */
00425             },
00426             /* Frame format 320x240 */
00427             {
00428                 sizeof(USBVideoUncompressedFrameDescriptor1),
00429                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00430                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED,
00431                 /* VS_FRAME_UNCOMPRESSED */
00432                 1, /* Frame index #1 */
00433                 0, /* Still image not supported */
00434                 VIDCAMD_FW_1, /* wWidth */
00435                 VIDCAMD_FH_1, /* wHeight */
00436                 FRAME_BITRATEC(VIDCAMD_FW_1, VIDCAMD_FH_1, 15), /* Min bitrate */
00437                 FRAME_BITRATEC(VIDCAMD_FW_1, VIDCAMD_FH_1, 15), /* Max bitrate */
00438                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_1, VIDCAMD_FH_1),
00439                 /* maxFrameBufferSize: 320*240*2 */
00440                 FRAME_INTERVALC(15), /* Default interval: 15F/s */
00441                 1, /* 1 Interval setting */
00442                 {FRAME_INTERVALC(15)}, /* 15F/s, 2304KB/s */
00443             },
00444             /* Frame format 640x480 */
00445             {
00446                 sizeof(USBVideoUncompressedFrameDescriptor1),
00447                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00448                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED,
00449                 /* VS_FRAME_UNCOMPRESSED */
00450                 2, /* Frame index #4 */
00451                 0, /* Still image not supported */
00452                 VIDCAMD_FW_2, /* wWidth */
00453                 VIDCAMD_FH_2, /* wHeight */
00454                 FRAME_BITRATEC(VIDCAMD_FW_2, VIDCAMD_FH_2, 26), /* Min bitrate */
00455                 FRAME_BITRATEC(VIDCAMD_FW_2, VIDCAMD_FH_2, 26), /* Max bitrate */
00456                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_2, VIDCAMD_FH_2),
00457                 /* maxFrameBufferSize: 640*480*2 */
00458                 FRAME_INTERVALC(26), /* Default interval: 12F/s */
00459                 1, /* 1 Interval setting */
00460                 {FRAME_INTERVALC(26)}, /* 12F/s, 7372.8KB/s */
00461             },
00462             /* Frame format 176x144 */
00463             {
00464                 sizeof(USBVideoUncompressedFrameDescriptor1),
00465                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00466                 VIDStreamingInterfaceDescriptor_FRM_UNCOMPRESSED,
00467                 /* VS_FRAME_UNCOMPRESSED */
00468                 3, /* Frame index #1 */
00469                 0, /* Still image not supported */
00470                 VIDCAMD_FW_3, /* wWidth */
00471                 VIDCAMD_FH_3, /* wHeight */
00472                 FRAME_BITRATEC(VIDCAMD_FW_3, VIDCAMD_FH_3, 30), /* Min bitrate */
00473                 FRAME_BITRATEC(VIDCAMD_FW_3, VIDCAMD_FH_3, 30), /* Max bitrate */
00474                 FRAME_BUFFER_SIZEC(VIDCAMD_FW_3, VIDCAMD_FH_3),
00475                 /* maxFrameBufferSize: 176*144*2 = 50680 */
00476                 FRAME_INTERVALC(30), /* Default interval: 30F/s */
00477                 1, /* 1 Interval setting */
00478                 {FRAME_INTERVALC(30)}, /* 30F/s, 1520.4KB/s */
00479             },
00480             /* Color format Uncompressed */
00481             {
00482                 sizeof(USBVideoColorMatchingDescriptor),
00483                 VIDGenericDescriptor_INTERFACE, /* CS_INTERFACE */
00484                 VIDStreamingInterfaceDescriptor_COLORFORMAT, /* VS_COLORFORMAT */
00485                 1, /* BT.709, sRGB */
00486                 1, /* BT.709 */
00487                 4, /* BT.601 */
00488             }
00489         }
00490     },
00491     /* VS Interface Descriptor: 400K */
00492     {
00493         sizeof(USBInterfaceDescriptor),
00494         USBGenericDescriptor_INTERFACE,
00495         VIDCAMD_StreamInterfaceNum, /* interface #1 */
00496         1, /* alternate 1 */
00497         1, /* 1 endpoint */
00498         VIDStreamingInterfaceDescriptor_CLASS,
00499         VIDStreamingInterfaceDescriptor_SUBCLASS,
00500         VIDStreamingInterfaceDescriptor_PROTOCOL,
00501         0  /* No string */
00502     },
00503     /* ISO IN EP 6 Descriptor */
00504     {
00505         sizeof(USBEndpointDescriptor),
00506         USBGenericDescriptor_ENDPOINT,
00507         0x80 | VIDCAMD_IsoInEndpointNum, /* EP2, IN */
00508         (USBEndpointDescriptor_ISOCHRONOUS),
00509         //|USBEndpointDescriptor_Asynchronous_ISOCHRONOUS),
00510         VIDCAMD_EpDesc_MaxPacketSize,
00511         2
00512     }
00513 };
00514 
00515 /**  List of descriptors used by the device. */
00516 
00517 const USBDDriverDescriptors usbdDriverDescriptors = {
00518     &usbDeviceDescriptor,
00519     (const USBConfigurationDescriptor *) &configurationDescriptorsFS,
00520     &qualifierDescriptor,
00521     0, // No full-speed other speed configuration descriptor
00522     0, // No high-speed device descriptor (Uses FS one)
00523     (const USBConfigurationDescriptor *) &configurationDescriptorsHS,
00524     &qualifierDescriptor,
00525     0, // No high-speed other speed configuration descriptor
00526     0, // No string descriptor
00527     0  // No string descriptor
00528 };
00529 
00530 /**@}*/
00531 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines