42int au_parsing_descriptors(
UAC_DEV_T *audev);
50 if (g_au_dev[i].udev ==
NULL)
52 memset((
char *)&g_au_dev[i], 0,
sizeof(
UAC_DEV_T));
56 memset((
char *)&g_uac_info[i], 0,
sizeof(UAC_INFO_T));
57 g_au_dev[i].
priv = (
void *)&g_uac_info[i];
64static void free_au_device(
UAC_DEV_T *audev)
78 if (g_au_dev[i].udev == udev)
92 if (&g_au_dev[i] == hdev)
108 if ((ifd->bInterfaceSubClass != SUBCLS_AUDIOCONTROL) &&
109 (ifd->bInterfaceSubClass != SUBCLS_AUDIOSTREAMING))
111 printf(
"Does not support audio sub-class %x\n", ifd->bInterfaceSubClass);
116 ifnum = ifd->bInterfaceNumber;
118 audev = find_as_deivce_by_udev(dev);
121 audev = alloc_as_device();
129 USBAS_DBGMSG(
"au_probe called for ifnum %d\n", ifnum);
131 if (ifd->bInterfaceSubClass == SUBCLS_AUDIOSTREAMING)
134 for (i = 0; i < dev->ep_list_cnt; i++)
136 if ((dev->ep_list[i].ifnum == ifnum) &&
137 ((dev->ep_list[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_ISOC))
139 ep_info = &dev->ep_list[i];
140 USBAS_DBGMSG(
"Isochronous Endpoint 0x%x found.\n", ep_info->bEndpointAddress);
145 USBAS_DBGMSG(
"couldn't find isochronous endpoints\n");
149 if ((ep_info->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
153 USBAS_DBGMSG(
"Audio in stream interface is %d\n", ifnum);
159 USBAS_DBGMSG(
"Audio out stream interface is %d\n", ifnum);
165 USBAS_DBGMSG(
"Audio control interface is %d\n", ifnum);
171 if (g_audev_list ==
NULL)
172 g_audev_list = audev;
180 return uac_config_parser(audev);
189 USBAS_DBGMSG(
"Audio Class device disconnected!\n");
191 audev = find_as_deivce_by_udev(dev);
216 if (audev == g_audev_list)
217 g_audev_list = g_audev_list->
next;
220 for (p = g_audev_list; p !=
NULL; p = p->
next)
222 if (p->
next == audev)
229 free_au_device(audev);
233static USB_DEV_ID_T au_id_table[] =
235 USB_DEVICE_ID_MATCH_INT_CLASS,
243static USB_DRIVER_T au_driver =
245 "audio class driver",
263 memset((
char *)&g_au_dev[0], 0,
sizeof(g_au_dev));
NUC472/NUC442 peripheral access layer header file. This file contains all the peripheral register's d...
#define CONFIG_AU_MAX_DEV
#define UAC_RET_DRV_NOT_SUPPORTED
void UAC_Init(void)
Initialize this USB Audio Class driver.
URB_T * urbout[ISO_OUT_URB_CNT]
UAC_DEV_T * UAC_GetDeviceList(void)
Get a list of currently connected USB Audio Class devices.
URB_T * urbin[ISO_IN_URB_CNT]
int32_t USBH_RegisterDriver(USB_DRIVER_T *new_driver)
Register a device driver to USB Host Core driver.
int32_t USBH_UnlinkUrb(URB_T *urb)
Cancel an URB which has been submit to USB core.
void USBH_FreeUrb(URB_T *)
Free the URB allocated from USBH_AllocUrb()
HIDDEN_SYMBOLS struct usb_device USB_DEV_T
#define NULL
NULL pointer.
#define TRUE
Boolean true, define to use in API parameters or return value.
#define FALSE
Boolean false, define to use in API parameters or return value.
USB Host core driver header file.