基于 BLE 5.1 协议 Core Spec。

其实发起态和 Scanning 有很高的相似程度,特别是工程实现上,非常类似。Scanning 状态,只是对 ADV 有简单的交互,收发一些简单的包。而 Initiating,就要动真格的了。他要向指定的可连接的 ADV 发起连接请求。

那么发起连接请求,依然需要先准备几个东西:

1、这么多 ADV,Initiating 要对哪个 ADV 发起请求呢?

——所以,在进入 Initiating 之前,需配置要连接的设备地址。

2、需要连接的设备地址,怎么知道的呢?

—— 首先本端先进入 Scanning 状态,通过开窗扫描,得知空中有些啥子设备,以及他们的地址信息,这样就知道当前有些什么地址了

3、进入 Initiating 后,如何给想要连接的设备发起请求?

—— 当然,我们知道了想要连接的设备地址,那么我们进入 Initiating 后,还需要继续开窗扫描,当又收到了感兴趣的这个设备的地址,好,我们发送连接请求,正式进入连接。

所以,以上所述,得知,其实 Initiating 状态也是一个扫描的状态,只不过呢,我们在期待扫描到一个我们想要的可连接的 ADV,并向其发送连接请求(与 Scanning 太像)。

1、参数

针对 Initiating 这种类型的状态,同样使用 scanInterval 和 scanWindow 参数描述。

scanWindow:这个代表了扫描的窗口,换句话来说,就是 RF 切换成 RX 状态的开窗收包时间

scanInterval:扫描的周期

可以看到,在 Scanning 的时候,scanInterval 必须要大于 scanWindow,才有意义。如果相等,则为全窗扫描。

在 Scanning 期间,在每一个 scanWindow 期间,会扫描每一个不同的  primary advertising channel(37、38、39)。

当扫描到期望的可连接的 ADV 的时候,Initiating 端迫不及待的在同样的信道上,对其进行交互,使得双方进入连接态。这里,根据 Legacy 和 Extended ADV ,将其分为两种情况

Legacy ADV 的时候,在 37、38、39 上开窗扫描,一旦发现期望的那个她,立马交互:

比如:

T_IFS,这个参数 Spec 要求,为 T_IFS=150us

对于 Extended ADV,首先在 primary advertising channel 上接收到 EXT_ADV_IND,接着在 secondary advertising channel 上去接收 AUX_ADV_IND,并且回复 AUX_CONNECT_REQ 发起连接请求,ADV 端应答 AUX_CONNECT_RSP,建立连接。

BLE(11)—— 细说 Initiating相关推荐

  1. 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

    高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper) 一.集群搭建要求 1.搭建设计 2.分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeep ...

  2. HBase编程 API入门系列之create(管理端而言)(8)

    这里,我带领大家,学习更高级的,因为,在开发中,尽量不能去服务器上创建表. 所以,在管理端来创建HBase表.采用线程池的方式(也是生产开发里首推的). 1 package zhouls.bigdat ...

  3. 微笑识别(HOG+SVM+opencv+python)

    如愿 一.流程 二.代码 三.随笔 四.参考资料 一.流程 这是得到模型的大致流程,思路还是蛮清晰的,一步一步做就行了 下面是使用训练出的模型来检测时的流程,思路也不难,慢慢做就行 dlib库及其训练 ...

  4. 【Arduino】一个按键开关控制RGB音乐彩灯(蜂鸣器播放音乐+按键控制播放暂停+RGB彩灯随音乐节奏跳动)

    一.项目说明 这里我们需要使用到RGB LED.蜂鸣器.按键开关这个元件.为什么要叫RGB呢?是因为这个LED是由红(Red).绿(Green)和蓝(Blue)三种颜色组成.我们可以通过调整三个LED ...

  5. oracle auto failover,Oracle学习之DATAGUARD(九) 自动Failover

    Oracle提供了一种快速自动故障转移架构(Fast-Start Failover).当主库发生故障时,FSFO会自动的将指定的从数据库转换成主数据库.此功能需要一个第三个的程序Observer来实现 ...

  6. Oracle DG broker搭建

    ------------------------------TigerLiu的技术园地(lc724234511@163.com)-------------------------------- 参考文 ...

  7. https://app.hackthebox.com/machines/Squashed

    https://app.hackthebox.com/machines/Squashed info collecting ┌──(kwkl㉿kwkl)-[~] └─$ sudo nmap -A 10. ...

  8. 京瓷1020MFC显示J-05 11是什么意思_Gofair第11讲,细说谷歌系推广的产品优势和推广方式...

    原标题:Gofair第11讲,细说谷歌系推广的产品优势和推广方式 外贸企业经过多年沉浮,一定都明白了:谷歌系推广,才是唯一靠谱的方式. 根据权威的statcounter数据显示,全球流量92%来自谷歌 ...

  9. 细说C++11中ratio编译期分数(一)

    对于分数,C++的标准库并没有提供这样的一个类,如果需要完全可以自己去实现,但是C++11提供了一个编译期常量分数类std::ratio,这个类定义于<ratio>头文件中. 这个类允许你 ...

最新文章

  1. 2013年上半年全国高等学校(安徽考区)计算机水平考试试卷,2013年上半年全国高等学校(安徽考区)计算机水平考试试卷(6页)-原创力文档...
  2. sklearn 岭回归
  3. 几个容易引起误会的英文短语
  4. Git的pull clone fetch
  5. Chrome Elements 标签页 和 View Source 的显示为什么有差异
  6. php获取一个文件名的函数,PHP 文件系统函数之获取文件名及文件名后缀-php文件...
  7. Linux 命令之 rpm -- RPM 软件包的管理工具
  8. FFMPEG解码多线程
  9. MySQL5.7的搭建以及SSL证书
  10. 2017.7.17数据类型
  11. hdu 1800 Flying to the Mars
  12. 嵌套类nested class 和 抽象类abstract
  13. Jetson Xavier中安装DIGITS-》Caffee中的错误
  14. Android:使用Jetpack Compose画渐变背景
  15. 使用 HTML CSS 编辑静态网页
  16. Lipschitz函数相关
  17. Android 相机开发
  18. 【FPGA学习笔记】Verilog语言的模块化设计
  19. 步进电机调试心得体会
  20. 使用扫码枪识别条形码

热门文章

  1. Python:将Word转成HTML
  2. 【Tableau Desktop 企业日常技巧16】Tableau下载和安装ODBC驱动 连接MySQL方法及过程详解
  3. 人工智能医疗检测:微核细胞情况自动检出率可达90%
  4. Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
  5. av_opt_set函数族详解
  6. Node 学习 | Day03 express (初识Express、Express 路由、Express 中间件、使用 Express 写接口)
  7. 在360新员工入职培训上的讲话
  8. 简单控件的应用(二)—学生管理系统
  9. consume(consume名词)
  10. javamail发送邮件到qq邮箱图片不能显示问题