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

CC2540平台,1.4.2.2版本BLE协议栈,IAR10.20.1版本,调试simplePeripheral工程时发现GATT server发送一帧notify数据给GATT client,接收端实际接收到的是两包数据

请问TI的工程师,目前我调试GATT notify功能时发现这样的问题,还请帮忙分析指导一下。问题如下:

CC2540平台,1.4.2.2版本BLE协议栈,IAR10.20.1版本,调试simplePeripheral工程时发现GATT server发送notify给GATT client,数据量并不大,5字节,8字节,10字节都测试过,client这面controller总是会上来两个Event,两个Event带上来的数据组合起来才是server notify的一帧数据,所以我怀疑是GATT server端底下发送数据时把一帧数据拆分成了两包数据发送出去,还请确认下这个版本BLE协议栈是否就有这个问题,或者请提供下分析思路和解决方案。急,谢谢。

如下图,原本发送的是12345,string类型的数据,接收方是以两个Event上来的

如下图,原本发送的是0987654321,string类型的数据,接收方也是以两个Event上来的

调用的notify接口如下,请帮忙查看下是否有问题:

Viki Shi:

你好,图片均无法显示,请附件上传

Shawn Yin:

回复 Viki Shi:

Hi viki shi,

附上问题截图,请帮忙分析下,提供点思路或者解决方案。

GATT client接收端接收数据截图如下(GATT server发送54321、0987654321 string类型数据):

GATT server端发送notify过程截图如下:

Best regards,

Shawn Yin

Shawn Yin:

回复 Viki Shi:

Hi Viki shi,

我一共定义了两个特性,一个可写权限,一个notify权限,两个特性值的长度都为256,大于我的数据发送量,如下图:

Shawn Yin:

回复 Viki Shi:

Hi viki shi,

还请帮忙分析下,提供点debug思路,或者帮忙确认下这个版本的BLE协议栈是否就存在这个问题,谢谢。

Shawn Yin:

回复 Viki Shi:

Hi viki shi,

找到问题点了,是UART接收的回调函数上来的数据就不是一帧完整的数据,PC串口工具发送一帧数据,CC2540这面UART回调函数被触发了多次,每次触发接收到的数据和起来才是一帧完整数据,导致多次调用了SimpleProfile_SetParameter()函数吧,导致底下LE controller分多次把数据发出去的吧。

还是感谢之前的指导与回复。

Viki Shi:

回复 Shawn Yin:

我上周休假了,感谢提供反馈

赞(0)
未经允许不得转载:TI中文支持网 » CC2540平台,1.4.2.2版本BLE协议栈,IAR10.20.1版本,调试simplePeripheral工程时发现GATT server发送一帧notify数据给GATT client,接收端实际接收到的是两包数据
分享到: 更多 (0)