蓝牙协议栈(ble_sdk_1.4.2.2)从机发送数据
使用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
感谢回复,按照您提供的方法问题解决了。原来是我分配空间的地方出错了,谢谢