Files
AC707N/SDK/apps/common/device/usb/usb_std_class_def.h
2025-12-03 11:12:34 +08:00

298 lines
8.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __USB_STD_CLASS_DEF_H__
#define __USB_STD_CLASS_DEF_H__
/**************************************************************************/
/*
CLASS BITMAP
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
HID AUDIO SPEAKER Mass Storage
*/
/**************************************************************************/
#define MASSSTORAGE_CLASS 0x00000001
#define SPEAKER_CLASS 0x00000002
#define MIC_CLASS 0x00000004
#define AUDIO_CLASS (SPEAKER_CLASS|MIC_CLASS)
#define HID_CLASS 0x00000008
#define CDC_CLASS 0x00000010
#define CUSTOM_HID_CLASS 0x00000020
#define WEBUSB_CLASS 0x00000040
#ifndef FUSB_MODE
#define FUSB_MODE 1
#endif
///////////MassStorage Class
#ifndef MSD_BULK_EP_OUT
#define MSD_BULK_EP_OUT 1
#endif
#ifndef MSD_BULK_EP_IN
#define MSD_BULK_EP_IN 1
#endif
#ifndef MAXP_SIZE_BULKOUT_FS
#define MAXP_SIZE_BULKOUT_FS 64
#endif
#ifndef MAXP_SIZE_BULKOUT_HS
#define MAXP_SIZE_BULKOUT_HS 512
#endif
#ifndef MAXP_SIZE_BULKOUT
#if defined(FUSB_MODE) && FUSB_MODE
#define MAXP_SIZE_BULKOUT MAXP_SIZE_BULKOUT_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define MAXP_SIZE_BULKOUT MAXP_SIZE_BULKOUT_HS
#endif
#endif
#ifndef MAXP_SIZE_BULKIN_FS
#define MAXP_SIZE_BULKIN_FS 64
#endif
#ifndef MAXP_SIZE_BULKIN_HS
#define MAXP_SIZE_BULKIN_HS 512
#endif
#ifndef MAXP_SIZE_BULKIN
#if defined(FUSB_MODE) && FUSB_MODE
#define MAXP_SIZE_BULKIN MAXP_SIZE_BULKIN_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define MAXP_SIZE_BULKIN MAXP_SIZE_BULKIN_HS
#endif
#endif
#ifndef MSD_STR_INDEX
#define MSD_STR_INDEX 7
#endif
///////////HID class
#ifndef HID_EP_IN
#define HID_EP_IN 2
#endif
#ifndef HID_EP_OUT
#define HID_EP_OUT 2
#endif
#ifndef HID_EP_IN_2
#define HID_EP_IN_2 3
#endif
#ifndef HID_EP_OUT_2
#define HID_EP_OUT_2 3
#endif
#ifndef MAXP_SIZE_HIDOUT
#define MAXP_SIZE_HIDOUT 16
#endif
#ifndef MAXP_SIZE_HIDIN
#define MAXP_SIZE_HIDIN 16
#endif
#ifndef HID_INTR_INTERVAL_FS
#define HID_INTR_INTERVAL_FS 1
#endif
#ifndef HID_INTR_INTERVAL_HS
#define HID_INTR_INTERVAL_HS 4
#endif
#ifndef HID_INTR_INTERVAL
#if defined(FUSB_MODE) && FUSB_MODE
#define HID_INTR_INTERVAL HID_INTR_INTERVAL_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define HID_INTR_INTERVAL HID_INTR_INTERVAL_HS
#endif
#endif
/////////////Audio Class
/**
* 注意事项:
* 1. uac 2.0需要使能spk的多采样率以及mic的多采样率才能被正确枚举
* 2. Microsoft从Windodws 10 1703开始才支持uac 2.0Linux则较早就支持,基于性能
* 考虑,还是基于兼容性考虑,请谨慎选用
* 3. Windows上,uac 2.0音量控制,不下发音量命令给设备,而是修改音频数据增益实现
* 4. 切换版本后,为避免出现未预料的问题,请先在设备管理器卸载一次
*/
#define USB_AUDIO_VERSION_1_0 0x10
#define USB_AUDIO_VERSION_2_0 0x20
#ifndef USB_AUDIO_VERSION
#define USB_AUDIO_VERSION USB_AUDIO_VERSION_1_0
#endif
#ifndef UAC_ISO_INTERVAL_FS
#define UAC_ISO_INTERVAL_FS 1
#endif
#ifndef UAC_ISO_INTERVAL_HS
#define UAC_ISO_INTERVAL_HS 4
#endif
#ifndef UAC_ISO_INTERVAL
#if defined(FUSB_MODE) && FUSB_MODE
#define UAC_ISO_INTERVAL UAC_ISO_INTERVAL_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define UAC_ISO_INTERVAL UAC_ISO_INTERVAL_HS
#endif
#endif
#ifndef UAC_24BIT_IN_4BYTE
//0: 24bit in 3byte, 1: 24 bit in 4byte
//Windows不支持这种数据格式,安卓支持这种数据格式
#define UAC_24BIT_IN_4BYTE 0
#endif
//speaker class
#ifndef SPK_AUDIO_RATE_NUM
#define SPK_AUDIO_RATE_NUM 1
#endif
#if SPK_AUDIO_RATE_NUM == 1
#define SPK_AUDIO_RATE 48000
#else
#define SPK_AUDIO_RATE 96000
#define SPK_AUDIO_RATE_1 44100
#define SPK_AUDIO_RATE_2 48000
#endif
#ifndef SPK_AUDIO_RES
#define SPK_AUDIO_RES 16
#endif
#ifndef SPK_AUDIO_RES_2
#define SPK_AUDIO_RES_2 0//24
#endif
#ifndef SPK_CHANNEL
#define SPK_CHANNEL 2
#endif
#ifndef SPK_FRAME_LEN
#define SPK_FRAME_LEN (((SPK_AUDIO_RATE) * SPK_AUDIO_RES / 8 * SPK_CHANNEL)/1000+4)
#endif
#ifndef SPK_PCM_Type
#define SPK_PCM_Type (SPK_AUDIO_RES >> 4) // 0=8 ,1=16
#endif
#ifndef SPK_AUDIO_TYPE
#define SPK_AUDIO_TYPE (0x02 - SPK_PCM_Type) // TYPE1_PCM16
#endif
#ifndef SPK_ISO_EP_OUT
#ifdef CONFIG_CPU_BR18
#define SPK_ISO_EP_OUT 2
#else
#define SPK_ISO_EP_OUT 3
#endif
#endif
#ifndef SPEAKER_STR_INDEX
#define SPEAKER_STR_INDEX 5
#endif
#ifndef SPK_INPUT_TERMINAL_ID
#define SPK_INPUT_TERMINAL_ID 1
#endif
#ifndef SPK_FEATURE_UNIT_ID
#define SPK_FEATURE_UNIT_ID 2
#endif
#ifndef SPK_OUTPUT_TERMINAL_ID
#define SPK_OUTPUT_TERMINAL_ID 3
#endif
#ifndef SPK_SELECTOR_UNIT_ID
#define SPK_SELECTOR_UNIT_ID 8
#endif
/////////////Microphone Class
#ifndef MIC_AUDIO_RATE_NUM
#define MIC_AUDIO_RATE_NUM 1
#endif
#if MIC_AUDIO_RATE_NUM == 1
#define MIC_AUDIO_RATE 48000
#else
#define MIC_AUDIO_RATE 48000
#define MIC_AUDIO_RATE_1 16000
#define MIC_AUDIO_RATE_2 44100
#endif
#ifndef MIC_AUDIO_RES
#define MIC_AUDIO_RES 16
#endif
#ifndef MIC_AUDIO_RES_2
#define MIC_AUDIO_RES_2 0//24
#endif
#ifndef MIC_CHANNEL
#define MIC_CHANNEL 1
#endif
#ifndef MIC_FRAME_LEN
#define MIC_FRAME_LEN ((MIC_AUDIO_RATE * MIC_AUDIO_RES / 8 * MIC_CHANNEL)/1000)
#endif
#ifndef MIC_PCM_TYPE
#define MIC_PCM_TYPE (MIC_AUDIO_RES >> 4) // 0=8 ,1=16
#endif
#ifndef MIC_AUDIO_TYPE
#define MIC_AUDIO_TYPE (0x02 - MIC_PCM_TYPE)
#endif
#ifndef MIC_ISO_EP_IN
#define MIC_ISO_EP_IN 3
#endif
#ifndef MIC_STR_INDEX
#define MIC_STR_INDEX 6
#endif
#ifndef MIC_INPUT_TERMINAL_ID
#define MIC_INPUT_TERMINAL_ID 4
#endif
#ifndef MIC_FEATURE_UNIT_ID
#define MIC_FEATURE_UNIT_ID 5
#endif
#ifndef MIC_OUTPUT_TERMINAL_ID
#define MIC_OUTPUT_TERMINAL_ID 6
#endif
#ifndef MIC_SELECTOR_UNIT_ID
#define MIC_SELECTOR_UNIT_ID 7
#endif
////////////CDC Class
#ifndef CDC_DATA_EP_IN
#define CDC_DATA_EP_IN 4
#endif
#ifndef CDC_DATA_EP_OUT
#define CDC_DATA_EP_OUT 4
#endif
#ifndef CDC_INTR_EP_IN
#define CDC_INTR_EP_IN 5
#endif
#ifndef MAXP_SIZE_CDC_BULKIN
#define MAXP_SIZE_CDC_BULKIN 64
#endif
#ifndef MAXP_SIZE_CDC_BULKOUT
#define MAXP_SIZE_CDC_BULKOUT 64
#endif
#ifndef MAXP_SIZE_CDC_INTRIN
#define MAXP_SIZE_CDC_INTRIN 8
#endif
#ifndef CDC_INTR_INTERVAL_FS
#define CDC_INTR_INTERVAL_FS 1
#endif
#ifndef CDC_INTR_INTERVAL_HS
#define CDC_INTR_INTERVAL_HS 4
#endif
#ifndef CDC_INTR_INTERVAL
#if defined(FUSB_MODE) && FUSB_MODE
#define CDC_INTR_INTERVAL CDC_INTR_INTERVAL_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define CDC_INTR_INTERVAL CDC_INTR_INTERVAL_HS
#endif
#endif
#ifndef CDC_INTR_EP_ENABLE
#define CDC_INTR_EP_ENABLE 0
#endif
///////////CUSTOM_HID class
#ifndef CUSTOM_HID_EP_IN
#define CUSTOM_HID_EP_IN 4
#endif
#ifndef CUSTOM_HID_EP_OUT
#define CUSTOM_HID_EP_OUT 4
#endif
#ifndef MAXP_SIZE_CUSTOM_HIDIN
#define MAXP_SIZE_CUSTOM_HIDIN 64
#endif
#ifndef MAXP_SIZE_CUSTOM_HIDOUT
#define MAXP_SIZE_CUSTOM_HIDOUT 64
#endif
#ifndef CUSTOM_HID_INTERVAL_FS
#define CUSTOM_HID_INTERVAL_FS 1
#endif
#ifndef CUSTOM_HID_INTERVAL_HS
#define CUSTOM_HID_INTERVAL_HS 4
#endif
#ifndef CUSTOM_HID_INTERVAL
#if defined(FUSB_MODE) && FUSB_MODE
#define CUSTOM_HID_INTERVAL CUSTOM_HID_INTERVAL_FS
#elif defined(FUSB_MODE) && FUSB_MODE == 0
#define CUSTOM_HID_INTERVAL CUSTOM_HID_INTERVAL_HS
#endif
#endif
#define WEBUSB_EP_IN 2
#define WEBUSB_EP_OUT 2
#define MAXP_SIZE_WEBUSBIN 64
#define MAXP_SIZE_WEBUSBOUT 64
#endif