我下载的是CH579EVT 2.3版本的例程, 我使用的是EVT\EXAM\BLE\Peripheral 中的从机例程
我想要char1的长度大于20
我修改了 gattaprofile.h 文件中宏定义
#define SIMPLEPROFILE_CHAR1_LEN 30
同时修改CONFIG.h 文件中的宏定义为
#define BLE_BUFF_MAX_LEN 150
然后使用手机的BLE调试助手(WCH)连接从机,去读取该特征值,发现无法读取
如果将SIMPLEPROFILE_CHAR1_LEN 定义小于等于19 都是可读取到正确的值
问题解决了:自己来填坑一下, 如果手机连接从机,需要手动点击右上角的三个... 然后后修改MTU,将MTU修改变大
//====================================================================
另外补充一下,在multiCentral例程中,主机跟从机交换了MTU信息,但是主机并没有将该信息进行设置(在Central例程中是有的),所以一直都是默认值(在这个例程中 回调函数centralHciMTUChangeCB 内部是空的)
不知道这个问题是就是这样设定还是软件的bug
解决方法 就是在centralHciMTUChangeCB函数内加入
attExchangeMTUReq_t req;
//MTU改变的时候
req.clientRxMTU = maxRxOctets;
GATT_ExchangeMTU(connHandle,&req,centralTaskId); //改变MTU 双方协商之后的结果
PRINT("connHandle: %d ,maxTxOctets:%d maxRxOctets:%d\n",connHandle,maxTxOctets,maxRxOctets);
即可实现MTU的更新