我的应用是每s传输3k字节的数据量
现象:丢包,经过反复测试发现刚开始几个小时是不丢包的,十个小时后开始丢包,而且是因为带宽不够丢的包。
硬件复位CC2540,又可以持续几个小时不丢包。
分析:初步怀疑里面有堆栈申请没有释放
处理:
将g_nData.pValue = (uint8 *)GATT_bm_alloc( 0, ATT_HANDLE_VALUE_NOTI, GATT_MAX_MTU, &len );改为
g_nData.pValue = (uint8 *)GATT_bm_alloc( 0, ATT_HANDLE_VALUE_NOTI, 20, &len );
测试发现,没有作用
内存释放是这样的,应该没有问题,抄的TI的demo
if(GATT_Notification( 0, &g_nData, FALSE )!=SUCCESS)
{//发送失败
GATT_bm_free( (gattMsg_t *)&g_nData, ATT_HANDLE_VALUE_NOTI );
}