1#ifndef __INCLUDED_USBHUAC_H__
2#define __INCLUDED_USBHUAC_H__
19#define CONFIG_AU_MAX_DEV 1
20#define MAX_CFG_DESC_SIZE 336
21#define MAX_FEATURE_UNIT 8
22#define ISO_IN_URB_CNT 2
23#define ISO_OUT_URB_CNT 2
24#define AU_IN_MAX_PKTSZ 256
25#define AU_OUT_MAX_PKTSZ 256
26#define UAC_REQ_TIMEOUT 10000
29#define UAC_MICROPHONE 2
36#define UAC_RET_DEV_NOT_FOUND -9
37#define UAC_RET_IO_ERR -11
38#define UAC_RET_INVALID -13
39#define UAC_RET_OUT_OF_MEMORY -15
40#define UAC_RET_DRV_NOT_SUPPORTED -17
41#define UAC_RET_DEV_NOT_SUPPORTED -19
47#define UAC_SET_CUR 0x01
48#define UAC_GET_CUR 0x81
49#define UAC_SET_MIN 0x02
50#define UAC_GET_MIN 0x82
51#define UAC_SET_MAX 0x03
52#define UAC_GET_MAX 0x83
53#define UAC_SET_RES 0x04
54#define UAC_GET_RES 0x84
55#define UAC_GET_STAT 0xFF
60#define UAC_CH_MASTER 0
61#define UAC_CH_LEFT_FRONT 1
62#define UAC_CH_RIGHT_FRONT 2
63#define UAC_CH_CENTER_FRONT 3
64#define UAC_CH_LOW_FREQ_EN 4
65#define UAC_CH_LEFT_SRN 5
66#define UAC_CH_RIGHT_SRN 6
67#define UAC_CH_LEFT_OF_CENTER 7
68#define UAC_CH_RIGHT_OF_CENTER 8
69#define UAC_CH_SURROUND 9
70#define UAC_CH_SIDE_LEFT 10
71#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)
HIDDEN_SYMBOLS struct usb_device USB_DEV_T
USB Host core driver header file.