Added USB Device library sources
[fw/stlink] / example / stm32f4 / STM32_USB_Device_Library / Class / audio / inc / usbd_audio_core.h
diff --git a/example/stm32f4/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h b/example/stm32f4/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h
new file mode 100644 (file)
index 0000000..f58ff06
--- /dev/null
@@ -0,0 +1,158 @@
+/**
+  ******************************************************************************
+  * @file    usbd_audio_core.h
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    22-July-2011
+  * @brief   header file for the usbd_audio_core.c file.
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  *
+  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
+  ******************************************************************************
+  */ 
+
+/* Includes ------------------------------------------------------------------*/
+
+#ifndef __USB_AUDIO_CORE_H_
+#define __USB_AUDIO_CORE_H_
+
+#include "usbd_ioreq.h"
+#include "usbd_req.h"
+#include "usbd_desc.h"
+
+
+
+
+/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
+  * @{
+  */
+  
+/** @defgroup usbd_audio
+  * @brief This file is the Header file for USBD_audio.c
+  * @{
+  */ 
+
+
+/** @defgroup usbd_audio_Exported_Defines
+  * @{
+  */ 
+
+/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
+#define AUDIO_OUT_PACKET                              (uint32_t)(((USBD_AUDIO_FREQ * 2 * 2) /1000)) 
+
+/* Number of sub-packets in the audio transfer buffer. You can modify this value but always make sure
+  that it is an even number and higher than 3 */
+#define OUT_PACKET_NUM                                   4
+/* Total size of the audio transfer buffer */
+#define TOTAL_OUT_BUF_SIZE                           ((uint32_t)(AUDIO_OUT_PACKET * OUT_PACKET_NUM))
+
+#define AUDIO_CONFIG_DESC_SIZE                        109
+#define AUDIO_INTERFACE_DESC_SIZE                     9
+#define USB_AUDIO_DESC_SIZ                            0x09
+#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE             0x09
+#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE            0x07
+
+#define AUDIO_DESCRIPTOR_TYPE                         0x21
+#define USB_DEVICE_CLASS_AUDIO                        0x01
+#define AUDIO_SUBCLASS_AUDIOCONTROL                   0x01
+#define AUDIO_SUBCLASS_AUDIOSTREAMING                 0x02
+#define AUDIO_PROTOCOL_UNDEFINED                      0x00
+#define AUDIO_STREAMING_GENERAL                       0x01
+#define AUDIO_STREAMING_FORMAT_TYPE                   0x02
+
+/* Audio Descriptor Types */
+#define AUDIO_INTERFACE_DESCRIPTOR_TYPE               0x24
+#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE                0x25
+
+/* Audio Control Interface Descriptor Subtypes */
+#define AUDIO_CONTROL_HEADER                          0x01
+#define AUDIO_CONTROL_INPUT_TERMINAL                  0x02
+#define AUDIO_CONTROL_OUTPUT_TERMINAL                 0x03
+#define AUDIO_CONTROL_FEATURE_UNIT                    0x06
+
+#define AUDIO_INPUT_TERMINAL_DESC_SIZE                0x0C
+#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE               0x09
+#define AUDIO_STREAMING_INTERFACE_DESC_SIZE           0x07
+
+#define AUDIO_CONTROL_MUTE                            0x0001
+
+#define AUDIO_FORMAT_TYPE_I                           0x01
+#define AUDIO_FORMAT_TYPE_III                         0x03
+
+#define USB_ENDPOINT_TYPE_ISOCHRONOUS                 0x01
+#define AUDIO_ENDPOINT_GENERAL                        0x01
+
+#define AUDIO_REQ_GET_CUR                             0x81
+#define AUDIO_REQ_SET_CUR                             0x01
+
+#define AUDIO_OUT_STREAMING_CTRL                      0x02
+
+/**
+  * @}
+  */ 
+
+
+/** @defgroup USBD_CORE_Exported_TypesDefinitions
+  * @{
+  */
+typedef struct _Audio_Fops
+{
+    uint8_t  (*Init)         (uint32_t  AudioFreq, uint32_t Volume, uint32_t options);
+    uint8_t  (*DeInit)       (uint32_t options);
+    uint8_t  (*AudioCmd)     (uint8_t* pbuf, uint32_t size, uint8_t cmd);
+    uint8_t  (*VolumeCtl)    (uint8_t vol);
+    uint8_t  (*MuteCtl)      (uint8_t cmd);
+    uint8_t  (*PeriodicTC)   (uint8_t cmd);
+    uint8_t  (*GetState)     (void);
+}AUDIO_FOPS_TypeDef;
+/**
+  * @}
+  */ 
+
+
+
+/** @defgroup USBD_CORE_Exported_Macros
+  * @{
+  */ 
+#define AUDIO_PACKET_SZE(frq)          (uint8_t)(((frq * 2 * 2)/1000) & 0xFF), \
+                                       (uint8_t)((((frq * 2 * 2)/1000) >> 8) & 0xFF)
+#define SAMPLE_FREQ(frq)               (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
+/**
+  * @}
+  */ 
+
+/** @defgroup USBD_CORE_Exported_Variables
+  * @{
+  */ 
+
+extern USBD_Class_cb_TypeDef  AUDIO_cb;
+
+/**
+  * @}
+  */ 
+
+/** @defgroup USB_CORE_Exported_Functions
+  * @{
+  */
+/**
+  * @}
+  */ 
+
+#endif  // __USB_AUDIO_CORE_H_
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+  
+/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/