⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 descriptors.h

📁 基于ADSP-BF535 USB驱动应用程序
💻 H
字号:
/*----------------------------------------------------------------------------------
*
* COPYRIGHT (c) 2001 by Singing Electrons, Inc. All rights reserved.
*
* This document contains confidential proprietary trade secrets of Singing Electrons, Inc.  
* No distribution of the contents of this file is allowed except by written permission by an officer 
* of Singing Electrons, Inc.
*
* Module Name			: C:\se\adi\audioclass\vdsp\descriptors.h
*
* Description			: Contains descriptors for use with the USB device.
*
*
* Revision History	: At bottom of the file.
*
*---------------------------------------------------------------------------------*/

//
// String Descriptors		
//
enum {
	STRING_DEVICE = 1,
	STRING_PRODUCT,
	TOTAL_STRING_DESCRIPTORS
};

UCHAR gTheLangIDArray[] =
	{
		0x04,//bLength
		USB_STRING_DESCRIPTOR, //bDescriptorType
		0x09, 0x04 // 0x409 - English!
	};

UCHAR *gTheStringDescriptors[] =
	{
		"Analog Devices",
		"BlackFin Audio Class Reference Implementation",
	};


#define OFFSET_VENDOR_ID 0x08
#define OFFSET_PRODUCT_ID 0x0A
#define OFFSET_RELEASE 0x0C
#define OFFSET_REPORT_DESCRIPTOR_LENGTH 25


//
// The Device Descriptor
//
UCHAR gTheDeviceDescriptor[] =
{
	0x12, //Length
	USB_DEVICE_DESCRIPTOR, //bDescriptorType
	0x00, 0x01, //bcdUSB - USB Spec 1.0
	0x00, //bDevice Class
	0x00, //bDeviceSubClass
	0x00, //bDeviceProtocol
	CONTROL_PIPE_PACKET_SIZE, //bMaxPacketSize0
	0x00, 0x00, //LOBYTE(VENDOR_ID), HIBYTE(VENDOR_ID),//idvendor
	0x00, 0x00, //LOBYTE(PRODUCT_ID), HIBYTE(PRODUCT_ID),//idProduct
	0x00, 0x00, //LOBYTE(DEVICE_RELEASE), HIBYTE(DEVICE_RELEASE),//bcdDevice
	STRING_DEVICE,//iManufacturer
	STRING_PRODUCT,//iProduct
	0,//iSerialNumber
	1//bNumConfigurations
};

#define CONFIG_DESCRIPTOR_LEN 0x09
#define INTERFACE_DESCRIPTOR_LEN 0x09
#define AUDIO_CONTROL_INTERFACE_DESCRIPTOR_LEN 0x09 //This could increase...
#define AUDIO_CONTROL_OUT_INPUT_TERMINAL_DESCRIPTOR_LEN 12
#define AUDIO_CONTROL_FEATURE_UNIT_DESCRIPTOR_LEN 13
#define AUDIO_CONTROL_OUT_OUTPUT_TERMINAL_DESCRIPTOR_LEN 9

#define AUDIO_STREAMING_GENERAL_DESCRIPTOR_LEN 7
#define AUDIO_STREAMING_TYPE_I_FMT_DESCRIPTOR_LEN 11
#define AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN 9
#define AUDIO_STREAMING_ENDPOINT_GENERAL_DESCRIPTOR_LEN 7


#define TOTAL_AUDIO_CONTROL_DESCRIPTOR_LEN \
	(AUDIO_CONTROL_INTERFACE_DESCRIPTOR_LEN + AUDIO_CONTROL_OUT_INPUT_TERMINAL_DESCRIPTOR_LEN +\
	AUDIO_CONTROL_FEATURE_UNIT_DESCRIPTOR_LEN + AUDIO_CONTROL_OUT_OUTPUT_TERMINAL_DESCRIPTOR_LEN)

#if PROVIDE_FEEDBACK
#define TOTAL_CONFIG_DESCRIPTOR_LEN \
	(CONFIG_DESCRIPTOR_LEN + INTERFACE_DESCRIPTOR_LEN + TOTAL_AUDIO_CONTROL_DESCRIPTOR_LEN +\
	INTERFACE_DESCRIPTOR_LEN + INTERFACE_DESCRIPTOR_LEN + AUDIO_STREAMING_GENERAL_DESCRIPTOR_LEN +\
	AUDIO_STREAMING_TYPE_I_FMT_DESCRIPTOR_LEN + AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN +\
	AUDIO_STREAMING_ENDPOINT_GENERAL_DESCRIPTOR_LEN + AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN)
#else
#define TOTAL_CONFIG_DESCRIPTOR_LEN \
	(CONFIG_DESCRIPTOR_LEN + INTERFACE_DESCRIPTOR_LEN + TOTAL_AUDIO_CONTROL_DESCRIPTOR_LEN +\
	INTERFACE_DESCRIPTOR_LEN + INTERFACE_DESCRIPTOR_LEN + AUDIO_STREAMING_GENERAL_DESCRIPTOR_LEN +\
	AUDIO_STREAMING_TYPE_I_FMT_DESCRIPTOR_LEN + AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN +\
	AUDIO_STREAMING_ENDPOINT_GENERAL_DESCRIPTOR_LEN)
#endif

//
// The Configuration Descriptor
//
UCHAR gTheConfigDescriptor[] =
	{
	CONFIG_DESCRIPTOR_LEN,			// Configuration Descriptor Length
	CONFIG_DESCR,	// Descriptor Type
	LOBYTE(TOTAL_CONFIG_DESCRIPTOR_LEN),	// Everything!
	HIBYTE(TOTAL_CONFIG_DESCRIPTOR_LEN),	// Everything!
	0x02,			// # of interfaces
	0x01,			// configurationValue
	0x00,			// Configuration String
	0x40,			// Attributes: Self power and RWU
	0x00,     // max Power

    // Interface descriptor - AudioControl
    INTERFACE_DESCRIPTOR_LEN, // length
    USB_INTERFACE_DESCRIPTOR,	// descriptorType
    INTERFACE_FOR_AUDIOCONTROL,		        // interfaceNumber
    ALTSETTING_FOR_AUDIOCONTROL,		        // alternateSetting
    0,		        // numEndpoints
    USB_AUDIO_CLASS,		        // interfaceClass
    USB_AUDIO_SUBCLASS_AUDIOCONTROL,		        // interfaceSubClass
    USB_AUDIO_PROTOCOL_NONE,		        // interfaceProtocol
    0,		        // interface string index

			//Class specific AudioControl Interface Descriptor
			//usbAudioControlHeader 
      AUDIO_CONTROL_INTERFACE_DESCRIPTOR_LEN, /* bLength, in bytes */
      USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType */
      USB_AUDIO_DESCRIPTOR_SUBTYPE_HEADER,  /* bDescriptorSubtype */
      0x00, /* bcdADC (lo) */
      0x01, /* bcdADC (hi) = 1.0 */
      LOBYTE(TOTAL_AUDIO_CONTROL_DESCRIPTOR_LEN),/* Total size */
      HIBYTE(TOTAL_AUDIO_CONTROL_DESCRIPTOR_LEN),/* of AudioControl Desc.*/
      0x01, /* bInCollection = 2 audio streaming interfaces */
      0x01, /* baInterfaceNr(1) = 1 (Playback interface) */


    	/* USB OUT Input Terminal Descriptor */
      AUDIO_CONTROL_OUT_INPUT_TERMINAL_DESCRIPTOR_LEN, /* bLength, in bytes */
      USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType = CS_INTERFACE (from USBAD, Table A-4)*/
      USB_AUDIO_DESCRIPTOR_SUBTYPE_INPUT_TERMINAL,    /* bDescriptorSubtype = INPUT_TERMINAL */
      TERMID_USBOUT,    /* bTerminalID */
      LOBYTE(USB_AUDIO_TERMINALTYPE_USBSTREAMING), /* wTerminalType (lo) */
      HIBYTE(USB_AUDIO_TERMINALTYPE_USBSTREAMING), /* wTerminalType (hi) = USB Streaming */
      0,    /* bAssocTerminal = none */
      NUM_CHANNELS,    /* bNrChannels */
      LOBYTE(CHANNELCONFIG), /* wChannelConfig Bitmap (lo) */
      HIBYTE(CHANNELCONFIG), /* wChannelConfig (hi) */
      0,    /* iChannelNames = none */ 
      0,     /* iTerminal = none */

    	/* usbDacAttenuatorFUD DAC Attenuator Feature Unit Descriptor */
      AUDIO_CONTROL_FEATURE_UNIT_DESCRIPTOR_LEN,/* bLength, in bytes*/
      USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType = CS_INTERFACE (from USBAD, Table A-4)*/
      USB_AUDIO_DESCRIPTOR_SUBTYPE_FEATURE_UNIT, /* bDescriptorSubtype = FEATURE_UNIT (from USBAD, Table A-5)*/
      UNITID_OUTVOLUME, /* bUnitID */
      TERMID_USBOUT,    /* bSourceID */
      0x02, /* bControlSize = 1 byte per control */
      0x01, /* bmaControlMaster */
      0x00, /* bmaControlMaster */
      0x02, /* bmaControlLeft */
      0x00, /* bmaControlLeft */
      0x02, /* bmaControlRight */
      0x00, /* bmaControlRight */
      0x00, /* iFeature = none */

    	/* usbLineoutOutputTerminal Line-out Output Terminal Descriptor */
      AUDIO_CONTROL_OUT_OUTPUT_TERMINAL_DESCRIPTOR_LEN, /* bLength, in bytes */
      USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType = CS_INTERFACE (from USBAD, Table A-4)*/
      USB_AUDIO_DESCRIPTOR_SUBTYPE_OUTPUT_TERMINAL,    /* bDescriptorSubtype = OUTPUT_TERMINAL */
      TERMID_LINEOUT,    /* bTerminalID */
      LOBYTE(USB_AUDIO_TERMINALTYPE_SPEAKER), /* wTerminalType (lo) */
      HIBYTE(USB_AUDIO_TERMINALTYPE_SPEAKER), /* wTerminalType (hi) */
      0,    /* bAssocTerminal = none */
      UNITID_OUTVOLUME, /* bSourceID of DAC Attenuator Feature Unit Descriptor.*/
      0,  /* iTerminal = none */
			/* End of Class-Specific AudioControl Interface Descriptor section */

    // Interface descriptor - AudioStreaming (OUT), Idle setting
    INTERFACE_DESCRIPTOR_LEN, // length
    USB_INTERFACE_DESCRIPTOR,	// descriptorType
    INTERFACE_FOR_AUDIOSTREAMING,		        // interfaceNumber
    ALTSETTING_FOR_AUDIOSTREAMING_IDLE,		        // alternateSetting
    0,		        // numEndpoints
    USB_AUDIO_CLASS,		        // interfaceClass
    USB_AUDIO_SUBCLASS_AUDIOSTREAMING,		        // interfaceSubClass
    USB_AUDIO_PROTOCOL_NONE,		        // interfaceProtocol
    0,		        // interface string index

    // Interface descriptor - AudioStreaming (OUT), 48K Stereo
    INTERFACE_DESCRIPTOR_LEN, // length
    USB_INTERFACE_DESCRIPTOR,	// descriptorType
    INTERFACE_FOR_AUDIOSTREAMING,		        // interfaceNumber
    ALTSETTING_FOR_AUDIOSTREAMING_48K,		        // alternateSetting
#if PROVIDE_FEEDBACK
    2,    // bNumEndpoints, OUT (data), IN (sync)
#else
    1,    // bNumEndpoints, Playback Endpoint,
#endif //PROVIDE_FEEDBACK
    USB_AUDIO_CLASS,		        // interfaceClass
    USB_AUDIO_SUBCLASS_AUDIOSTREAMING,		        // interfaceSubClass
    USB_AUDIO_PROTOCOL_NONE,		        // interfaceProtocol
    0,		        // interface string index

			//Audio Class Specific - General Descriptor
	    AUDIO_STREAMING_GENERAL_DESCRIPTOR_LEN, /* bLength, in bytes */
	    USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType = CS_INTERFACE (from USBAD, Table A-4)*/
	    USB_AUDIO_DESCRIPTOR_SUBTYPE_GENERAL,    /* bDescriptorSubtype = GENERAL */
	    TERMID_USBOUT,    /* bTerminalLink, links USB OUT EP Streaming to Input Terminal */
	    PLAYBACK_DELAY,    /* bDelay = 1 ms (need to measure) */
	    LOBYTE (USB_AUDIO_FORMAT_TAG_PCM), /* wFormatTag (lo) */
	    HIBYTE (USB_AUDIO_FORMAT_TAG_PCM), /* wFormatTag (hi) = PCM (from USBADF, Table A-1) */

			//AudioStreaming Type I Format Interface Descriptor
	    AUDIO_STREAMING_TYPE_I_FMT_DESCRIPTOR_LEN, /* bLength, in bytes */
	    USB_AUDIO_DESCRIPTOR_INTERFACE, /* bDescriptorType = CS_INTERFACE */
	    USB_AUDIO_DESCRIPTOR_SUBTYPE_FORMAT, /* bDescriptorSubtype = FORMAT_TYPE (from USBAD, Table A-6) */
	    USB_AUDIO_FORMAT_TYPE_I, /* bFormatType = TYPE I (from USBADF, Table A-4) */
	    NUM_CHANNELS, /* bNrChannels */
	    CONTAINER_SIZE / 8, /* bSubframeSize in bytes */
	    BIT_DEPTH, /* bBitResolution */
	    USB_AUDIO_SAMPLING_FREQ_DISCREET, /* bSamFreqType*/
	    LOBYTE(LOWORD(SAMPLINGRATE)), /* tSamFreqLow[0] (lo) = 44100 Hz */
	    HIBYTE(LOWORD(SAMPLINGRATE)), /* tSamFreqMid[0] (mid) */
	    LOBYTE(HIWORD(SAMPLINGRATE)), /* tSamFreqHigh[0] (hi) */

		  // Standard AudioStreaming Audio Data Endpoint Descriptor
	    AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN, /* bLength, in bytes */
	    USB_ENDPOINT_DESCRIPTOR, /* bDescriptorType = ENDPOINT (from USBAD, Table 4-20) */
	    PLAYBACK_EP, /* bEndpointAddress OUT EP # */
#if PROVIDE_FEEDBACK
	    USB_AUDIO_EP_ATTRIB_ASYNC | USB_AUDIO_EP_ATTRIB_ISOCH, /* bmAttributes = Asynchronous Isochronous */
#else
	    USB_AUDIO_EP_ATTRIB_ADAPTIVE | USB_AUDIO_EP_ATTRIB_ISOCH, /* bmAttributes = No Synch (adaptive). Isochronous */
#endif //PROVIDE_FEEDBACK
	    LOBYTE(MAX_PACKET_SIZE),   /* wMaxPacketSizeLo */
	    HIBYTE(MAX_PACKET_SIZE),   /* wMaxPacketSizeHi */
	    1,    /* bInterval is number of milliseconds between IN polling. */
#if PROVIDE_FEEDBACK
	    1,    /* bRefresh  - every 2 frames*/
	    PLAYBACK_FEEDBACK_EP,     /* bSynchAddress */
#else
	    0,    /* bRefresh */
	    0,    /* bSynchAddress */
#endif //PROVIDE_FEEDBACK

			//Class specific endpoint descriptor
	    AUDIO_STREAMING_ENDPOINT_GENERAL_DESCRIPTOR_LEN, /* bLength, in bytes */
	    USB_AUDIO_DESCRIPTOR_ENDPOINT, /* bDescriptorType = CS_ENPOINT */
	    USB_AUDIO_DESCRIPTOR_SUBTYPE_GENERAL, /* bDescriptorSubtype */
	    0x00, /* bmAttributes = no controls, full packet not necessary */
	    0x00, /* bLockDelayUnits, asynchronous audio function, must be 0.*/
	    0x00, /* wLockDelay (lo), must be 0. */
	    0x00,  /* wLockDelay (hi) */

#if PROVIDE_FEEDBACK
			//Feedback Endpoint - IN, Isoch.
	    AUDIO_STREAMING_ENDPOINT_DESCRIPTOR_LEN, /* bLength, in bytes */
	    USB_ENDPOINT_DESCRIPTOR, /* bDescriptorType = ENDPOINT (from USBAD, Table 4-20) */
	    PLAYBACK_FEEDBACK_EP, /* bEndpointAddress IN EP #3 */
	    USB_AUDIO_EP_ATTRIB_ISOCH, /* bmAttributes = No Sych. Isochronous */
	    LOBYTE(FEEDBACK_PACKET_SIZE),   /* wMaxPacketSizeLo */
	    HIBYTE(FEEDBACK_PACKET_SIZE),   /* wMaxPacketSizeHi */
	    1,    /* bInterval is number of milliseconds between IN polling. */
	    1,    /* bRefresh - same as the main ep*/
	    0,     /* bSynchAddress */
#endif //PROVIDE_FEEDBACK
	};





/*----------------------------------------------------------------------------------
* $Log: descriptors.h,v $
* Revision 1.3  2003/01/17 00:50:59  Devendra
* - Changed the refresh rate of feedback to 2 frames (milliseconds)
*
* Revision 1.2  2003/01/15 01:34:02  Devendra
* - Changed the feedback ep descriptor (wMaxPacketSize) to use a define instead of literals.
*
* Revision 1.1  2003/01/13 19:48:46  Devendra
* Separated Descriptors to a separate header.
*
*
*---------------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -