1.mtu 设置 1.1 mtu是ATT层可以设置的最大交换数据,默认是23个字节,可以设置最大为247个字节,使用接口如下 uint32_t gattc_mtu_exchange(uint16_t mtu);//mtu最大是247
2.data length更新 2.1 data length属于LL层可以交换的最大数据,默认是27个字节,可以设置的最大数据是251个字节,接口如下 uint32_t om_ble_gap_set_data_length(uint16_t conn_handle, uint16_t max_tx_octets, uint16_t max_tx_time);
2.2 data length才是最终决定传输数据的大小,比如你的MTU设置了100个字节,data length还是默认的27个字节,那么传输这个100个字节需要分4包才能传输完毕;如果你的data length设置了251个字节,那么传输100个字节一次就可以传输完成,如下截图是抓包上看到区别
3.参考代码接口部分如下,测试代码在附件 else if (p_ble_evt->header.evt_id == BLE_GAP_EVT_CONNECTED) { om_ble_gap_set_data_length(p_ble_evt->evt.gap_evt.conn_handle, 251, 2120); gattc_mtu_exchange(247); }
|