【转载】蓝牙人机接口设备协议(HID)概念以及封包格式介绍

零. 概述

主要介绍下蓝牙协议栈(bluetooth stack)传统蓝牙音频协议之蓝牙人机接口设备协议(HID)概念介绍

HID协议有很多应用,比如蓝牙鼠标,键盘,手柄,自拍杆等都会用到HID协议!

 

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

蓝牙交流扣扣群:970324688

Github代码:https://github.com/sj15712795029/bluetooth_stack

入手开发板:https://shop220811498.taobao.com/category-1542116976.htm?spm=a1z10.5-c-s.w4010-22329603913.7.39ca7dbe2EA0K3&search=y&catName=%C0%B6%D1%C0%BF%AA%B7%A2%B0%E5#bd

蓝牙学习目录https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

二. HID概念

The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。该协议改编自USB HID Protocol。

1. HID角色

A Bluetooth HID device is a device providing the service of human or other data input and output to and from a Bluetooth HID Host. Examples of Bluetooth HID devices are keyboards, mice, joysticks, gamepads, remote controls, and also voltmeters and temperature sensors.

A Bluetooth HID Host is a device using or requesting the services of a Bluetooth HID device. Examples would be a personal computer, handheld computer, gaming console, industrial machine, or data-recording device.

简单解释下角色,bluetooth HID分为host/device两个觉得,拿一个鼠标跟电脑(或者插在电脑的dongle)举例,蓝牙鼠标就是hid device角色,电脑(或者插在电脑的dongle)就是hid host觉得,同样的游戏主机跟游戏手柄,那么游戏手柄是hid device角色,游戏主机是hid host角色。

2. HID report

蓝牙HID report分为三种:

1) Input report:从hid device发送给hid host的封包

2) Output report:从hid host发送给hid device的封包

可以看出以上两种封包的input/output的方向都是就hid host而言的,而且要求低时延

3) Feature report:特性封包,是双向的

3. HID逻辑链路

HID有两条逻辑链路:

1) HID Control:这个通道主要用于传输控制封包,在这个通道传输的封包称为同步封包(synchronous reports),L2CAP的psm为0x0011

2) HID Interrupt:在这个通道传输的封包不需要确认,所以称为异步封包(asynchronous reports),L2CAP的psm为0x0013

三. HID封包格式命令介绍

HID的封包格式header field只有一个byte,4bit的message type,4bit的parameter格式如下:

其中message type如下:

其中灰色部分为舍弃掉了,以后不再使用,所以我们代码中定义如下:

1. HANDSHAKE封包

这个消息是只能从hid devicecontrol channel发出,用于回复以下封包

1)SET_REPORT, SET_IDLE and SET_PROTOCOL requests

2)GET_REPORT, GET_PROTOCOL and GET_IDLE requests if an error is detected in

the parameters of the initial request

3)a request with an unsupported message type

具体的header参数如下:

2. HID_CONTROL封包

这个是HID control封包,格式如下:

其中NOP/HARD RESET/SOFT RESET被舍弃了,不再使用,我们来介绍下SUSPEND/EXIT SUSPEND/VITUAL_CABLE_UNPLUG

1) SUSPEND/EXIT SUSPEND

这个是hid host发送给hid device进入省电模式/退出省电模式的命令,比如hid host发送给hid mouse发送SUSPEND的时候,mouse关闭LED等进入省电模式

或者hid host发送给hid keyboard SUSPEND的时候,keyboard降低扫描按键的频率

2)VITUAL_CABLE_UNPLUG

这个命令是双向命令,hid host可以发送给hid device,同样hid device也可以发送给hid host,收到后断开连线

3 .GET_REPORT封包

这个封包是hid host发送给hid device的消息。hid device接受到这个封包后,需要在control通道上回复包含requeset信息的DATA type封包

4. SET_REPORT封包

这个封包是hid host发送给hid device的消息。

5. GET_PROTOCOL封包

用来获取Bluetooth HID device的Protocol Mode,然后Bluetooth HID device response一个DATA payload说明当前的Protocol Mode。

6. SET_PROTOCOL封包

7. DATA封包

</article>
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt低功耗蓝牙HID是指在Qt开发框架上实现的低功耗蓝牙Human Interface Device(HID)技术。 低功耗蓝牙是一种在无线通信中使用的低功耗蓝牙技术,它专注于提高设备的功耗效率,延长电池寿命,并支持在低功耗情况下进行可靠的通信。 HID是一种标准的通信协议,用于连接和通信人机接口设备,例如键盘、鼠标、游戏手柄等。它允许设备通过无线连接与计算机或其他设备进行通信。 在Qt框架中,可以使用Qt Bluetooth模块来实现低功耗蓝牙HID功能。该模块提供了一组API,用于实现与低功耗蓝牙设备的通信。开发人员可以利用这些API创建和管理低功耗蓝牙连接,发送和接收数据,以及处理与HID设备的交互。 使用Qt低功耗蓝牙HID可以实现许多应用,例如通过蓝牙连接智能手机和电脑,使手机可以充当电脑的键盘或鼠标;或者设计专门的自定义HID设备与计算机进行通信等。 总之,Qt低功耗蓝牙HID提供了一种方便的方式来实现与低功耗蓝牙HID设备的通信,扩展了Qt开发框架在无线通信领域的应用范围。开发人员可以使用这些功能来创建各种具有低功耗需求的无线设备应用程序。 ### 回答2: Qt低功耗蓝牙HID是指使用Qt开发平台创建的支持低功耗蓝牙HID人机接口设备)的应用程序。低功耗蓝牙HID是一种无线通信技术,用于连接各种外部设备,例如键盘、鼠标和游戏控制器等,与计算机或其他设备进行交互。 Qt作为一个跨平台的开发框架,提供了一系列的API和工具,以便开发人员可以方便地使用低功耗蓝牙HID功能。通过Qt,开发人员可以轻松地创建适用于不同操作系统和设备的应用程序,无需重复编写代码。 使用Qt开发低功耗蓝牙HID应用程序,可以实现以下功能: 1. 设备搜索与连接:通过Qt提供的API,应用程序能够扫描附近的低功耗蓝牙设备,并与目标设备建立连接。 2. 数据传输:应用程序可以通过低功耗蓝牙HID传输数据,例如从键盘或鼠标接收输入数据,并将其发送到计算机或其他设备。 3. 设备管理:使用Qt,应用程序可以管理已连接的低功耗蓝牙设备,例如连接、断开连接和配置设备参数等。 Qt低功耗蓝牙HID的开发流程相对简单,开发人员只需通过Qt提供的API进行设备搜索、连接和数据传输等操作即可。同时,Qt提供了丰富的示例代码和文档,以帮助开发人员更快地上手。 总之,Qt低功耗蓝牙HID为开发人员提供了一个方便、快捷的工具,用于创建支持低功耗蓝牙HID的应用程序,使用户可以更好地与外部设备进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值