USB 音频设备HID报告描述符样例

 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    播放暂停

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值