微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 蓝牙协议栈(ble_sdk_1.4.2.2)从机发送数据

蓝牙协议栈(ble_sdk_1.4.2.2)从机发送数据

时间:10-02 整理:3721RD 点击:

使用CC2541作为从机,手机作为主机,从机发送数据函数如下:


void sbpSerialAppSendNoti(uint8 *pBuffer,uint16 length)
{
uint8 len;
attHandleValueNoti_t pReport;

if(length > 20)
len = 20;
else
len = length; 

pReport.handle=0x2E;
pReport.len = len;
osal_memcpy(pReport.value, pBuffer, len);
GATT_Notification( 0, &pReport, FALSE );
}

使用1.4.0.0协议栈时,手机和从机通信正常,使用1.4.2.2协议栈时,通过APP发送数据从机可以接收,但是从机串口接收到的数据无法正确发送到手机。

查找原因时发现1.4.0.0协议栈中定义如下:

typedef struct
{
uint16 handle; //!< Handle of the attribute that has been changed (must be first field)
uint8 len; //!< Length of value
uint8 value[ATT_MTU_SIZE-3]; //!< New value of the attribute
} attHandleValueNoti_t;

1.4.2.2协议栈中定义如下:

typedef struct
{
uint16 handle; //!< Handle of the attribute that has been changed (must be first field)
uint8 len; //!< Length of value
uint8 *pValue; //!< Current value of the attribute (0 to ATT_MTU_SIZE-3)
} attHandleValueNoti_t;

尝试修改void sbpSerialAppSendNoti(uint8 *pBuffer,uint16 length)函数,任然解决不了问题,请问问题在什么地方?

既然新协议的pValue是指针,它就需要你给它malloc。

可以参考2640的notify,《CC2640之添加自定义服务》:http://blog.csdn.net/feilusia/article/details/52333664

感谢回复,按照您提供的方法问题解决了。原来是我分配空间的地方出错了,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top