1. 前言
BLE 无线传输,如何保证空中数据被正确接收,如果没有收到或者收到的数据有错误如何请求对端重发?
本文简单介绍 BLE ACL 数据包的 ACK 以及重传机制。
2. 数据通道 PDU (Data Channel PDU)
Data Channel PDU 的格式如下所示:
其中,数据通道 PDU 的 header 格式如下所示:
NESN(Next Expected Sequence Number),用来告知对方下一个期待的数据包的编号,
SN(Sequence Number),表示当前发送数据包的编号。
SN 和 NESN 在进入连接状态时候会被清零,
BLE link layer 就是用 SN/NESN实现了 packet的 ACK/重传。
3. 确认和流控 (Acknowledgment and flow control )
参考 Core 4.2 Vol 6, Part B 4.5.9 章节:
对于每个连接,链路层有两个参数,transmitSeqNum和nextExpectedSeqNum,每个参数的大小分别占 1 bit