STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
usbd_audio.h
Go to the documentation of this file.
1 
28 /* Define to prevent recursive inclusion -------------------------------------*/
29 #ifndef __USB_AUDIO_H
30 #define __USB_AUDIO_H
31 
32 #ifdef __cplusplus
33  extern "C" {
34 #endif
35 
36 /* Includes ------------------------------------------------------------------*/
37 #include "usbd_ioreq.h"
38 
52 #define AUDIO_OUT_EP 0x01
53 
54 //#define USB_AUDIO_CONFIG_DESC_SIZ 109
55 #define USB_AUDIO_CONFIG_DESC_SIZ 112
56 
57 #define AUDIO_INTERFACE_DESC_SIZE 9
58 #define USB_AUDIO_DESC_SIZ 0x09
59 #define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09
60 #define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07
61 
62 #define AUDIO_DESCRIPTOR_TYPE 0x21
63 #define USB_DEVICE_CLASS_AUDIO 0x01
64 #define AUDIO_SUBCLASS_AUDIOCONTROL 0x01
65 #define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
66 #define AUDIO_PROTOCOL_UNDEFINED 0x00
67 #define AUDIO_STREAMING_GENERAL 0x01
68 #define AUDIO_STREAMING_FORMAT_TYPE 0x02
69 
70 /* Audio Descriptor Types */
71 #define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24
72 #define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25
73 
74 /* Audio Control Interface Descriptor Subtypes */
75 #define AUDIO_CONTROL_HEADER 0x01
76 #define AUDIO_CONTROL_INPUT_TERMINAL 0x02
77 #define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03
78 #define AUDIO_CONTROL_FEATURE_UNIT 0x06
79 
80 #define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0C
81 #define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09
82 #define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07
83 
84 #define AUDIO_CONTROL_MUTE 0x0001
85 
86 #define AUDIO_FORMAT_TYPE_I 0x01
87 #define AUDIO_FORMAT_TYPE_III 0x03
88 
89 #define AUDIO_ENDPOINT_GENERAL 0x01
90 
91 #define AUDIO_REQ_GET_CUR 0x81
92 #define AUDIO_REQ_SET_CUR 0x01
93 
94 #define AUDIO_OUT_STREAMING_CTRL 0x02
95 
96 #define USBD_AUDIO_FREQ 48000
97 #define USBD_AUDIO_FREQ2 44100
98 
99 #define AUDIO_OUT_PACKET (uint32_t)(((USBD_AUDIO_FREQ * 2 * 2) / 1000))
100 #define AUDIO_DEFAULT_VOLUME 70
101 
102  /*
103  * trim the buffer size for 48 and 44.1 KHz - it must be 45 packets
104  */
105 #define AUDIO_OUT_PACKET_NUM 45 //(45)
106 
107 /* Total size of the audio transfer buffer in bytes */
108 #define AUDIO_TOTAL_BUF_SIZE ((uint32_t)(AUDIO_OUT_PACKET * AUDIO_OUT_PACKET_NUM))
109 #define NUM_SAMPLES ((AUDIO_TOTAL_BUF_SIZE/(2+2)))
110 
111 /* Audio Commands enumeration */
112 typedef enum
113 {
118 
119 
120 typedef enum
121 {
126 }
136  typedef struct
137 {
138  uint8_t cmd;
139  uint8_t data[USB_MAX_EP0_SIZE];
140  uint8_t len;
141  uint8_t unit;
142 }
144 
145 
146 
147 typedef struct
148 {
149  __IO uint32_t alt_setting;
150  uint8_t buffer[AUDIO_TOTAL_BUF_SIZE + 4 + 176];
151  AUDIO_OffsetTypeDef offset;
152  uint8_t rd_enable;
153  uint16_t rd_ptr;
154  uint16_t wr_ptr;
156 }
158 
159 
160 typedef struct
161 {
162  int8_t (*Init) (uint32_t AudioFreq, uint32_t Volume, uint32_t options);
163  int8_t (*DeInit) (uint32_t options);
164  int8_t (*AudioCmd) (uint8_t* pbuf, uint32_t size, uint8_t cmd);
165  int8_t (*VolumeCtl) (uint8_t vol);
166  int8_t (*MuteCtl) (uint8_t cmd);
167  int8_t (*PeriodicTC) (uint8_t cmd);
168  int8_t (*GetState) (void);
189 #define USBD_AUDIO_CLASS &USBD_AUDIO
190 
198  USBD_AUDIO_ItfTypeDef *fops);
199 
200 void USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset);
205 #ifdef __cplusplus
206 }
207 #endif
208 
209 #endif /* __USB_AUDIO_H */
210 
218 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
USBD_ClassTypeDef USBD_AUDIO
Definition: usbd_audio.c:155
__IO uint32_t alt_setting
Definition: usbd_audio.h:149
#define __IO
Definition: core_cm0.h:213
#define AUDIO_TOTAL_BUF_SIZE
Definition: usbd_audio.h:108
Definition: pbuf.h:108
AUDIO_OffsetTypeDef offset
Definition: usbd_audio.h:151
uint8_t USBD_AUDIO_RegisterInterface(USBD_HandleTypeDef *pdev, USBD_AUDIO_ItfTypeDef *fops)
USBD_AUDIO_RegisterInterface.
Definition: usbd_audio.c:783
Header file for the usbd_ioreq.c file.
#define USB_MAX_EP0_SIZE
Definition: usbd_def.h:115
void USBD_AUDIO_Sync(USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset)
USBD_AUDIO_SOF handle SOF event.
Definition: usbd_audio.c:582
AUDIO_OffsetTypeDef
Definition: usbd_audio.h:120
USBD_AUDIO_ControlTypeDef control
Definition: usbd_audio.h:155
AUDIO_CMD_TypeDef
Definition: usbd_audio.h:112