BLE Link Layer学习笔记
来源:互联网 发布:万里独行知马力 编辑:程序博客网 时间:2024/05/01 04:04
一.Link Layer学习笔记
1. 广播间隔(Adv Interval)
图1 使用AdvDelay的广播时间
如图1所示,为使用AdvDelay的广播事件的时间图。由图中可知,
T_AdvEvent = AdvInteval + AdvDelay.其中AdvInteval的时间是固定的,必须为0.625ms的整数倍,范围在20ms-10.24s之间。
(1) Advertisingevent type为scannable undirected event或者non-connectable undirected event 时Adv Interval最好在100ms以上。
(2)对于connectable undirected 或connectable directed event而言使用low duty cycle时,AdvInterval的范围至少在20ms,AdvDelay则在0-10ms之间。
2. 数据发送(Flow control)
(1) 每个Connection event的Header都包含四个基本的元素:LLID、SN、NESN、MD。
LLID:逻辑链路标识符。
SN:序列号
NESN:下一个期望序列号
MD:更多数据。
(2) SN、NESN在连接过程中的应用。
当连接建立之后,SN和NESN的初始值为0.以后SN的由Host(Master)端维护,NESN由Client(slave)维护。具体control flow如下:
图2 Transmit and Receive SN and NESN flow diagram
如图2所示,Host主要维护SN这个元素,Client维护NESN这个元素,在connectionevent内收到数据包,都要将SN与NESN进行比较。如图3所示,为一些正常的连接时间SN和NESN的状态。
图3 connectionevents
在Host端,SN不等于NESN,则认为收到了来自Client发来的正确的ack包,然后(SN + 1)&1,下一个connect event发新的data,否则则认为收到错误的ack包,下一个event继续发之前的数据。Host拿到NESN后,在新的data中会继续使用。
在Clent端,SN等于NESN,则认为收到了来自Host发来的正确的包,然后(NESN + 1)&1,收到Host的包,否则则认为是前一个包而被忽略。Client拿到SN中,在发ack包的时候会继续使用。
- BLE Link Layer学习笔记
- [BLE--Link Layer]物理信道
- [BLE--Link Layer]物理信道
- [BLE--Link Layer]Link Layer状态及其之间的切换
- [BLE--Link Layer]设备蓝牙地址
- [BLE--Link Layer]Link层控制之连接参数请求
- [BLE--Link Layer]Link层控制之连接更新过程
- 计算机网络-数据链路层Data Link Layer学习笔记
- [BLE--Link Layer]空中包格式(待续)
- 蓝牙BLE LINK LAYER剖析(一) -- status and channel
- 蓝牙BLE LINK LAYER剖析(二) -- PDU
- 蓝牙BLE LINK LAYER剖析(一) -- status and channel
- 蓝牙BLE LINK LAYER剖析(二) -- PDU
- BLE学习笔记
- Android BLE学习笔记
- Android BLE学习笔记
- Android BLE学习笔记
- Android BLE学习笔记
- GPS基本解析思路
- Matplotlib入门教程
- PCB中电流如何流动——电流如何沿传输线流动
- Oracle中update语句的优化学习
- Uncaught DOMException: Failed to execute 'insertBefore' on 'Node': The node before which the new nod
- BLE Link Layer学习笔记
- IM即时通讯实现原理
- [转]HUSTOJ管理问题
- macOS terminal setup to boost your productivity
- Android逆向之旅---Android中某视频的数据请求加密协议(IDA动态调试SO)第一篇
- SpringAOP基本概念及实现原理(一)
- poj1125
- java程序System.out.println()中文乱码,很奇怪的问题,知道朋友给我留言告诉我!
- 防止过拟合的处理方法