首页 > 其他分享 >BLE中GAP层的扩展广播和周期性广播

BLE中GAP层的扩展广播和周期性广播

时间:2023-08-16 15:46:53浏览次数:41  
标签:Header 扩展 信道 GAP 周期性 广播 BLE 通道

GAP层的扩展广播和周期性广播

介绍

​ 在Bluetooth 5.0规范中,针对广播做了更新。在传统(Legacy)广播的基础上,新增了扩展(Extended )广播和周期性(Periodic)广播,而周期性广播是扩展广播的一个应用。

扩展广播

广播通道

传统广播我们知道,广播通道只有 37,38,39 这三个通道

而扩展广播再次基础上做了修改,扩展广播使用了两组广播通道:

  • 主要广播通道(primary advertising channel):和传统广播一样也是37,38,39三个信道。
  • 次要广播通道(secondary advertising channel):也叫辅助广播通道,就是把以前剩余的37个连接信道拿过来当广播通道用。

可以看到在广播信道方面,扩展广播最主要是扩展了广播信道,让蓝牙广播包能在以前的连接信道上进行发送。

扩展广播 PDU

在传统的广播PDU基础上,新增了如下PDU。

  • ADV_EXT_IND - 主要广播通道,支持不可连接的,定向扫描的事件。
  • AUX_ADV_IND - 次要广播通道上广播数据的第一个片段,不可连接的、定向扫描的。
  • AUX_SYNC_IND - 次要广播通道,用于周期性广播,以一定间隔发送不定向的数据包。
  • AUX_CHAIN_IND - 发送剩余的数据。

扩展广播的广播格式统一如下:

可以看到,其中

  • AdvData:广播数据比传统广播的广播包进行了扩容,数据量增加了 8 倍多,可传输数据量由 31 字节增长到了 255 字节。

  • AdvMode:用于区分广播类型。

  • Extended Header/Extended Header Length:

​ 这里的Header比较复杂,我这里只做简单介绍下:

  1. 这个Header长度不是固定的,长度由最开始的Length参数给出。
  2. Header包含的内容如上图所示,但这里并非要求每个参数都要包含在Header里面。一个Header包含什么参数,由Extend Header Flags位给出。Flags是一个八位比特参数,每个比特都对应后续参数是否包含在Hearder里,1则是存在,0则是不存在。每个位对应关系如下:

  1. AdvA、TargetA这里和传统广播一样不作赘述。
  2. CTEInfo是用于AOA/AOD定位用的,包含调制信息,与通信本身无关。
  3. AdvDataInfo内部包含广播集ID和广播数据ID。广播集ID用于区分广播包是哪一个集合的,因为扩展广播的PDU都用同一种空口包结构,因此需要单独有一个位来做区分;而数据ID用于给主机扫描时区分广播数据是不是重复的,如果数据有更新,这个位会进行更新。
  4. AuxPtr这个位比较复杂,前面我们说过扩展广播有辅助广播信道。但37个信道那么多,一开始扫描端是不知道会在那个辅助广播信道,什么时候广播的。所以扫描端会先在主广播信道上扫描,扫到主广播包后从这个AuxPtr位中获取到辅助广播包会出现在哪个信道,什么时候出现。
  5. SyncInfo这个位比较长,主要是用于周期性广播。这个我们后面将周期性广播在介绍。
  6. TxPower发射功率,这个就不说了。

小结

​ 这里可以小结下,拓展广播的提出,本质上是为了解决传统广播数据包太小,无法传递太多信息的痛点。并且通过复用次要广播信道,使得广播的抗干扰能力有了一定的提升,对于一些Beacon类应用可以说非常实用。

周期性广播

​ 我们知道,传统广播为了降低碰撞概率,会在每个广播事件的末尾处加了一个 0 ~ 10 ms 的随机延时。这种做法对于信道资源的利用是非常浪费的,同时也会使得接收机要多花而外的接收窗口才能接收到广播,这样也会增加接收机的能耗。为了更好的满足低功耗蓝牙这个概念,SIG在扩展广播的基础上设计了一种新的广播方式,叫周期性广播。

基本原理

​ 周期性广播的原理非常简单,那就是先在主广播信道上,用带延迟的主广播PDU(主广播通道少,还是要考虑碰撞问题)做时钟和信道数据同步。然后在次要广播信道(次要广播通道多,可以不用考虑碰撞问题)上做时间准确的广播。

​ 这里同步的参数包含:

  • 次要广播包出现的时刻(offset time)
  • 周期性广播的间隔(Interval)
  • 周期性广播生命周期内使用的信道(secondary channel map)
  • 接入地址(Access Address),等等

这些参数会在前面讲到的主广播包PDU中的SyncInfo位里传递给扫描主机。

Periodic advertising sync transfer (PAST)

​ 在周期性广播的基础上,SIG又提出了一个新的广播概念。上述周期性广播时我们可以看出来主机扫描与从机广播需要有一个在主广播通道上的同步的过程。但是有一些扫描设备不想去进行同步,想要借助其他已经同步过的设备来同步广播者,直接在次要广播信道上去获取广播数据,从而进一步降低功耗。思路如下:

​ 这里PAST应用场合比较狭窄,具体说明可以参考SPEC中介绍,目录为BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 6, Part B 5.1.13 Periodic Advertising Sync Transfer procedure介绍。

总结

​ 其中无论是扩展广播还是周期性广播,其实都可以看到有一个根本需求在里面。那就是低功耗蓝牙需要一种类似于UDP协议那样,纯发纯收,无需应答的高效传输方案。为了提高效率,SIG增加了PDU长度,去掉了随机延迟。为了降低碰撞概率又扩展了广播信道。以我来看,这项技术应该更多是为了后面的Beacon定位做准备了。

标签:Header,扩展,信道,GAP,周期性,广播,BLE,通道
From: https://www.cnblogs.com/simpleGao/p/17635243.html

相关文章

  • BLE中PHY层的LE Coded技术
    BLE中PHY层的LECoded技术介绍​ 在BLE的PHY中,提及到了调制技术中有一个叫LECoded的技术,还提到了一个S参数。这里我们来介绍下这个LECoded技术是什么东西。基本原理​ LECode技术本质上是一个扩频技术,他的原理为通过一个扩展因子S,对原始数据进行扩展。什么意思呢?我们通过......
  • 红帽RHCE考题总结练习(8.0 ansible)
    本文是红帽RHCE考题的总结,个别题目写了多种步骤。一、安装和配置ansible题目:按照下方所述,在控制节点bastion.lab.example.com上安装和配置Ansible:安装所需的软件包创建名为/home/devops/ansible/inventory的静态清单文件,以满足以下要求:servera是dev主机组的成员s......
  • CF1858C Yet Another Permutation Problem 题解
    思路这个题是一个简单的构造题。竟然比T2简单,也是少见我们可以首先从\(1\)开始不断乘以\(2\),像这样:\(1,2,4,8,16\cdots,2^x\),直到什么时候超过\(n\)就停止。这样相邻两个数字就可以凑出\(1,2,4,6,\cdots,2^{x-1}\),保证两两不同。然后我们可以从\(3\)开始不......
  • C++ 中的 map, unordered_map, cc_hash_table, gp_hash_table 简记
    做题时,常常会用到查重操作,可以使用STL中的map与unordered_map,也可以使用“平板电视”中的cc_hash_table和gp_hash_table实现。\(\texttt{map}\)map的内部实现是红黑树,插入、查找元素的时间复杂度都是\(O(\logn)\)。map<int,bool>m;intn;cin>>n;for(inti=1;......
  • CF1858C Yet Another Permutation Problem 题解
    杂言赛时想到做法,结果调code把自己心态调炸了,所以来写一篇题解(恼)。另:此题与P9345夕阳西下几时回几乎相同,可以此练手。另另:本题多测,多测不清空,爆零两行泪。题意翻译\(a_1,a_2,\dots,a_n\)是\(1\)至\(n\)的一个排列,记\(d_i=\gcd(a_i,a_{i\bmodn+1})\)。构造一个......
  • ansible剧本
    ansible剧本简单剧本----name:这是一个安装nginx的剧本hosts:webtasks:-name:01安装nginxyum:name:nginxstate:installed-name:02启动nginxsystemd:name:nginxstate:started剧本的高级特性高级特性是为了简化剧本比如,创建10个系统的用户不用循环......
  • CF776D The Door Problem
    题目大意给定门和钥匙的数量,每把钥匙控制\(k_i\)扇门,每扇门被两把钥匙控制。给定初始时每扇门的状态,求是否存在一种方法使得所有的门都打开。思路扩展域并查集。考虑分类讨论:对于开着的门,要么两把钥匙都用,要么两把钥匙都不用;对于关着的门,两把钥匙只能用一把。那么我们......
  • 药品的GMP、GLP、GCP、GAP、GSP、GDP、GPP、GUP
    GMP是GoodManufacturingPractice的简称,即药品生产质量管理规范。检查对象是:①人;②生产环境;③制剂生产的全过程。"人"是实行GMP管理的软件,也是关键管理对象,而"物"是GMP管理的硬件,是必要条件,缺一不可。GMP的三大要素是:①人为产生的错误减小到最低;②防止对医药品的污染和低质量医药......
  • Ansible 批量100台服务器添加 Crontab
    Ansible 是使用Python开发的自动化运维工具。它可以配置管理,部署软件并编排更高级的任务,例如持续部署或零停机滚动升级。Ansible可以用来管理crontab。Crontab 是一个用于在Unix和Unix-like操作系统上执行定期任务的工具,它允许用户在预定的时间间隔内自动运行命令或脚本......
  • Vue进阶(幺伍贰):el-table-column :key 应用
    (文章目录)一、前言在前端项目开发过程中,el-table展示的结果列使用组件形式引入,其中某些字段通过:formatter方法转码,结果栏位的字段显示/隐藏控制也使用组件形式引入,前端在控制字段显示属性时,发现码值转换及字段信息展示均有问题。二、问题分析通过阅读代码结构,发现el-table-co......