ATT层 MTU_SIZE 对应配置 ATT_LOCAL_MTU_SIZE
空中包 PDU长度 对应配置 config_btctler_le_acl_packet_length
1、ATT_LOCAL_MTU_SIZE 是配置本地ATT协议的最大包长,配置范围 23~517,实在应用最大的有效数据发送长度 PAYLOAD_SIZE = ATT_LOCAL_MTU_SIZE -3。连接过程中双方会重新协商这个值,取双方支持的的最小值使用。
2、config_btctler_le_acl_packet_length 是配置空中包的PDU长度,配置范围 27~251。
3、ATT_LOCAL_MTU_SIZE 配置不受 config_btctler_le_acl_packet_length 配置影响。
如果 ATT_LOCAL_MTU_SIZE > (config_btctler_le_acl_packet_length-4);ATT层传输过程就会根据 (config_btctler_le_acl_packet_length-4)的值来对ATT的包做拆包和组包的动作。
改大 config_btctler_le_acl_packet_length 会提升空中传输包长,减少拆包和组包的耗时。
理想状态是ATT_LOCAL_MTU_SIZE 是 (config_btctler_le_acl_packet_length-4) 的倍数关系,这样在发送最大payload数据的时候,效率就会最高,耗时较少。
4、苹果手机协商MTU值的变化
某些苹果手机会检查对方设备的特性是否支持DLE(Data Length Extension supported),如果对方支持,手机发送交互的MTU会变大。参考链接如何打开DLE。 #I599P4:NOTE:BLE 中 ATT层 MTU_SIZE 和空中包 PDU长度 两者的配置关系。
登录 后才可以发表评论