Код:
/*** UAC - Interface Association Descriptor ***/
IAD(4 /*bFirstInterface*/,
3 /*bInterfaceCount*/,
0x01 /*bInterfaceClass = UAC*/,
0x01 /*bInterfaceSubClass = AC*/,
0x00 /*bInterfaceProtocol*/,
7 /*iFunction*/),
/*** Standard AC Interface Descriptor ***/
INTERFACE(4 /*bInterfaceNumber*/,
0 /*bAlternateSetting*/,
0 /*bNumEndpoints*/,
0x01 /*bInterfaceClass = UAC*/,
0x01 /*bInterfaceSubClass = AC*/,
0x00 /*bInterfaceProtocol*/,
0 /*iInterface*/),
AUDIO_CTRL_CS_IFACE(0x0100 /*bcdADC = UAC 1.00*/, 2 /*AS Interface number*/, 5 /*RX AS Iface*/, 6 /*TX AS Iface*/,
/* RX Audio */
AUDIO_INP_TERMINAL(1 /*bTerminalID = #1*/, USB_UAC_TERMINAL_RADIO_RECEIVER /*wTerminalType*/,
0 /*bAssocTerminal = No Assoc*/, 2 /*bNrChannels*/, 0x0003 /* wChannelConfig L+R*/,
0 /*iChannelNames*/, 8 /*iTerminal*/),
AUDIO_OUT_TERMINAL(2 /*bTerminalID = #3*/, USB_UAC_TERMINAL_USB_STREAMING /*wTerminalType*/,
0 /*bAssocTerminal*/, 1 /*bSourceID = Terminal #1*/, 8 /*iTerminal*/),
/* TX Audio */
AUDIO_INP_TERMINAL(11 /*bTerminalID = #11*/, USB_UAC_TERMINAL_USB_STREAMING /*wTerminalType*/,
0 /*bAssocTerminal = No Assoc*/, 1 /*bNrChannels*/, 0x0000 /* wChannelConfig Mono sets no position bits*/,
0 /*iChannelNames*/, 9 /*iTerminal*/),
AUDIO_OUT_TERMINAL(12 /*bTerminalID = #12*/, USB_UAC_TERMINAL_RADIO_TRANSMITTER /*wTerminalType*/,
0 /*bAssocTerminal*/, 11 /*bSourceID = Terminal #11*/, 9 /*iTerminal*/)
),
/*** Standard AS Zero Bandwidth Interface (RX)***/
INTERFACE(5 /*bInterfaceNumber*/,
0 /*bAlternateSetting*/,
0 /*bNumEndpoints*/,
0x01 /*bInterfaceClass = UAC*/,
0x02 /*bInterfaceSubClass = AS*/,
0x00 /*bInterfaceProtocol*/,
0 /*iInterface*/),
/*** Standard AS Interface (Alternate Setting 1) ***/
INTERFACE(5 /*bInterfaceNumber*/,
1 /*bAlternateSetting*/,
1 /*bNumEndpoints*/,
0x01 /*bInterfaceClass = UAC*/,
0x02 /*bInterfaceSubClass = AS*/,
0x00 /*bInterfaceProtocol*/,
0 /*iInterface*/),
AUDIO_STREAMING_CS_IFACE(2 /*bTerminalLink = Terminal #2*/, 1 /*bDelay*/, 0x0001 /*wFormatTag = PCM*/,
AUDIO_TYPEI_FORMAT(2 /*bNrChannels*/, UAD_SLOT_SIZE /*bSubFrameSize*/, 32 /*bBitResolution*/, 1 /*bSamFreqType*/, UAD_SAMPLE_FREQ /*tSamFreq*/),
AS_ENDPOINT(USB_IN_EP_ADDR(5) /*bEndpointAddress*/, USB_EP_TYPE_ISOCHRONOUS | USB_EP_SYNC_MASK /*bmAttributes*/,
UAD_PACKET_IN /*wMaxPacketSize*/, 1 /*bInterval*/, 0 /*bRefresh*/, 0 /*bSyncAddress*/),
AS_CS_ENDPOINT(0x00 /*bmAttributes*/, 0x00 /*bLockDelayUnits*/, 0x0000 /*wLockDelay*/)
),
/*** Standard AS Zero Bandwidth Interface (TX)***/
INTERFACE(6 /*bInterfaceNumber*/,
0 /*bAlternateSetting*/,
0 /*bNumEndpoints*/,
0x01 /*bInterfaceClass = UAC*/,
0x02 /*bInterfaceSubClass = AS*/,
0x00 /*bInterfaceProtocol*/,
0 /*iInterface*/),
/*** Standard AS Interface (Alternate Setting 1) ***/
INTERFACE(6 /*bInterfaceNumber*/,
1 /*bAlternateSetting*/,
1 /*bNumEndpoints*/,
0x01 /*bInterfaceClass = UAC*/,
0x02 /*bInterfaceSubClass = AS*/,
0x00 /*bInterfaceProtocol*/,
0 /*iInterface*/),
AUDIO_STREAMING_CS_IFACE(11 /*bTerminalLink = Terminal #11*/, 1 /*bDelay*/, 0x0001 /*wFormatTag = PCM*/,
AUDIO_TYPEI_FORMAT(1 /*bNrChannels*/, UAD_SLOT_SIZE /*bSubFrameSize*/, 32 /*bBitResolution*/, 1 /*bSamFreqType*/, UAD_SAMPLE_FREQ /*tSamFreq*/),
AS_ENDPOINT(USB_OUT_EP_ADDR(5) /*bEndpointAddress*/, USB_EP_TYPE_ISOCHRONOUS | USB_EP_SYNC_MASK /*bmAttributes*/,
UAD_PACKET_OUT /*wMaxPacketSize*/, 1 /*bInterval*/, 0 /*bRefresh*/, 0 /*bSyncAddress*/),
AS_CS_ENDPOINT(0x00 /*bmAttributes*/, 0x00 /*bLockDelayUnits*/, 0x0000 /*wLockDelay*/)
)