usbdscr_config.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:5k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /*
  10.  *  ======== usbdscr_config.c ========
  11.  *  This file defines example USB configuration descriptors used
  12.  *    by test applications requiring an USB IN and USB OUT BULK
  13.  *     transfer type endpoints.
  14.  */
  15.  
  16. #include <std.h>
  17. #include <csl.h>
  18. #include <csl_usb.h>
  19. #include <c5509_usb.h>       /* iom usb driver interface */
  20. #define MAXPKTLEN 64  /* max USB transfer length in bytes */
  21. extern C5509_USB_DeviceConfig myDeviceConfig;  /* device configuration */
  22. /*
  23.  *  USB endpoint descriptors
  24.  *  The following are endpoint descriptors for USB interface 0 alternate set 0.
  25.  */
  26. static C5509_USB_EndptDesc endPtDesc[] =
  27. {
  28.     /*
  29.      *  bulk endpoint descriptor - endpt2 OUT 
  30.      */
  31.     {
  32.         0x0000,    
  33.         (C5509_USB_DESCRIPTOR_ENDPT<<8) | 7,    /* bLength, bDescriptorType */
  34.         0x0202,    /* bEndpointAddress = 2 OUT, bmAttributes = bulk */
  35.         MAXPKTLEN, /* wMaxPacketSize = 64 bytes */
  36.         0x00,      /* bInterval */
  37.     },
  38.     /*
  39.      *  bulk endpoint descriptor - endpt2 IN 
  40.      */
  41.     {
  42.         0x0000,    
  43.         (C5509_USB_DESCRIPTOR_ENDPT<<8) | 7,   /* bLength, bDescriptorType */
  44.         0x0282,    /* bEndpointAddress = 2 IN , bmAttributes */
  45.         MAXPKTLEN, /* wMaxPacketSize */
  46.         0x00       /* bInterval */
  47.     }
  48. };
  49. /*
  50.  * Determine number of IOM channels needed for this configuration.
  51.  */
  52. #define NUMCHANS (sizeof(endPtDesc) / sizeof(C5509_USB_EndptDesc)) 
  53. /*
  54.  *  USB endpoint link list used to describe the configuration to the PC Host.
  55.  */
  56. static USB_DataStruct endptDescLink[NUMCHANS] = {    
  57.     {
  58.         7, (Uint16 *)&endPtDesc[0], &endptDescLink[1]
  59.     },
  60.     {
  61.         7, (Uint16 *)&endPtDesc[1], NULL
  62.     }
  63. };
  64. /* 
  65.  *  IOM channel object array. 
  66.  */
  67. static C5509_USB_ChanObj chans[NUMCHANS]; 
  68. /*
  69.  *  USB driver endpoint configuration array.
  70.  *  Used to initialize the mini-driver and underlying USB CSL.
  71.  *  Note: Endpoint number, transfer size and type need to match the
  72.  *   above endpoint descriptors. 
  73.  */
  74. static C5509_USB_EpConfig endptsConfig[NUMCHANS] = {
  75.     /* 
  76.      * EP #2 OUT, BULK transfer type, max transfer size, OR'd event mask=EOT 
  77.      */
  78.     {
  79.         &chans[0], USB_OUT_EP2, USB_BULK, MAXPKTLEN, USB_EVENT_EOT
  80.     },
  81.     /* 
  82.      * EP #2 IN, BULK transfer type, max transfer size, OR'd event mask=EOT
  83.      */
  84.     {
  85.         &chans[1], USB_IN_EP2, USB_BULK, MAXPKTLEN, USB_EVENT_EOT
  86.     }
  87. };
  88. /*
  89.  *  Configuration descriptor. Used by host to determine the configuration.
  90.  */
  91. static Uint16 configurationDescriptor[] = {
  92.     0x0000,    /* field for xfer_byte_cnt - used by the data */
  93.                /* transfer API, not an integral part of descriptor */
  94.     (C5509_USB_DESCRIPTOR_CONFIG<<8) | 9,    /* bLength, bDescriptorType */
  95.     (18 + (NUMCHANS * 7)),      /* wTotalLength = 9 + 9 + 7 * NUMCHANS */
  96.     0x0101,    /* bNumInterfaces = 1, bConfigurationValue = 1 */
  97.     0xC003,    /* iConfiguration, bmAttributes = bus/self pwr, no rwu */
  98.     0          /* bMaxPower = none */
  99. };
  100. /*
  101.  *  Interface Descriptor
  102.  */
  103. static Uint16 usbIfc0Alt0Descriptor[] =  {  /* interface 0 alt_set = 0 */
  104.     0x0000,    /* field for xfer_byte_cnt - used by the data */
  105.                /* transfer API, not an integral part of descriptor */
  106.     (C5509_USB_DESCRIPTOR_INTRFC << 8) | 9,    /* bLength, bDescriptorType */
  107.     0x0000,    /* bInterfaceNumber, bAlternateSetting */
  108.     (0x00 << 8) | NUMCHANS,    /* bNumEndpoints , bInterfaceClass */
  109.     0x0000,    /* bInterfaceSubClass, bInterfaceProtocol */
  110.     0x04       /* iInterface = index in string descriptor */
  111. };
  112. /*
  113.  * Ifc 0, Alt 0 endpoint link list
  114.  */
  115. static USB_DataStruct usbIfc0Alt0DescLink[] = {     /* Interface Descriptor */
  116.     9,
  117.     (Uint16 *)&usbIfc0Alt0Descriptor[0],  
  118.     &endptDescLink[0]
  119. };
  120. /*
  121.  * USB configuration and interface(s) link list.
  122.  */
  123. static USB_DataStruct configDescLink[] = {     
  124.     9,
  125.     (Uint16 *)&configurationDescriptor[0],   
  126.     &usbIfc0Alt0DescLink[0]
  127. };
  128. /*
  129.  *  USB interface config used by iom driver's devParams.
  130.  */
  131. C5509_USB_IfcConfig myIfcConfig = {
  132.     NUMCHANS,              /* total number of configured endpoints */
  133.     &configDescLink[0],  /* USB config and interface descriptor list */
  134.     &endptsConfig[0]     /* endpoint configuration array */
  135. };