summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h')
-rw-r--r--stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h201
1 files changed, 201 insertions, 0 deletions
diff --git a/stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h b/stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h
new file mode 100644
index 0000000000..b9a225f20b
--- /dev/null
+++ b/stmhal/usbdev/Class/AUDIO/Inc/usbd_audio.h
@@ -0,0 +1,201 @@
+/**
+ ******************************************************************************
+ * @file usbd_audio_core.h
+ * @author MCD Application Team
+ * @version V2.0.0
+ * @date 18-February-2014
+ * @brief header file for the usbd_audio_core.c file.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
+ *
+ * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/software_license_agreement_liberty_v2
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+
+#ifndef __USB_AUDIO_CORE_H_
+#define __USB_AUDIO_CORE_H_
+
+#include "usbd_ioreq.h"
+
+/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
+ * @{
+ */
+
+/** @defgroup USBD_AUDIO
+ * @brief This file is the Header file for USBD_msc.c
+ * @{
+ */
+
+
+/** @defgroup USBD_AUDIO_Exported_Defines
+ * @{
+ */
+#define AUDIO_OUT_EP 0x01
+#define USB_AUDIO_CONFIG_DESC_SIZ 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 AUDIO_ENDPOINT_GENERAL 0x01
+
+#define AUDIO_REQ_GET_CUR 0x81
+#define AUDIO_REQ_SET_CUR 0x01
+
+#define AUDIO_OUT_STREAMING_CTRL 0x02
+
+
+#define AUDIO_OUT_PACKET (uint32_t)(((USBD_AUDIO_FREQ * 2 * 2) /1000))
+#define AUDIO_DEFAULT_VOLUME 70
+
+/* 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 AUDIO_OUT_PACKET_NUM 80
+/* Total size of the audio transfer buffer */
+#define AUDIO_TOTAL_BUF_SIZE ((uint32_t)(AUDIO_OUT_PACKET * AUDIO_OUT_PACKET_NUM))
+
+ /* Audio Commands enmueration */
+typedef enum
+{
+ AUDIO_CMD_START = 1,
+ AUDIO_CMD_PLAY,
+ AUDIO_CMD_STOP,
+}AUDIO_CMD_TypeDef;
+
+
+typedef enum
+{
+ AUDIO_OFFSET_NONE = 0,
+ AUDIO_OFFSET_HALF,
+ AUDIO_OFFSET_FULL,
+ AUDIO_OFFSET_UNKNOWN,
+}
+AUDIO_OffsetTypeDef;
+/**
+ * @}
+ */
+
+
+/** @defgroup USBD_CORE_Exported_TypesDefinitions
+ * @{
+ */
+ typedef struct
+{
+ uint8_t cmd;
+ uint8_t data[USB_MAX_EP0_SIZE];
+ uint8_t len;
+ uint8_t unit;
+}
+USBD_AUDIO_ControlTypeDef;
+
+
+
+typedef struct
+{
+ __IO uint32_t alt_setting;
+ uint8_t buffer[AUDIO_TOTAL_BUF_SIZE];
+ AUDIO_OffsetTypeDef offset;
+ uint8_t rd_enable;
+ uint16_t rd_ptr;
+ uint16_t wr_ptr;
+ USBD_AUDIO_ControlTypeDef control;
+}
+USBD_AUDIO_HandleTypeDef;
+
+
+typedef struct
+{
+ int8_t (*Init) (uint32_t AudioFreq, uint32_t Volume, uint32_t options);
+ int8_t (*DeInit) (uint32_t options);
+ int8_t (*AudioCmd) (uint8_t* pbuf, uint32_t size, uint8_t cmd);
+ int8_t (*VolumeCtl) (uint8_t vol);
+ int8_t (*MuteCtl) (uint8_t cmd);
+ int8_t (*PeriodicTC) (uint8_t cmd);
+ int8_t (*GetState) (void);
+}USBD_AUDIO_ItfTypeDef;
+/**
+ * @}
+ */
+
+
+
+/** @defgroup USBD_CORE_Exported_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @defgroup USBD_CORE_Exported_Variables
+ * @{
+ */
+
+extern USBD_ClassTypeDef USBD_AUDIO;
+/**
+ * @}
+ */
+
+/** @defgroup USB_CORE_Exported_Functions
+ * @{
+ */
+uint8_t USBD_AUDIO_RegisterInterface (USBD_HandleTypeDef *pdev,
+ USBD_AUDIO_ItfTypeDef *fops);
+
+void USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset);
+/**
+ * @}
+ */
+
+#endif // __USB_AUDIO_CORE_H_
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/