基于 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. 2019 阿里云峰会·北京站正式启动,互联网出海分论坛报名开启...
  2. Markdown 简明教程
  3. 数据挖掘竞赛-美国King County房价预测训练赛
  4. python元类是什么_谈谈Python中元类Metaclass(一):什么是元类
  5. 【微信小程序开发•系列文章七】websocket
  6. python官网的软件-Python编程软件 V3.9.0 官方最新版
  7. IP地址的分类和层次
  8. Java工程带库编译运行
  9. MySQL复制 自动监控脚本
  10. v8go 库手动编译 v8 golang 库手动编译
  11. 靠java_人生靠反省,Java靠泛型
  12. java泛型与集合中文版,第8章java泛型与集合类.doc
  13. Mac电脑查看本机的mac地址和ip地址
  14. css图片放大缩小动画
  15. linux下 mysql的重启,启动,停止命令
  16. arduino陀螺仪蓝牙通讯手势小车
  17. 中国科大: 那些杀手都很冷[ZT]
  18. Kth Smallest Element in a BST
  19. 华为路由为端口配置IP地址
  20. Learning to Rank模型总结

热门文章

  1. c++ opengl 三维图形中显示文字_为什么使用GPU渲染图形图像,而不使用CPU呢?
  2. 算法实现数字编号翻译为英文
  3. 神操作 用 Python 操作 xmind 绘制思维导图
  4. 西门子s7-200PLC编程软件
  5. react antd Table 表格 td超出自动换行
  6. esxi设置群晖核显直通
  7. [京东实践干货]手把手教你实现「京喜工厂」的CSS动画效果
  8. CentOS上的硬盘分区
  9. matplotlib只显示部分横坐标刻度,隐藏部分横坐标刻度
  10. 苹果电脑怎么用c语言编程,mac电脑怎么调试c语言