蓝牙学习九(定向广播 ADV_DIRECT_IND)

一、简介

        广播类型有如下:

        非定向可连接广播ADV_IND)。可连接的非定向广播,表示当前设备可以接受任何设备的连接请求

        定向可连接广播ADV_DIRECT_IND)。可连接的定向广播,设备不能被主动扫描

        非定向不可连接广播ADV_NONCONN_IND)。不可连接的非定向广播,仅发送广播数据,而不被连接。设备不能被主动扫描

        非定向可发现不可连接广播ADV_DISCOVER_IND/ADV_SCAN_IND)。可扫描非定向广播,设备可以被发现。即可以发送广播数据,也可以响应扫描发送回应数据,但不能建立链接

        如果忘记了,可以回顾一下之前的文章:蓝牙学习四(广播)_蓝牙广播-CSDN博客

        本章主要介绍ADV_DIRECT_IND定向可连接广播

二、定向广播PDU

        当使用定向可连接广播时,链路层将发送定向广播数据包。也就是说,链路层将不会发送之前设置的广播内容,比如名字外貌等等。而是发送特定内容类型的广播帧。

        定向广播指示数据包中包含如下内容

        Access Address访问地址

        Packet HeaderPDU包头)   

        Advertising Address广播地址

        Target Address目标地址

       访问地址还是熟悉的0x8e89bed6通用访问地址

        PDU包头中包含了广播类型,和发送/接受地址类型。广播类型为ADV_DIRECT_IND定向可连接广播。

        广播地址为设备自身的MAC地址

        目标地址为定向要连接的目标设备的地址

        可连接定向广播类型允许主机响应广播事件,从而使得广播者和主机均进入连接状态。 可连接定向广播采用ADV_DIRECT_IND或者ADV_EXT_IND两种数据包类型,前者在主广播信道上发送,后者在主广播信道上发送并指向在副广播信道上发送的辅助广播AUX_ADV_IND数据包。       

三、ADV_DIRECT_IND

        ADV_DIRECT_IND广播类型使得发起者(主机)能在主广播物理信道上响应链接请求,从而建立ACL(异步无连接,一主多从之间的多点连接)连接。ADV_DIRECT_IND的PDU中包含发起者设备地址广播者设备地址仅寻址的发起者可通过向广播者发送CONNECT_IND数据包发起ACL连接。

        发起者在一个广播信道发送ADV_DIRECT_IND的数据包后,应在相同的广播信道上监听CONNECT_IND数据包,并忽略可能接收到的任何SCAN_REQ数据包。

        当广播者接收到包含其设备地址的CONNECT_IND数据包,且此PDU的设备地址与之前发送的ADV_DIRECT_IND数据包中包含的目标设备地址相同时,应退出广播状态,并切换到连接状态

        当广播者在该信道上没有接收到目标地址的CONNECT_IND时,应转移到下一个主广播物理信道上再次发送ADV_DIRECT_IND数据包,或者关闭广播事件

        ADV_DIRECT_IND中包含“high duty cycle(高占空比)”和“low duty cycle(低占空比)”两种模式。

        高占空比可连接定向广播,用于快速ACL连接/重连。该模式为高能耗以及高带宽占用广播模式,仅在需要快速建立连接时使用。

        低占空比可连接定向广播,用于慢速ACK连接/重连,或在不知道目标设备是否在通讯范围内使用。

3.1、low duty cycle

        在低占空比模式中,在两个ADV_DIRECT_IND数据包发送间隔应小于或等于10毫秒。广播事件应在广播间隔内关闭。

        全部主广播信道发送且未收到CONNECT_IND数据包的低占空比模式广播示意图如下图:

        下图为在第二个广播信道收到CONNECT_IND数据包的示意图: 

         使用wireshark抓取数据包如下图:

        可以看到,依次在37、38、39信道进行广播。且相邻信道到的广播周期在1毫秒左右

        且地占空比定向广播会一直广播广播周期在几十毫秒到几百毫秒

3.2、high duty cycle

         在高占空比模式中,在相同广播信道上发送两个ADV_DIRECT_IND数据包的时间间隔应小于或等于3.75毫秒。链路层在进入广播状态后1.28秒内退出广播状态

        使用wireshark抓数据包:

        可以看到,在两个37信道发送数据包的间隔为3.751毫秒。 

        从数据包中也可以看到广播的频率非常快

        整个广播事件只持续了1.28秒后就停止了。 

四、ADV_EXT_IND

        采用ADV_EXT_IND,发起者(主机)可以在副广播物理信道上响应连接请求,从而建立ACL连接。在此事件中,广播者每发送一个AUX_ADV_IND数据包后,均应在相同的付广播物理信道上监听是否有AUX_CONNECT_REQ数据包,并应忽略可能存在的任何AUX_SCAN_REQ数据包

        当隐私未激活时,广播者接收到包含其设备地址的AUX_CONNECT_REQ数据包,且发起者的设备地址包含在之前AUX_ADV_IND数据包中,广播者应在相同的副广播信道上响应包含此设备地址的AUX_CONNECT_RSP数据包。完成AUX_CONNECT_RSP数据包发送后,广播设备的链路层应退出广播模式,并进入连接状态。任何在副广播物理信道上接收到的AUX_SCAN_REQ数据包均应被忽略。

        广播事件中的两个ADV_EXT_IND数据包时间间隔应小于或等于10毫秒。广播事件应在广播间隔内关闭。

        副广播信道索引SAdv_idx在ADV_EXT_IND数据包中的AuxPtr字段中指明。

        下图为ADV_EXT_IND但未接收到AUX_CONNECT_REQ的情况

        下图为ADV_EXT_IND并在副广播信道索引上接收到AUX_CONNECT_REQ数据包

        因为目前还没有使用过 ADV_EXT_IND,所以这里不做实例分析。

参考:

低功耗蓝牙广播事件类型之可连接定向广播 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin:常用标准库函数(let、run、with、apply、also)

一、let 扩展函数 Kotlin标准库函数let可用于范围确定和空检查。当调用对象时,let执行给定的代码块并返回其最后一个表达式的结果。对象可以通过引用(默认情况下)或自定义名称在块中访问。 let扩展函数源码 let.kt文件代码 fun main() {println("isEmpty $is…

Stable Diffusion扩散模型【详解】小白也能看懂!!

文章目录 1、Diffusion的整体过程2、加噪过程2.1 加噪的具体细节2.2 加噪过程的公式推导 3、去噪过程3.1 图像概率分布 4、损失函数5、 伪代码过程 此文涉及公式推导,需要参考这篇文章: Stable Diffusion扩散模型推导公式的基础知识 1、Diffusion的整体…

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

前言【Unity 实用工具篇】| Unity 实现背景模糊效果,简单易用一、实现背景模糊效果1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍2.1 导入下载好的资源2.2 功能介绍2.2.1 捕获特效2.2.2 高级选项

【Vue】watch监听复杂数据,新值与旧值一样

问题 watch监听复杂数据,例如数组,旧值与新值一样 解决方案 监听回调里返回新数组,新、旧数组地址改变,得到的值也就不一样,例↓ ()>[...data] 码 test.js // 数据 const musicList ref([{ id: 540000200805…

00-JAVA基础-动态编译

动态编译 JAVA 6 引入了动态编译机制。Java 动态编译是指在运行时将Java源代码编译成可执行的字节码。这通常使用Java的内置编译器API javax.tools.JavaCompiler 来实现。 动态编译的应用场景 可以做一个浏览器编写java代码,上传服务器编译和运行的在线测评系统服…

继承.Java

目录 1,概述 1.1继承的含义 1.2什么时候用继承 1.3继承的好处 1.4继承的特点 2,继承的格式 3,可以继承哪些内容 4,成员方法和成员变量的访问特点 5,构造方法的访问特点 6,this,super…

前端三剑客 —— CSS (第一节)

目录 CSS 什么是CSS CSS的几种写法: 行内样式 内嵌样式 外链样式 import 加载顺序 CSS选择器*** 基本选择器 ID选择器 标签选择器 类选择器 通用选择器 包含选择器 上节内容中提到了 前端三剑客 —— HTML 超文本标记语言,这节内容 跟大家…

大厂面试之【Redis持久化机制】 - RDB和AOF概述及应用配置

文章目录 Redis持久化1. RDB(Redis DataBase)1.1 概述1.2 配置应用 2. AOF(Append Only File)2.1 概述2.2 配置应用 Redis持久化 先上结论:Redis持久化操作分为rdb以及aof,但是前者已经够用 1. RDB(Redis DataBase) 1.1 概述 rdb保存的是dump.rdb文件在指…

WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)

前置教程:WEB漏洞挖掘(SRC)详细教程--信息收集篇-CSDN博客 WEB漏洞挖掘(SRC)详细教程--身份认证与业务一致性-CSDN博客 WEB漏洞挖掘(SRC)详细教程--业务数据篡改-CSDN博客 2.4 用户输入合规性…

MCRNet:用于乳腺超声成像语义分割的多级上下文细化网络

这里写目录标题 摘要引言方法 摘要 由于对比度差、目标边界模糊和大量阴影的不利影响,乳腺超声成像中的自动语义分割仍然是一项具有挑战性的任务。最近,具有U形的卷积神经网络(CNN)在医学图像分割中表现出相当好的性能。然而&…

【C++ STL迭代器】iterator

文章目录 【 1. 迭代器的属性 】【 2. 不同容器支持的迭代器 】【 3. 迭代器的定义方式 】【 4. 实例 】4.1 定义方式:正向迭代器和反向迭代器4.2 迭代器属性:前向迭代、双向迭代、随机迭代4.2 迭代器的遍历方法4.3 auto关键字 自动指定迭代器定义类型 背…

【Qt】:常用控件(四:显示类控件)

常用控件 一.Lable二.LCD Number 一.Lable QLabel 可以⽤来显⽰⽂本和图⽚. 代码⽰例:显⽰不同格式的⽂本 代码⽰例:显⽰图⽚ 此时,如果拖动窗⼝⼤⼩,可以看到图⽚并不会随着窗⼝⼤⼩的改变⽽同步变化 为了解决这个问题,可以在Widget中重写resizeEvent函数。当用户把窗口从A拖…

基于单片机双路压力监测报警系统

**单片机设计介绍,基于单片机双路压力监测报警系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机双路压力监测报警系统是一个专门设计用于实时监测和报警两路压力变化的系统。它结合了单片机控制技术和压…

图DP

目录 有向无环图DP 力扣 329. 矩阵中的最长递增路径 力扣 2192. 有向无环图中一个节点的所有祖先 有向有环图DP 力扣 1306. 跳跃游戏 III 有向无环图DP 力扣 329. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对…

【DA-CLIP】test.py解读,调用DA-CLIP和IRSDE模型复原计算复原图与GT图SSIM、PSNR、LPIPS

文件路径daclip-uir-main/universal-image-restoration/config/daclip-sde/test.py 代码有部分修改 导包 import argparse import logging import os.path import sys import time from collections import OrderedDict import torchvision.utils as tvutilsimport numpy as…

数学知识--(质数,约数)

本文用于个人算法竞赛学习,仅供参考 目录 一.质数的判定 二.分解质因数 三.质数筛 1.朴素筛法 2.埃氏筛法 3.线性筛法 四.约数 1.求一个数的所有约数 2.约数个数和约数之和 3.欧几里得算法(辗转相除法)-- 求最大公约数 一.质数的判定 …

新型智慧城市大数据解决方案(附下载)

随着云计算、大数据、移动互联网等技术的发展,由城市运行产生的交通、环境、市政、商业等各领域数据量巨大,这些数据经过合理的分析挖掘可产生大量传统数据不能反映的城市运行信息,已成为智慧城市的重要资产。 在大数据时代,数据信…

理解main方法的语法

由于JVM需要调用类的main()方法,所以该方法的访问权限必须是public,又因为JVM在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行…

问题解决:写CSDN博文时图片大小不适应,不清晰,没法排版

项目环境: Window10,Edge123.0.2420.65 问题描述: 当我在CSDN写博文的时候,会经常插入一些图片,但有时候我插入的图片太大了,影响了整体排版。 比如我加入了一张图片,就变成了下面这个样子&…

PEFT-LISA

LISA是LoRA的简化版,但其抓住了LoRA微调的核心,即LoRA侧重更新LLM的底层embedding和顶层head。 根据上述现象,LISA提出两点改进: 始终更新LLM的底层embedding和顶层head随机更新中间层的hidden state 实验结果 显存占用 毕竟模型…