[BLE--GAP]GAP Service及其使用
来源:互联网 发布:system32权限知乎 编辑:程序博客网 时间:2024/05/16 17:06
简述
GAP本身是一个Profile,并不是Protocol,其作用是定义了如何来使用蓝牙的Host的各层的Protocol。GAP中有一个GAP Service,是用来表明设备的基本信息的,只要作为GATT Server,就需要实现这个GAP Service。
GAP Service
先看一张图,对GAP Service有个整体了解:
从此图可看到,BR/EDR可以选择实现GAP Service的Device Name和Appearance属性。对于BLE而言,是分角色进行对待的,Broadcaster和Observer不需要GAP Service。对于Peripheral和Central角色,则可能会需要实现其中部分或全部实现:
Peripheral
Device Name和Appearance必须要实现,Peripheral Preferred Connection Parameters是可选的,而Central Address Resolution则要看Link Layer Privacy是否支持。
Central
Device Name和Appearance必须要实现,Peripheral Preferred Connection Parameters不需要,因为是针对peripheral的,而Central Address Resolution则要看Link Layer Privacy是否支持。
多GAP Role模式下
对于支持多GAP Role的:GAP Service必须支持所有Role的需求,即为所有Role需求的总和。而当操作于不支持某些Characteristic的Role下时,设备也必须继续暴露出其所支持的所有GAP Service的Characteristics。
Characteristic介绍
GAP Service的4个Characteristic的介绍。
Device Name
虽然这里规定Device Name长度可以到248字节,但一般不会需要那么长的名字,一般会建议最长到达40字节就好了。
Appearance
Appearance即表明这是个什么设备,如鼠标?键盘?等等,用2个字节可以表示很多种类的,某个代码对应某个具体的Appearance表示,这个需要参考SIG的Assigned Numbers,上面有列表的。另外,Device Name和Appearance都是表示本地设备属性的,因此只会有一份实例。对于多GAP Role的状况,应当还是只会维护一份Device Name和Appearance,不然一个设备有多个名字和多个Appearance,就不好表示了。
Peripheral Preferred Connection Parameters(PPCP)
主要是表明Peripheral设备这边比较偏好的一个连接参数,包括:
- Minimum connection interval
- Maximum connection interval
- Slave Latency
- Connection Supervision timeout multiplier
关于连接参数的介绍涉及的地方很多了,这里不再赘述。其实最关注的还是在哪使用这个参数?如何使用呢?我的想法是,这个是供Central来获知的。不过有点略为奇怪,Central在链路建立时是通过CONN_REQ来设置好连接参数的,而此时两者并未建立连接,因此Central此时并不同通过ATT_Read来获取Peripheral上的这个PPCP,难道是建立连接后Central有需要知道这个PPCP的必要?因为Peripheral也有直接更新连接参数的过程的啊,这样看来具体应用估计也不是必要吧。
Central Address Resolution
这个看来是BT 4.2添加的新特性了。因为在BT 4.2中,为了提高BT的安全性(原来SMP的方式是可以破解的),加入了Random Address的内容。这里的Central Address Resolution就是用来表明暴露GAP Service的这个Central设备,是否支持Resolvable Private Address(RPA)的。
Peripheral设备通过读对方Central设备的GAP Service的Central Address Resolution,就能知道其是否支持RPA了,如果其支持,那Peripheral就可以在自己的Directed Advertisement中使用RPA了。如果不支持,那还是只能使用public地址了。
关于蓝牙的public地址,private地址,请参考设备蓝牙地址这篇文章。
来看下Central Address Resolution的内容:
一份实例
最后补充下,上面的GAP Service,对于一个设备而言,应当是只有一份实例的,即不管是多GAP Role设备还是就只支持一个GAP Role,都只需要维护一份GAP Service,而该Service中的Characteristics都只有一份实例的。
- [BLE--GAP]GAP Service及其使用
- BLE GAP 相关知识
- Gap
- GAP
- 【BLE】-CC2541 GAP API 介绍
- BLE蓝牙GAP、GATT介绍
- TI BLE研究---- 蓝牙协议栈(GAP)
- [BLE--GAP]Advertising中信息的传递
- TI-BLE协议栈的GAP
- BLE GAP广播(Advertising Packet)格式
- [BLE]低功耗蓝牙之GAP、GATT
- TI-BLE协议栈的GAP
- BLE 协议栈之GAP与GATT层小小一瞥
- Generation Gap
- GAP Analysis
- 4479. Gap
- Phone Gap
- UNRESOLVABLE GAP
- 从iOS到Apple Watch:用WatchKit创建新型可穿戴应用——互动出版网
- 数据结构之冒泡排序java实现
- this product is covered by one or more of the following
- Android Data Storage(数据存储)值External Storage
- Android视频图片缩略图的获取
- [BLE--GAP]GAP Service及其使用
- A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 25427 (pool-1-thread-2)
- 使用AFNetworking加载网络图片
- JavaScript:call,apply,bind的用法
- linux insufficient permissions for device(解决adb shell问题)
- 启动ssh服务时,提示Could not load host key: /etc/ssh/ssh_host_rsa_key
- 统计字符串中每个字符出现的次数
- jQuery select年月日(生日)选择器
- C语言数组指针定义方法