低功耗蓝牙(BLE)-- advertisements广播篇
为了更方便理解 BLE 中的广播,首先要先了解 BLE 架构中的通用访问配置文件 (GAP)层。
GAP 为BLE 设备相互交互提供了一个框架,包括:
- BLE 设备角色
- 广播(广播、发现、广播参数、广播数据)
- 扫描
- 连接建立(发起连接、接受连接、连接参数)
- 安全相关
BLE 设备有四种主要的 GAP 角色:
Central:发现 BLE 外围设备和广播者的设备,具有连接外围设备的能力。
Peripheral:可以广播,可以接受连接请求。
Broadcaster:广播者是一个纯广播设备
Observer:扫描者是一个纯扫描设备
1.广播信道
图1 信道分配
BLE设备共40个信道,3个作为主广播信道,其余37个作为数据信道或辅助广播信道。
次要广播频道用作“辅助”频道,这意味着设备必须先在主要广播频道上做广播,然后才能在次要频道上发送广播数据包。
如果设备想要使用次要广播通道,它会在主要通道上发送指向次要广播数据包的广播数据包。
2.广播包格式
PDU 字段是我们感兴趣的。这个字段会根据传输的数据包类型(数据与广播)而变化。
PDU Header
PDU 类型:该字段的长度为 4 位,对于广播包来说,具有以下可能的值:
PDU 根据用途分为多个类别,在我们列出每个 PDU 之前,先介绍一些常用术语:
定向与非定向:定向广告类型接受来自已知对端设备的连接请求,而非定向接受来自任何对端设备的连接请求。
可连接与不可连接:确定广播设备是否允许建立连接。
可扫描与不可扫描:广播设备是否能够处理来自观察者或中央的扫描请求消息。
扩展广告:扩展广播相比传统广播,允许的携带更多数据。
注意:由于蓝牙 5.0以下的设备无法发现扩展广播,建议广播者也使用带有传统广播 PDU 的广播集,以便较旧的扫描设备能够发现终端设备。广播集用于同时发送不同类型的广播事件。每个广播集都会有不同的广播参数,例如广播 PDU 类型、广播间隔和 PHY。
周期广播:蓝牙 5 .0开始支持的扩展广播的另一个功能是周期广播。这用于在两个未连接的设备之间的设定时间段内向设备广播数据包,这意味着多个设备可以同时收听这些周期广播。它们由以固定间隔发送的广播组成,广播数据内容不时变化。
Legacy Advertising PDUs
这些适用于所有蓝牙版本 - 支持向后兼容,并用于主要广播信道。
ADV_IND:可连接的可扫描非定向广播。
ADV_DIRECT_IND:可连接的定向广播
ADV_NONCONN_IND:不可连接不可扫描非定向广播
ADV_SCAN_IND:可扫描非定向广播
Extended Advertising PDUs
这些类型是在蓝牙5.0 中引入的。 除了主要广播信道之外,它们还为设备提供了在次要广播信道上做广播的选项。 辅助通道的好处是它们允许增加广播数据容量。
ADV_EXT_IND:扩展广播(用于除 Connectable Scannable Undirected 之外的所有广播类型)——在主要广播信道上发送。
AUX_ADV_IND:扩展广播(用于除 Connectable Scannable Undirected 之外的所有广播类型)——在辅助广播信道上发送。
AUX_SCAN_IND:用于周期广播。
AUX_CHAIN_IND:与其他广播类型一起使用以保存额外的广播数据。
RFU:保留以备将来使用
ChSel:如果广播者支持 LE 信道选择算法 #2 功能,则该位将设置为 1。
TxAdd:如果广播者的地址是随机的,则该位设置为 1,如果地址是公共的,则该位设置为 0
RxAdd:如果目标设备的地址是随机的,则该位设置为 1,如果地址是公共的,则设置为 0
Length:保存数据包有效载荷的长度。
低功耗蓝牙(BLE)-- advertisements广播篇相关推荐
- 低功耗蓝牙BLE之广播
广播 低功耗蓝牙设备通过广播信道发现其他设备,一个设备进行广播,而另一个设备进行扫描. 广播相关的参数大致有以下几种: 1.Advertising interval 2.Advertising_Typ ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅④如何在Android开发低功耗蓝牙ble控制 TB-02 模块,代码工程全部开源!(附带Demo)
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解 ...
- java 协议栈_深入浅出讲解低功耗蓝牙(BLE)协议栈
详解BLE连接建立过程 https://www.cnblogs.com/iini/p/8972635.html 详解BLE 空中包格式-兼BLE Link layer协议解析 https://www. ...
- 蓝牙:深入浅出低功耗蓝牙(BLE)协议栈
深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...
- 深入浅出低功耗蓝牙(BLE)协议栈,使用Ubertooth one扫描嗅探低功耗蓝牙
BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 深入浅出低功耗蓝牙BLE协议栈 1. 协议栈框架 2. 如何通过无线发送一个 ...
- 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端
低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端 Android对外模模式(peripheral)的支持 从Android5.0开始才支持 关键术语和概念 以下是关键BLE术语和 ...
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法(程序解读)
关注公众号"迈微电子研发社",选择"星标★" 低功耗蓝牙BLE之连接参数de更新方法 0. 蓝牙的状态以及基本连接过程 0.1 蓝牙的状态: 0.3 蓝牙的连接 ...
- 【Funpack】低功耗蓝牙 BLE 协议架构
想要开发蓝牙应用,了解蓝牙协议架构是必不可少的.本文以低功耗蓝牙 BLE 为例,简要介绍 BLE 蓝牙协议架构,帮助开发者快速了解蓝牙协议概况. BLE 协议分层 BLE 协议栈主要由如下几部分组成: ...
- 【IoT】加密与安全:CC254x 低功耗蓝牙 BLE 之 AES-128 加密算法
蓝牙数据是可以通过空中抓包而被抓取到的,因此需要将通信数据进行加密,即使别人截获了加密后的数据,也无法利用该数据. AES 加密原理 CC254x 支持对称加密 AES: 加密过程: 需要加密的数据 ...
最新文章
- 在 Node.js 中用子进程操作标准输入/输出
- Windows、WSL 与 Linux 的性能对比
- 在水晶报表中实现任意选择指定字段显示-模板及C#升级版
- yolov3代码详解_代码资料
- 【IBatisNet Spring.Net】ORM与IOC 简单配置
- python mysql 写入_python如何写进MYSQL
- Java魔法堂:JVM的运行模式
- Atitit.并发编程原理与概论 attilax总结
- 第二次作业-Steam软件分析
- 计算机无法删除tf卡的内容,SD卡不能删除或格式化怎么办?这些方法一定要会...
- MATLAB学习笔记之矩阵和数组1.1(mathematic)
- 【微信小程序】获取Bmob后端云数据库某一数据表的所有记录
- 勒索病毒频发,信息安全事件如何破 --记两次勒索病毒数据恢复实例
- netty源码分析及优点
- 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest:Gym 101667K
- 怎样解决PHP中文乱码问题
- 手机OTG 我的世界_怎么用手机把小说下载到mp3
- django 查询 value 与 value_list 区别
- 索尼mcx500切换台说明书_索尼MCX500特技切换台
- 李宁特步雅戈尔们逆势增长,底层驱动是什么?