ESP32学习笔记之蓝牙HID
The Human Interface Device(HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。
典型的应用包括:蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等;该协议改编自USB HID Protocol。
蓝牙4.0以上的HID是基于HID-over-GATT,如果蓝牙IC支持GATT,那么就可以通过修改固件来实现作为蓝牙HID设备。
蓝牙HID的一些概念
- HID Reports:Bluetooth HID devices支持三种Report:Input,Output,and Feature
- HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports;在Interrupt channel上传输的report称为asynchronous reports
- Feature Protocol总是通过通过同步的方式使用GET_REPORT和SET_REPORT的请求
Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。
Bluetooth HID Protocol Messages
消息的长度不能超过L2CAP的MTU,大小超过MTU的message将被忽略。
Message Header的格式如下:
- HANDSHAKE
该Message用来acknowledge应答SET_REPORT,SET_IDLE and SET_PROTOCOL等request。只在Control Channel上传输,只由Bluetooth HID device。
Parameter部分定义如下:
- HID_CONTROL
控制Bluetooth HID Device改变状态
Parameter部分定义如下:
- GET_REPORT
Bluetooth HID Host用来请求Bluetooth HID device的传输
Parameter部分定义如下:
- SET_REPORT
Bluetooth HID Host用来向Bluetooth HID device发起传输。
格式如下:
- GET_PROTOCOL
用来获取Bluetooth HID device的Protocol Mode,然后Bluetooth HID device response一个DATA payload说明当前的Protocol Mode,格式如下:
GET_PROTOCOL Data Definition格式如下:
- SET_PROTOCOL
用来设置Bluetooth HID device的Bluetooth HID device。格式如下:
DATA
代表一个HID payload。格式如下:
Transfers
以HID Protocol message的形式传输。
- Control Channel Transfers
分为Acknowledged和Unacknowledged两种,格式如下:
- Interrupt Channel Transfers
Interrupt IN和Interrupt OUT两种,可以在任意时刻发送。【中断嘛】
其余各层对于HID的要求
HID与L2CAP的交互如下:
参考文献:
https://www.cnblogs.com/senior-engineer/p/9842251.html
ESP32学习笔记之蓝牙HID相关推荐
- 关于esp32蓝牙模块的使用——esp32学习笔记
关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 零.前言 一.经典蓝牙BT 二.低功耗蓝牙B ...
- ESP32学习笔记(27)——BLE GAP主机端扫描
一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...
- ESP32学习笔记(一) 芯片型号介绍
ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...
- ESP32学习笔记(30)——BLE GATT服务端自定义服务和特征
一.简介 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...
- ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)
Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
- ESP32学习笔记(49)——RFID RC522使用
一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...
- ESP32学习笔记(20)——SPI(从机)接口使用
一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...
- ESP32学习笔记(19)——SPI(主机)接口使用
一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...
最新文章
- java当前月份减一个月_在java编程中怎样用%表示当前月份的上一个月和下一个月...
- 【ABAP】Native SQL
- 怎么在服务器中修改sql权限设置密码,SQL server数据库的权限设置
- D. Anton and Chess 模拟题 + 读题
- 如何为VMware创建的虚拟PC机安装Linux操作系统
- Android高手进阶:Adapter深入理解与优化
- XMLHttpRequest 学习(二)——封装一个ajax
- CCNA学习指南记录
- php ksc歌词,KSC字幕制作方法 KSC歌词编辑教程
- Cloudera Manager5.15.0安装教程,每步附图,超详细
- 转载:一字千金 句句受用
- 阿里云服务器从购买到配置全攻略
- Excel 常用技巧目录
- Google地图删除marker标点
- DevExpress之XtraReport 学习笔记
- element导航菜单添加搜索功能
- java jcmd,JVM工具_jcmd
- word打开文件出错怎么办?
- 手机PDF如何转成PPT?操作方法如何?
- 地方性自媒体如何运营?微信公众号可以做地方性自媒体吗?
热门文章
- 【逗老师带你学IT】PRTG自定义脚本获取H3C Loadbalance负载均衡链路状态
- 中华万年历大数据平台演进
- Linux 从零开始学习笔记
- 科研 | Link16数据链——信息化战争的神经中枢
- Redis如何实现分布式锁延时队列以及限流应用丨Redis源码原理|跳表|B+树|分布式锁|中间件|主从同步|存储原理
- perf-网络协议栈性能分析
- RxJava常用的操作
- Java购物车前端代码_java web实现购物车功能的java购物车代码示例代码
- 精密压接之曲柄连杆模型计算(含MATLAB仿真+博途SCL源代码)
- c语言中printf%12d,C语言系列之printf和%12d的用法(三)