USB 音量控制 HID 报告描述符时,我们可以按照以下格式进行编写:
// 音量控制 HID 报告描述符
const uint8_t hid_report_descriptor[] = {
// 通用 HID 描述符 (实际可以根据需要添加其他描述符)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
// 音量减键和音量加键
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
0x09, 0xe9, // USAGE (Volume Decrement)
0x09, 0xea, // USAGE (Volume Increment)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x02, // INPUT (Data,Var,Abs)
// 播放键
0x09, 0xb0, // USAGE (Play)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
// 按键释放
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x01, // INPUT (Const,Array,Abs)
0xc0 // END_COLLECTION
};
以上报告描述符将音量减键、音量加键和播放键的按下分别定义为一个字节的数据。其中0x1表示音量减键按下,0x2为音量加键按下,0x03为播放键按下。0x04为按键释放。
//-----------------------样例2---------------------
#define REPORT_ID_ONE 0x01
#define REPORT_ID_TWO 0x02
#define UDE_HID_NEXTFILE 0x0100
#define UDE_HID_PREVFILE 0x0200
#define UDE_HID_PLAYPAUSE 0x0400
#define UDE_HID_MUTE 0x0800
#define UDE_HID_STOP 0x0010
#define UDE_HID_PROMOTE 0x0020
#define UDE_HID_DEMOTE 0x0040
#define UDE_HID_CART 0x0080
#define UDE_HID_VOLUP 0x0001
#define UDE_HID_VOLDOWN 0x0002
#define UDE_HID_CENTER 0x0004
#define UDE_HID_NONE 0x0008
#define UDE_HID_WHEEL_UP 0x0001
#define UDE_HID_WHEEL_DN 0x00FF
//HID report, consumer control
// AT(.usbdev.com.table)
const u8 desc_hid_report[54] = {
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
0x09, 0x01, // USAGE (Consumer Control)
0xa1, 0x01, // COLLECTION (Application)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x0A, // REPORT_COUNT (10)
0x09, 0xb5, // USAGE (Scan Next Track)
0x09, 0xb6, // USAGE (Scan Previous Track)
0x09, 0xcd, // USAGE (Play/Pause)
0x09, 0xe2, // USAGE (Mute)
0x09, 0xb7, // USAGE (stop)
0x0A, 0x5B, 0x02, // USAGE (Promote)
0x0A, 0x5C, 0x02, // USAGE (Demote)
0x0A, 0x62, 0x02, // USAGE (Cart)
0x09, 0xe9, // USAGE (Volume Up)
0x09, 0xea, // USAGE (Volume Down)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x0B, // USAGE_PAGE (Telephony)
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x21, // Center
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x05, // REPORT_SIZE (5)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0xc0, // END_COLLECTION
};
其中功能按键的宏定义为:
#define UDE_HID_VOLUP 0x0001 音量加
#define UDE_HID_VOLDOWN 0x0002 音量减
#define UDE_HID_PLAYPAUSE 0x0400 播放暂停