2 #if (USE_STM32_USB_HOST_MODE || USE_STM32_USB_USE_DEVICE_MODE || USE_STM32_USB_OTG_MODE)
32 #ifndef __USB_AUDIO_CORE_H_
33 #define __USB_AUDIO_CORE_H_
35 #include "stm32/usbd_ioreq.h"
36 #include "stm32/usbd_req.h"
37 #include "stm32/usbd_desc.h"
57 #define AUDIO_OUT_PACKET (uint32_t)(((USBD_AUDIO_FREQ * 2 * 2) /1000))
61 #define OUT_PACKET_NUM 4
63 #define TOTAL_OUT_BUF_SIZE ((uint32_t)(AUDIO_OUT_PACKET * OUT_PACKET_NUM))
65 #define AUDIO_CONFIG_DESC_SIZE 109
66 #define AUDIO_INTERFACE_DESC_SIZE 9
67 #define USB_AUDIO_DESC_SIZ 0x09
68 #define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09
69 #define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07
71 #define AUDIO_DESCRIPTOR_TYPE 0x21
72 #define USB_DEVICE_CLASS_AUDIO 0x01
73 #define AUDIO_SUBCLASS_AUDIOCONTROL 0x01
74 #define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
75 #define AUDIO_PROTOCOL_UNDEFINED 0x00
76 #define AUDIO_STREAMING_GENERAL 0x01
77 #define AUDIO_STREAMING_FORMAT_TYPE 0x02
80 #define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24
81 #define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25
84 #define AUDIO_CONTROL_HEADER 0x01
85 #define AUDIO_CONTROL_INPUT_TERMINAL 0x02
86 #define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03
87 #define AUDIO_CONTROL_FEATURE_UNIT 0x06
89 #define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0C
90 #define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09
91 #define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07
93 #define AUDIO_CONTROL_MUTE 0x0001
95 #define AUDIO_FORMAT_TYPE_I 0x01
96 #define AUDIO_FORMAT_TYPE_III 0x03
98 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
99 #define AUDIO_ENDPOINT_GENERAL 0x01
101 #define AUDIO_REQ_GET_CUR 0x81
102 #define AUDIO_REQ_SET_CUR 0x01
104 #define AUDIO_OUT_STREAMING_CTRL 0x02
114 typedef struct _Audio_Fops
116 uint8_t (*Init) (uint32_t AudioFreq, uint32_t Volume, uint32_t options);
117 uint8_t (*DeInit) (uint32_t options);
118 uint8_t (*AudioCmd) (uint8_t* pbuf, uint32_t size, uint8_t cmd);
119 uint8_t (*VolumeCtl) (uint8_t vol);
120 uint8_t (*MuteCtl) (uint8_t cmd);
121 uint8_t (*PeriodicTC) (uint8_t cmd);
122 uint8_t (*GetState) (void);
133 #define AUDIO_PACKET_SZE(frq) (uint8_t)(((frq * 2 * 2)/1000) & 0xFF), \
134 (uint8_t)((((frq * 2 * 2)/1000) >> 8) & 0xFF)
135 #define SAMPLE_FREQ(frq) (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
144 extern USBD_Class_cb_TypeDef AUDIO_cb;
157 #endif // __USB_AUDIO_CORE_H_
libheivs configuration file