1#ifndef __INCLUDED_USBHUAC_H__
2#define __INCLUDED_USBHUAC_H__
24#define CONFIG_AU_MAX_DEV 1
25#define MAX_CFG_DESC_SIZE 256
26#define MAX_FEATURE_UNIT 8
27#define ISO_IN_URB_CNT 2
28#define ISO_OUT_URB_CNT 2
29#define AU_IN_MAX_PKTSZ 128
30#define AU_OUT_MAX_PKTSZ 256
31#define UAC_REQ_TIMEOUT 10000
34#define UAC_MICROPHONE 2
41#define UAC_RET_DEV_NOT_FOUND -9
42#define UAC_RET_IO_ERR -11
43#define UAC_RET_INVALID -13
44#define UAC_RET_OUT_OF_MEMORY -15
45#define UAC_RET_DRV_NOT_SUPPORTED -17
46#define UAC_RET_DEV_NOT_SUPPORTED -19
52#define UAC_SET_CUR 0x01
53#define UAC_GET_CUR 0x81
54#define UAC_SET_MIN 0x02
55#define UAC_GET_MIN 0x82
56#define UAC_SET_MAX 0x03
57#define UAC_GET_MAX 0x83
58#define UAC_SET_RES 0x04
59#define UAC_GET_RES 0x84
60#define UAC_GET_STAT 0xFF
65#define UAC_CH_MASTER 0
66#define UAC_CH_LEFT_FRONT 1
67#define UAC_CH_RIGHT_FRONT 2
68#define UAC_CH_CENTER_FRONT 3
69#define UAC_CH_LOW_FREQ_EN 4
70#define UAC_CH_LEFT_SRN 5
71#define UAC_CH_RIGHT_SRN 6
72#define UAC_CH_LEFT_OF_CENTER 7
73#define UAC_CH_RIGHT_OF_CENTER 8
74#define UAC_CH_SURROUND 9
75#define UAC_CH_SIDE_LEFT 10
76#define UAC_CH_SIDE_RIGHT 11
int32_t UAC_StartIsoOutPipe(UAC_DEV_T *audev)
Start to send audio data to UAC device via isochronous out pipe.
int32_t UAC_AutoGainControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint8_t *gain)
Audio Class device automatic gain control.
int32_t UAC_StopIsoOutPipe(UAC_DEV_T *audev)
Stop UAC device audio out data stream.
int32_t UAC_MuteControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint8_t *data)
Control Audio Class device mute on/off.
int32_t UAC_GetChannelNumber(UAC_DEV_T *audev, uint8_t target)
Obtain Audio Class device's channel number.
int32_t UAC_GetBitResolution(UAC_DEV_T *audev, uint8_t target, uint8_t *val8)
Obtain Audio Class device subframe bit resolution..
UAC_CB_FUNC * au_out_func
uint8_t iso_outbuf[ISO_OUT_URB_CNT][AU_OUT_MAX_PKTSZ *ISO_FRAME_COUNT]
void UAC_Init(void)
Initialize this USB Audio Class driver.
int32_t UAC_GetSamplingRate(UAC_DEV_T *audev, uint8_t target, uint32_t *srate_list, int max_cnt, uint8_t *type)
Get a list of sampling rate frequences supported by the UAC device.
int32_t UAC_InstallIsoOutCbFun(UAC_DEV_T *audev, UAC_CB_FUNC *func)
Install isochronous-out (speaker) callback function. The UAC driver will call the callback function t...
int32_t UAC_SamplingRateControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint32_t *srate)
Set sampling rate frequency.
int32_t UAC_VolumeControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint16_t *volume)
Audio Class device volume control.
int32_t UAC_StopIsoInPipe(UAC_DEV_T *audev)
Stop UAC device audio in data stream.
URB_T * urbout[ISO_OUT_URB_CNT]
int32_t UAC_InstallIsoInCbFun(UAC_DEV_T *audev, uint8_t *au_in_buff, int bufsiz, UAC_CB_FUNC *func)
Install isochronous-in (microphone) callback function. Received audio data from UAC device will be de...
UAC_DEV_T * UAC_GetDeviceList(void)
Get a list of currently connected USB Audio Class devices.
uint8_t iso_inbuf[ISO_IN_URB_CNT][AU_IN_MAX_PKTSZ *ISO_FRAME_COUNT]
URB_T * urbin[ISO_IN_URB_CNT]
int32_t UAC_StartIsoInPipe(UAC_DEV_T *audev)
Start to receive audio data from UAC device via isochronous in pipe.
struct uac_dev_t UAC_DEV_T
int() UAC_CB_FUNC(struct uac_dev_t *dev, uint8_t *data, int len)
USB Host core driver header file.
HIDDEN_SYMBOLS struct usb_device USB_DEV_T