蓝牙 - LE的Connection Parameters设定

BLE链接参数设定

两个BLE设备建立链接后,可以更改链接参数。Central和Peripheral设备均可发送更新链接参数请求。这个在很多时候是有必要的,因为广播+扫描的建立链接过程,和链接保持的过程,对链接参数的要求是不同的。比如设置连接的最小和最大周期,就可以有效的调整通讯的性能和功耗。

更改链接参数的过程如下:(我的理解)

1,外围设备发送广播数据,中心设备扫描并发现外围设备,然后建立连接。

2,连接成功后,由一方发起连接参数更改操作,即从local host发送LE Connection Update command给local controller。

3,本地controller将此命令传送给Remote device,Remote controller发送HCI_LE_Remote_Connection_Parameter_Request事件给Remote host。

4,Remote host收到此事件,要发送LE Remote Connection Parameter Request Reply command给Remote controller。

5,Remote controller将命令传给local controller,此时请求和回应已完成,local controller可以执行连接参数更改。

6,连接参数更改执行,local controller发送HCI_LE_Connection_Update_Complete Event给local host。

7,同时,local controller也会通知remote controller连接参数更改,remote controller发送HCI_LE_Connection_Update_Complete Event给remote host。

8,连接参数修改成功。

连接参数里,由Connection Interval Min和Max值,表示建议的是这个连接间隔时间的范围。请求命令和回应事件里,都是这两个参数。

完成请求和回应操作后,执行连接参数更改后,发出的事件里的参数,是Connection_Interval,表示一个确定的用于这个连接的连接间隔。

在此过程中涉及的HCI Events&Commands如下:

在Core_v5.3.pdf中,Vol 4: Host Controller Interface -> Part E: Host Controller Interface Functional Specification -> 7 HCI commands and events -> 7.7 Events和7.8 LE Controller commands中,有与BLE连接参数管理相关的事件和命令。

  • 7.8.31 LE Remote Connection Parameter Request Reply command

the Central's Host and the Peripheral's Host均使用该命令回复 HCI_LE_Remote_Connection_Parameter_Request 事件。这表明Host已接受远程设备更改连接参数的请求。

Interval_Min 和 Interval_Max 参数定义了允许的最小和最大连接间隔。Interval_Min 参数不得大于 Interval_Max 参数。

Max_Latency 参数应定义连接允许的最大外设延迟。

Timeout 参数应定义 LE 链路的链路监控超时(supervision timeout),以毫秒为单位。超时时间应大于 (1 + Max_Latency) × Subrate_Factor × Interval_Max × 2,其中 Interval_Max 以毫秒为单位,Subrate_Factor 是连接的当前子速率系数。

Min_CE_Length 和 Max_CE_Length 是信息参数,为控制器提供有关连接事件的预期最小和最大数据长度的提示。Min_CE_Length 应小于或等于 Max_CE_Length。

链路层选择的实际参数值可能与主机通过该命令提供的参数值不同。

  • 7.8.18 LE Connection Update command

HCI_LE_Connection_Update 命令用于更改 ACL 连接参数。Central and Peripheral设备均可发出该命令。

参数含义和上面7.8.31命令一样的。

7.8.18发出后,会收到HCI_LE_Connection_Update_Complete事件,即7.7.65.3 LE Connection Update Complete event事件。

  • 7.7.65.3 LE Connection Update Complete event

HCI_LE_Connection_Update_Complete 事件用于指示Connection Update procedure已完成。

如果Host发出 HCI_LE_Connection_Update命令,或在对等设备发出请求后更新了连接参数,则应发出该事件。如果在对等设备发出请求后没有更新参数,则不应发出此事件。

注:如果中心(central)控制器决定根据该连接的允许连接间隔范围更改连接间隔,则可自主发布该事件。

注:该事件返回的参数值可能与主机通过 HCI_LE_Connection_Update 命令(第 7.8.18 节)或 HCI_LE_Remote_Connection_Parameter_Request_Reply 命令(第 7.8.31 节)提供的参数值不同。

  • 7.8.12 LE Create Connection command

HCI_LE_Create_Connection 命令用于创建 ACL 连接,并将本地设备设置为 "Central "角色,连接到可连接的发出广播的设备。也就是说发起连接的设备就是Central Device。

在发起连接时,参数里也带有连接参数,这也表明发起连接的central设备决定了一开始的链接参数。

相关推荐
binbinaishijie883 小时前
Matlab读取CSV数据并处理实战指南:从入门到精通
大数据·数据库·其他·matlab
布朗熊的吉他梦8 小时前
空间的鸣响与价值的重构:VEAZEN费森KP580对比罗兰FP18、雅马哈P45,入门立柜电钢琴的“本质之争”
经验分享·其他
百***86558 小时前
Google广告投放:代理服务vs自建服务器,哪条路径更划算
其他
老陈头聊SEO8 小时前
AI技术赋能SEO关键词优化策略新路径解析
其他·搜索引擎·seo优化
t057772 天前
骑行防扎胎攻略!维乐ANGEL GLIDE坐垫伴骑无忧
其他
老陈头聊SEO2 天前
AI驱动的SEO关键词策略优化全景解析
其他·搜索引擎·seo优化
罗光记2 天前
《人工智能安全治理研究报告(2025年)发布
数据库·其他·百度·新浪微博
李长太2 天前
如何用 Obsidian 记录日常笔记
其他
chuangrong1233 天前
地面地贴:一场静默革命,重塑人流秩序的智慧艺术
其他
_Lzk666888_3 天前
洛谷用户2002780求关注
c++·其他