123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- /**
- **************************************************************************
- * @file audio_desc.h
- * @version v2.0.6
- * @date 2021-12-31
- * @brief usb audio descriptor header file
- **************************************************************************
- * Copyright notice & Disclaimer
- *
- * The software Board Support Package (BSP) that is made available to
- * download from Artery official website is the copyrighted work of Artery.
- * Artery authorizes customers to use, copy, and distribute the BSP
- * software and its related documentation for the purpose of design and
- * development in conjunction with Artery microcontrollers. Use of the
- * software is governed by this copyright notice and the following disclaimer.
- *
- * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
- * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
- * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
- * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
- * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
- *
- **************************************************************************
- */
-
- /* define to prevent recursive inclusion -------------------------------------*/
- #ifndef __AUDIO_DESC_H
- #define __AUDIO_DESC_H
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #include "audio_class.h"
- #include "usbd_core.h"
- #include "audio_conf.h"
- /** @addtogroup AT32F403A_407_middlewares_usbd_class
- * @{
- */
-
- /** @addtogroup USB_audio_desc
- * @{
- */
- /** @defgroup USB_audio_desc_definition
- * @{
- */
- #define BCD_NUM 0x0100
- #define USBD_VENDOR_ID 0x2E3C
- #define USBD_PRODUCT_ID 0x5730
- #define USBD_SIZ_STRING_LANGID 4
- #define USBD_SIZ_STRING_SERIAL 0x1A
- #define USBD_DESC_MANUFACTURER_STRING "Artery"
- #define USBD_DESC_PRODUCT_STRING "AT32 Audio"
- #define USBD_DESC_CONFIGURATION_STRING "Audio Config"
- #define USBD_DESC_INTERFACE_STRING "Audio Interface"
- /**
- * @brief audio interface subclass codes
- */
- #define AUDIO_SUBCLASS_UNDEFINED 0x00
- #define AUDIO_SUBCLASS_AUDIOCONTROL 0x01
- #define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
- #define AUDIO_SUBCLASS_MIDISTREMING 0x03
- /**
- * @brief audio class-specific descriptor types
- */
- #define AUDIO_CS_INTERFACE 0x24
- #define AUDIO_CS_ENDPOINT 0x25
- #define AUDIO_CS_STRING 0x23
- #define AUDIO_CS_CONFIGURATION 0x22
- #define AUDIO_CS_DEVICE 0x21
- #define AUDIO_CS_UNDEFINED 0x20
- /**
- * @brief audio interface protocol codes
- */
- #define AUDIO_PROTOCOL_UNDEFINED 0x00
- /**
- * @brief audio class-specific ac interface descriptor subtypes
- */
- #define AUDIO_AC_DESCRIPTOR_UNDEFINED 0x00
- #define AUDIO_AC_HEADER 0x01
- #define AUDIO_AC_INPUT_TERMINAL 0x02
- #define AUDIO_AC_OUTPUT_TERMINAL 0x03
- #define AUDIO_AC_MIXER_UNIT 0x04
- #define AUDIO_AC_SELECTOR_UNIT 0x05
- #define AUDIO_AC_FEATURE_UNIT 0x06
- #define AUDIO_AC_PROCESSING_UNIT 0x07
- #define AUDIO_AC_EXTENSION_UNIT 0x08
- /**
- * @brief audio class-specific as interface descriptor subtypes
- */
- #define AUDIO_AS_DESCRIPTOR_UNDEFINED 0x00
- #define AUDIO_AS_GENERAL 0x01
- #define AUDIO_AS_FORMAT_TYPE 0x02
- #define AUDIO_AS_FORMAT_SPECIFIC 0x03
- /**
- * @brief audio class-specific request codes
- */
- #define AUDIO_REQUEST_CODE_UNDEFINED 0x00
- #define AUDIO_REQ_SET_CUR 0x01
- #define AUDIO_REQ_GET_CUR 0x81
- #define AUDIO_REQ_SET_MIN 0x02
- #define AUDIO_REQ_GET_MIN 0x82
- #define AUDIO_REQ_SET_MAX 0x03
- #define AUDIO_REQ_GET_MAX 0x83
- #define AUDIO_REQ_SET_RES 0x04
- #define AUDIO_REQ_GET_RES 0x84
- #define AUDIO_REQ_SET_MEM 0x05
- #define AUDIO_REQ_GET_MEM 0x85
- #define AUDIO_REQ_GET_STAT 0xFF
- /**
- * @brief audio feature unit control selectors
- */
- #define AUDIO_FU_CONTROL_UNDEFINED 0x00
- #define AUDIO_FU_MUTE_CONTROL 0x01
- #define AUDIO_FU_VOLUME_CONTROL 0x02
- #define AUDIO_FU_BASS_CONTROL 0x03
- #define AUDIO_FU_MID_CONTROL 0x04
- #define AUDIO_FU_TREBLE_CONTROL 0x05
- /**
- * @brief audio terminal type
- */
- #define AUDIO_TERMINAL_TYPE_UNDEFINED 0x0100
- #define AUDIO_TERMINAL_TYPE_STREAMING 0x0101
- #define AUDIO_TERMINAL_TYPE_VENDOR 0x01FF
- #define AUDIO_INPUT_TERMINAL_UNDEFINED 0x0200
- #define AUDIO_INPUT_TERMINAL_MICROPHONE 0x0201
- #define AUDIO_OUTPUT_TERMINAL_UNDEFINED 0x0300
- #define AUDIO_OUTPUT_TERMINAL_SPEAKER 0x0301
- /**
- * @brief audio format type 1
- */
- #define AUDIO_FORMAT_TYPE_I 0x01
- /**
- * @brief audio interface config
- */
- #define AUDIO_INTERFACE_NUM (AUDIO_SUPPORT_SPK + AUDIO_SUPPORT_MIC)
- #define AUDIO_INTERFACE_LEN ((0x08 + AUDIO_INTERFACE_NUM) + AUDIO_INTERFACE_NUM * 0x1E)
- #define AUDIO_MIC_INTERFACE 0x01
- #define AUDIO_SPK_INTERFACE 0x02
- /**
- * @brief audio interface descriptor size define
- */
- #define AUDIO_INPUT_TERMINAL_SIZE 0x0C
- #define AUDIO_OUTPUT_TERMINAL_SIZE 0x09
- #define AUDIO_FEATURE_UNIT_SIZE 0x09
- /**
- * @brief audio terminal id define
- */
- #define AUDIO_MIC_INPUT_TERMINAL_ID 0x01
- #define AUDIO_MIC_FEATURE_UNIT_ID 0x02
- #define AUDIO_MIC_OUTPUT_TERMINAL_ID 0x03
- #define AUDIO_SPK_INPUT_TERMINAL_ID 0x04
- #define AUDIO_SPK_FEATURE_UNIT_ID 0x05
- #define AUDIO_SPK_OUTPUT_TERMINAL_ID 0x06
- /**
- * @brief audio interface number
- */
- #define AUDIO_MIC_INTERFACE_NUMBER 0x01
- #if (AUDIO_SUPPORT_MIC == 1)
- #define AUDIO_SPK_INTERFACE_NUMBER 0x02
- #else
- #define AUDIO_SPK_INTERFACE_NUMBER 0x01
- #endif
- /**
- * @brief audio support freq
- */
- #define AT32_AUDIO_FREQ_16K 16000
- #define AT32_AUDIO_FREQ_48K 48000
- /**
- * @brief audio microphone freq and channel config
- */
- #define AUDIO_MIC_FREQ_SIZE (AUDIO_SUPPORT_FREQ)
- #define AUDIO_MIC_CHR AUDIO_MIC_CHANEL_NUM
- #define AUDIO_MIC_BITW (AUDIO_MIC_DEFAULT_BITW)
- /**
- * @brief audio speaker freq and channel config
- */
- #define AUDIO_SPK_FREQ_SIZE (AUDIO_SUPPORT_FREQ)
- #define AUDIO_SPK_CHR AUDIO_SPK_CHANEL_NUM
- #define AUDIO_SPK_BITW (AUDIO_SPK_DEFAULT_BITW)
- #define HID_BINTERVAL_TIME 0x01
- #define USBD_CONFIG_DESC_SIZE ( 0x12 + AUDIO_INTERFACE_LEN + \
- + (0x31 + AUDIO_SPK_FREQ_SIZE * 3) \
- + (0x31 + AUDIO_MIC_FREQ_SIZE * 3) \
- + (9 * AUDIO_SUPPORT_FEEDBACK) \
- )
- #define SAMPLE_FREQ(frq) (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
- #define MCU_ID1 (0x1FFFF7E8)
- #define MCU_ID2 (0x1FFFF7EC)
- #define MCU_ID3 (0x1FFFF7F0)
- extern uint8_t g_usbd_descriptor[USB_DEVICE_DESC_LEN];
- extern uint8_t g_usbd_configuration[USBD_CONFIG_DESC_SIZE];
- extern usbd_desc_handler audio_desc_handler;
- /**
- * @}
- */
-
- /**
- * @}
- */
-
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif
|