我下載的是CH579EVT 2.3版本的例程, 我使用的是EVT\EXAM\BLE\Peripheral 中的從機(jī)例程
我想要char1的長(zhǎng)度大于20
我修改了 gattaprofile.h 文件中宏定義
#define SIMPLEPROFILE_CHAR1_LEN? ? ? ? ? ? ? ?30??
同時(shí)修改CONFIG.h 文件中的宏定義為
#define BLE_BUFF_MAX_LEN? ? ? ? ? ? ? ? ? ? ? ? ? ? ?150
然后使用手機(jī)的BLE調(diào)試助手(WCH)連接從機(jī),去讀取該特征值,發(fā)現(xiàn)無(wú)法讀取
如果將SIMPLEPROFILE_CHAR1_LEN 定義小于等于19? ?都是可讀取到正確的值
?
問(wèn)題解決了:自己來(lái)填坑一下, 如果手機(jī)連接從機(jī),需要手動(dòng)點(diǎn)擊右上角的三個(gè)... 然后后修改MTU,將MTU修改變大
//====================================================================
另外補(bǔ)充一下,在multiCentral例程中,主機(jī)跟從機(jī)交換了MTU信息,但是主機(jī)并沒(méi)有將該信息進(jìn)行設(shè)置(在Central例程中是有的),所以一直都是默認(rèn)值(在這個(gè)例程中 回調(diào)函數(shù)centralHciMTUChangeCB 內(nèi)部是空的)
不知道這個(gè)問(wèn)題是就是這樣設(shè)定還是軟件的bug??
解決方法 就是在centralHciMTUChangeCB函數(shù)內(nèi)加入?
attExchangeMTUReq_t req;
//MTU改變的時(shí)候
?req.clientRxMTU = maxRxOctets;
?GATT_ExchangeMTU(connHandle,&req,centralTaskId);? ?//改變MTU? 雙方協(xié)商之后的結(jié)果
PRINT("connHandle: %d ,maxTxOctets:%d maxRxOctets:%d\n",connHandle,maxTxOctets,maxRxOctets);
?
即可實(shí)現(xiàn)MTU的更新