最大传输单元(MTU)
L2CAP负责分发上层协议(SM、GATT)的数据包,在L2CAP层所允许的最大数据包长度称为最大传输单元(Maximum Transmission Unit,MTU)。如果上层协议所传输的数据包过大,则需要在空口上进行拆包。
PDU根据controller的ACL_Data_Packet_Length的大小进行分片(fragment)。其分包示意图如图 29所示:
SDU(服务数据单元)首先根据MPS进行分段(segment),然后每一个segment再根据ACL_Data_Packet_Length的大小进行分片(fragment)。其分包示意图如图 30所示:
配置MTU和MPS的参考代码如下:
// mtu:23~2048, mps:23~mtu, lecb_conn_num: 0x00~0x20
error_code = ble_gap_l2cap_params_set(512, 250, 10);
APP_ERROR_CHECK(error_code);
说明:
代码路径:SDK_Folder\projects\ble\ble_basic_example\ble_app_l2cap_coc_server\Src\user\user_app.c