Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之五
问题点 7: 关于BLE HIDS data 写入到Android 节点"/dev/uhid"的flow;
关于BLE中的HIDS,首先我们需要理解好角色的定义:
GATT Server 作为HID Service 提供者,对应HID Device角色;
GATT Client 作为BLE的主动连接发起方,对应HID Host角色;
Android BT中的BlueDroid 部分,关于HID Host Le的处理和BR/EDR 的HID Host 同一个文件夹下,为bta_hh_le.cc:
需注意的是:HIDS 中的Report Descriptor是通过BLE 的”Read Request”指令获取到;
如游戏手柄的按键信息,是通过Notification 形式发送到GATT Client端(手机端)
当收到Notification时,最终通过bta_hh_co_write写report到Android;
-->当收到Notification时,触发API bta_hh_le_input_rpt_notify,内部直接调用
bta_hh_co_data,最终通过bta_hh_co_write写report到Android 节点"/dev/uhid";
比较特别的是:其在收到的Report Len中,自行附上了一个Report ID值;
附上Report ID值后,基本和BR/EDR HID一样的数据格式“Report ID + Data”
最后总结:
BLE的HID操作Android 节点"/dev/uhid"实现,相比BR/EDR 的HID:其没有GET_REPORT等指令操作,只需Open后,通过API bta_hh_co_send_hid_info 把Report Map 写入到Android 节点,然后再把 UUID 为0x2A4D 所对应的Value Handle 接收到的Notification 通过 API bta_hh_co_data写入,但这里写Report Data和BR/EDR 的HID的最大差异是:Notification中的Report Data 是不带Report ID的,需要我们在收到HID Report 的Notification后,自行组合为“Report ID + Report Data”形式再调用API bta_hh_co_data;
而Report ID的识别是在Report Map中解析得到,我们目前使用“Report ID +Data长度”形式进行识别,例如:加入当前我们识别到两个Report ID 分别对应不同的长度,那么在收到Notification时通过匹配Data长度来决定使用哪一个Report ID(如果Report Map中不同Report ID 所对应的Data 长度一致,将无法识别,但这里没有其他办法进行识别);
Note:如果Report MAP 中没有Report ID,此时需默认Report ID 为0;
Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之五相关推荐
- Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之一
BLE 的HIDS服务,可以理解为BR/EDR HID在BLE 上的简化版,因BLE的特殊性,BR/EDR HID的部分feature在HIDS 中被移除. 本文将讨论Android 蓝牙BLE 中H ...
- Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow之二
问题点4:Android BLE具体连接flow 并问询DB的API flow 之第一阶段问询: 当前确认原生BT当作为GATT Client 连接上GATT Server时,在连接上后会有自动启动问 ...
- Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之四
问题点6:Android BLE具体连接flow 并问询DB的API flow 之第三.四阶段问询: -->此时开始进行第三阶段: 通过"Read By Type Request&qu ...
- Android BLE 蓝牙开发指南(三)外围设备端开发详解
Android BLE开发指南(一)入门基础 Android BLE开发指南(二)中心设备端程序开发详解 这篇文章将会详细讲解低功耗蓝牙外围设备端程序开发的主要流程.对于Android开发者而言,或许 ...
- android手机上的ancs,Android BLE开发之操作IOS ANCS
前言 之前写过两篇有关于ANCS的文章,最近一段时间老是有人问关于得到ANCS服务的问题,因为IOS ANCS不同于其他的Peripheral一样对周边所有的蓝牙设备广播自己,而是仅有连接上配对并连接 ...
- android BLE Peripheral 手机模拟设备发出BLE广播 BluetoothLeAdvertiser
android 从4.3系统开始可以连接BLE设备,这个大家都知道了.iOS是从7.0版本开始支持BLE.android 进入5.0时代时,开放了一个新功能,手机可以模拟设备发出BLE广播, 这个新功 ...
- Android BLE蓝牙详细解读
代码地址如下: http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能 ...
- 快速接入 Android BLE 开发的基础框架
代码地址如下: http://www.demodashi.com/demo/12092.html * Android BLE基础操作框架,基于回调,操作简单.包含扫描.多连接.广播包解析.服务读写及通 ...
- Android BLE(3) ---FastBle解析
Android BLE开发详解和FastBle源码解析 项目中有用到了蓝牙相关的功能,所以之前也断断续续地针对蓝牙通信尤其是BLE通信进行了一番探索,整理出了一个开源框架FastBle与各位分享经验. ...
最新文章
- File类 读取文件
- SQL SERVER 数据库邮件配置
- C4C销售订单行项目价格维护方法
- Business Component(BC)和Business Object(BO)
- android 9坚果r1,坚果R1、小米MIX2S、一加6对比评测 骁龙845旗舰怎么选?
- Delphi 操作Excel方法大全
- r语言入门——颜色转换
- c语言程序设计吉林大学康辉目录,[吉林大学康辉] 经典C语言程序设计视频教程 51讲...
- MAC 下Sublime text 同时编辑多行内容
- Redis设计与实现——数据结构
- MySQL将表中的价格全部加五_MySQL浅见(五)修改表
- java 奥运五环_[求助]求奥运五环 java代码
- 什么是模块化 ? 模块化的好处
- 品味人生(TALK ABOUT LIFE)
- edge浏览器启动页面修改后依然跳转到其他网页
- 数据分层详解ODS、DWD、DWM、DWS、ADS
- 怎样更换计算机开机画面,如何给win10电脑更换一个漂亮的开机界面
- Android开发常用框架
- weblogic中间件漏洞总结
- 组合数学-利用挡板法解排列组合题