Hidden
- 关于ATT_MTU和LL PDU的数量关系
你这种情况是不考虑L2CAP分包情况,在不考虑BLE4.2的长包功能的情况下(官方说法:LE Data Length Extension),也会有两种情况:
上面10b、01b中的“b”表示二进制格式,中间的包和最后的包都的LLID都是01b,对方怎么知道什么时候收完包呢?靠的是第一包的4字节L2CAP帧头,这里面会说明后面一共有多少数据。
- 关于BLE最大传输包数
这个问题其实提供的条件还不够,根据BLE周期同步的连接特性,我稍微补充一下你提到的问题:“BLE在一次连接间隔能够发送的最大LL PDU的个数”。
核心规范没有对这部分有限制,理论限制是两个LL PDU之间的间隔T_IFS(150us)以及每个LL PDU本身所含字节数大小。用连接间隔除以一下就可以算出来。
但是每家芯片原厂考虑到内存容量以及低功耗,最终实现的策略都不一样。比如:
- 有一些协议栈最多只允许在一个连接间隔发送6个数据包;
- 有一些协议栈最多允许打开射频几百us,在这段时间内你爱发多少发多少;
- 有一些协议栈允许在下一个连接间隔来到之前一直打开射频,这时候就可以疯狂发送数据(比如使能Nordic的LE event extension就是这种情况)。