M4521_BSP V3.02.000
The Board Support Package for M4521
usbh_uac.h
Go to the documentation of this file.
1#ifndef __INCLUDED_USBHUAC_H__
2#define __INCLUDED_USBHUAC_H__
3
4#include "usbh_core.h"
5
6
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
33#define UAC_SPEAKER 1
34#define UAC_MICROPHONE 2
37/*
38 * Constants
39 */
40#define UAC_RET_OK 0
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
49/*
50 * Audio Class-Specific Request Codes
51 */
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
62/*
63 * Audio Class-Specific Channel selection
64 */
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
77#define UAC_CH_TOP 12 /* end of group USBH_AS_EXPORTED_CONSTANTS */
82
83struct uac_dev_t;
84
85
90typedef int (UAC_CB_FUNC)(struct uac_dev_t *dev, uint8_t *data, int len); /* end of group USBH_AS_EXPORTED_TYPEDEFS */
94
95
100/*-----------------------------------------------------------------------------------
101 * Audio Class device
102 */
104typedef struct uac_dev_t
105{
110 void *priv;
111 struct uac_dev_t *next;
113 /*
114 * The followings are used for audio streaming.
115 */
116 EP_INFO_T *ep_au_in;
117 EP_INFO_T *ep_au_out;
122 uint8_t in_streaming;
125 /*
126 * The followings are used for interworking with user application.
127 */
130 uint8_t *au_in_buff;
133} UAC_DEV_T; /* end of group USBH_AS_EXPORTED_STRUCTURES */
137
138
139#ifdef __cplusplus
140extern "C" {
141#endif
142
147void UAC_Init(void);
149
150int32_t UAC_GetChannelNumber(UAC_DEV_T *audev, uint8_t target);
151int32_t UAC_GetBitResolution(UAC_DEV_T *audev, uint8_t target, uint8_t *val8);
152int32_t UAC_GetSamplingRate(UAC_DEV_T *audev, uint8_t target, uint32_t *srate_list, int max_cnt, uint8_t *type);
153int32_t UAC_MuteControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint8_t *data);
154int32_t UAC_VolumeControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint16_t *volume);
155int32_t UAC_AutoGainControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint16_t chn, uint8_t *gain);
156int32_t UAC_SamplingRateControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint32_t *srate);
157
158int32_t UAC_InstallIsoInCbFun(UAC_DEV_T *audev, uint8_t *au_in_buff, int bufsiz, UAC_CB_FUNC *func);
159int32_t UAC_StartIsoInPipe(UAC_DEV_T *audev);
160int32_t UAC_StopIsoInPipe(UAC_DEV_T *audev);
161
162int32_t UAC_InstallIsoOutCbFun(UAC_DEV_T *audev, UAC_CB_FUNC *func);
163int32_t UAC_StartIsoOutPipe(UAC_DEV_T *audev);
164int32_t UAC_StopIsoOutPipe(UAC_DEV_T *audev);
165
166 /* end of group USBH_AS_EXPORTED_FUNCTIONS */
168 /* end of group USBH_AS_Driver */
170 /* end of group USB_Host_Driver */
172 /* end of group Component_Library */
174
175#ifdef __cplusplus
176}
177#endif
178
179#endif /* __INCLUDED_USBHUAC_H__ */
180
181
182
#define ISO_OUT_URB_CNT
Definition: usbh_uac.h:28
#define AU_IN_MAX_PKTSZ
Definition: usbh_uac.h:29
#define ISO_IN_URB_CNT
Definition: usbh_uac.h:27
#define AU_OUT_MAX_PKTSZ
Definition: usbh_uac.h:30
int ctrl_ifnum
Definition: usbh_uac.h:107
int32_t UAC_StartIsoOutPipe(UAC_DEV_T *audev)
Start to send audio data to UAC device via isochronous out pipe.
Definition: uac_core.c:774
int au_in_bufsz
Definition: usbh_uac.h:131
EP_INFO_T * ep_au_out
Definition: usbh_uac.h:117
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.
Definition: uac_core.c:433
int32_t UAC_StopIsoOutPipe(UAC_DEV_T *audev)
Stop UAC device audio out data stream.
Definition: uac_core.c:863
EP_INFO_T * ep_au_in
Definition: usbh_uac.h:116
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.
Definition: uac_core.c:267
int32_t UAC_GetChannelNumber(UAC_DEV_T *audev, uint8_t target)
Obtain Audio Class device's channel number.
Definition: uac_core.c:50
void * priv
Definition: usbh_uac.h:110
int32_t UAC_GetBitResolution(UAC_DEV_T *audev, uint8_t target, uint8_t *val8)
Obtain Audio Class device subframe bit resolution..
Definition: uac_core.c:83
int au_out_ifnum
Definition: usbh_uac.h:109
UAC_CB_FUNC * au_out_func
Definition: usbh_uac.h:129
int au_in_bufidx
Definition: usbh_uac.h:132
USB_DEV_T * udev
Definition: usbh_uac.h:106
uint8_t iso_outbuf[ISO_OUT_URB_CNT][AU_OUT_MAX_PKTSZ *ISO_FRAME_COUNT]
Definition: usbh_uac.h:121
struct uac_dev_t * next
Definition: usbh_uac.h:111
void UAC_Init(void)
Initialize this USB Audio Class driver.
Definition: uac_driver.c:265
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.
Definition: uac_core.c:134
uint8_t out_streaming
Definition: usbh_uac.h:123
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...
Definition: uac_core.c:747
uint8_t * au_in_buff
Definition: usbh_uac.h:130
int32_t UAC_SamplingRateControl(UAC_DEV_T *audev, uint8_t target, uint8_t req, uint32_t *srate)
Set sampling rate frequency.
Definition: uac_core.c:188
uint8_t in_streaming
Definition: usbh_uac.h:122
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.
Definition: uac_core.c:360
int32_t UAC_StopIsoInPipe(UAC_DEV_T *audev)
Stop UAC device audio in data stream.
Definition: uac_core.c:672
URB_T * urbout[ISO_OUT_URB_CNT]
Definition: usbh_uac.h:119
int au_in_ifnum
Definition: usbh_uac.h:108
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...
Definition: uac_core.c:557
UAC_DEV_T * UAC_GetDeviceList(void)
Get a list of currently connected USB Audio Class devices.
Definition: uac_driver.c:281
UAC_CB_FUNC * au_in_func
Definition: usbh_uac.h:128
uint8_t iso_inbuf[ISO_IN_URB_CNT][AU_IN_MAX_PKTSZ *ISO_FRAME_COUNT]
Definition: usbh_uac.h:120
URB_T * urbin[ISO_IN_URB_CNT]
Definition: usbh_uac.h:118
int32_t UAC_StartIsoInPipe(UAC_DEV_T *audev)
Start to receive audio data from UAC device via isochronous in pipe.
Definition: uac_core.c:587
struct uac_dev_t UAC_DEV_T
int() UAC_CB_FUNC(struct uac_dev_t *dev, uint8_t *data, int len)
Definition: usbh_uac.h:90
#define ISO_FRAME_COUNT
Definition: usbh_config.h:43
USB Host core driver header file.
HIDDEN_SYMBOLS struct usb_device USB_DEV_T