一、前言
本篇会结合代码讲解修改MTU的大小并进行验证。
二、阅读说明
三、正文
1、更改MTU为65字节
#ifndef MTU_SIZE_SETTING#define MTU_SIZE_SETTING 65 //user set value, user can change it in app_config.h#endif
更改的文件路径为“tc_ble_single_sdkvendorcommonapp_buffer.h”将MTU_SIZE_SETTING的大小更改为65字节。
2、增加发送MTU的功能函数
void slave_send_mtu_req_function(void){if(connect_event_occurTick && clock_time_exceed(connect_event_occurTick, 1500000)){ //1.5 S after connection establishedconnect_event_occurTick = 0;blc_att_requestMtuSizeExchange(BLS_CONN_HANDLE, MTU_SIZE_SETTING);tlkapi_printf(APP_LOG_EN, "Slave send MTU size req, MTU = %dn", MTU_SIZE_SETTING);}}
如上所示增加slave_send_mtu_req_function函数,该函数的作用为在连接成功之后,1.5S后发送MTU请求交换命令给到主机。
3、定义计时变量并在连接任务回调中赋值3.1、定义计时变量
_attribute_data_retention_ u32 connect_event_occurTick = 0;
3.2、在连接任务回调函数中赋值
connect_event_occurTick = clock_time() | 1;
4、将MTU请求交换的功能函数放入主循环中
slave_send_mtu_req_function();
5、使用nRF Connect软件连接后的打印结果
[APP][MTU] mtu exchange: 40 00 41 00 41 00
如上图所示,关键的地方在这里,下图是打印此log具体的地方
在app_host_event_callback的回调函数中,该函数打印出来的是一个结构体数组,如下:
/*** @brief data structure of GAP_EVT_ATT_EXCHANGE_MTU event parameters*/typedef struct {u16 connHandle;u16 peer_MTU;u16 effective_MTU;} gap_gatt_mtuSizeExchangeEvt_t;
结合打印出来的数据整理如下:
connHandle:00 40peer_MTU:00 41effective_MTU:41 00
从上面可以看到,有效的MTU为0x41,也就是65个字节。
四、结尾
本篇结合代码讲解了如何修改MTU的大小,已经如何进行验证,下一篇将增加相关代码,让从机能使用安全连接的方式进行配对。
阅读全文
149