蓝牙HID协议笔记

转自:http://blog.sina.com.cn/s/blog_69b5d2a50101emll.html

1.概述

    The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。
    
2.一些概念
(1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output, and Feature。
(2)HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports ;在Interrupt channel上传输的report称为asynchronous reports。
(3)Feature reports are always transferred synchronously using GET_REPORT or SET_REPORT requests。
(4)Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。 
 
3.Bluetooth HID Protocol Messages
这些message不能超过L2CAP的MTU,大小超过MTU的message将被忽略。
Message Header的格式如下:

(1)HANDSHAKE

该Message用来acknowledgeSET_REPORT, SET_IDLE and SET_PROTOCOL等request。只在Control Channel上传输,只由Bluetooth HID device。
Parameter部分定义如下:

(2)HID_CONTROL
控制Bluetooth HID device改变状态。
Parameter部分定义如下:

(3)GET_REPORT
Bluetooth HID Host用来请求Bluetooth HID device的传输。
定义如下:

(4)SET_REPORT
Bluetooth HID Host用来向Bluetooth HID device发起传输。
格式如下:

(5)GET_PROTOCOL
用来获取Bluetooth HID device的Protocol Mode,然后Bluetooth HID device response一个DATA payload说明当前的Protocol Mode。
格式如下:

GET_PROTOCOL Data Definition格式如下:

(6)SET_PROTOCOL
用来设置Bluetooth HID device的Bluetooth HID device。格式如下:

(7)DATA
代表一个a HID payload。格式如下:

4.Transfers
以HID Protocol messages的形式传输。
(1)Control Channel Transfers
分为Acknowledged和Unacknowledged两种,格式如下:

(2)Interrupt Channel Transfers
Interrupt IN和Interrupt OUT两种,可以在任意时刻发送。【中断嘛】
 
5.其余各层对于HID的要求
HID与L2CAP的交互如下:

最新文章

  1. HashTable, HashMap, LinkedHashMap, ConcurrentHashMap
  2. Swagger+Spring mvc生成Restful接口文档
  3. HDU pog loves szh II (数的处理)
  4. OpenCV 连接 Android IP摄像头
  5. [转]Java远程方法调用
  6. Java泛型概念
  7. 问题记录-运行Tomcat,项目程序没有响应
  8. 【百度之星2014~初赛(第二轮)解题报告】JZP Set
  9. docker遇到超时
  10. SharePoint 修改用户属性User Name
  11. Android 开发 创建WiFi、WiFi热点 ---开发集合
  12. union的含义
  13. CorelDRAW中如何复制对象属性详解
  14. 距离为K的节点 All Nodes Distance K in Binary Tree
  15. BusyBox init工作流程
  16. DWORD类型
  17. Memcached安装以及PHP的调用
  18. Tornado 类与类组合降低耦合
  19. win10系统重装
  20. spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 集成通用maper,与分页插件:

热门文章

  1. 【转】cJSON 源码阅读笔记
  2. 【洛谷P1376】机器工厂
  3. BRIEF特征简介
  4. 数据类型、位运算、sizeof()函数
  5. PHP iconv 解决utf-8和gb2312编码转换问题
  6. Leetcode 496. 下一个更大元素 I
  7. 在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集
  8. JAVA记录-基础常识
  9. 浅析 Bigtable 和 LevelDB 的实现
  10. 自动部署tomcat,并以普通用户身份运行 for centos6