TI中文支持网
TI专业的中文技术问题搜集分享网站

GATT_WriteNoRsp()进行写操作一直返回0x16

我现在用CC2540用GATT_WriteNoRsp()进行写操作是成功的,而用CC2640进行写操作就会一直返回0x16,请问这是为什么?

Viki Shi:

0x16说明 blePending——-some previous command is not served or some other sync mechanism is in progress.

参考下这边帖子中的方法:e2e.ti.com/…/425107

tyty:

回复 Viki Shi:

我试了这个方法不能解决我的问题?

Susan Yang:

回复 tyty:

出现0x16时,连接有没有断开?

tyty:

回复 Susan Yang:

没有断开

Alvin Chen:

回复 tyty:

怀疑你是没有开辟空间导致的,可以尝试按照以下格式。

req.pValue = GATT_bm_alloc( ble_dev_conn_handle, ATT_WRITE_REQ, xxx, xxx );if( req.pValue != NULL ){req.handle =req.len = req.pValue = req.cmd =req.sig = res = GATT_WriteNoRsp(p->ble_dev_conn_handle,&req);if(res != SUCCESS){GATT_bm_free( (gattMsg_t *)&req, ATT_WRITE_REQ );}}else{res = bleMemAllocError;}return res;

tyty:

回复 Alvin Chen:

我就是这么做的,现在是发送两百多个包,会出现3次返回0x16的情况?

Alvin Chen:

回复 tyty:

抱歉有事回复晚了,您的意思是你连续发了200多次会出现几次blePending,这意味着ble被挂起做其他任务。建议您用一些延时或者信号量,如果你想发送大数据建议使用下面的程序。 github.com/…/throughput_example.md

tyty:

回复 Alvin Chen:

谢谢,我把发送间隔调长了,现在问题解决了,另外发现一个新的问题,就是配对不能成功,调试发现主机端进不了SimpleBLECentral_passcodeCB这个回调函数,直接到SimpleBLECentral_pairStateCB请问这是为什么,以下是抓包内容

赞(0)
未经允许不得转载:TI中文支持网 » GATT_WriteNoRsp()进行写操作一直返回0x16
分享到: 更多 (0)