工具与软件:
大家好、我们正在开发一种应用、其中 CC2340r5 (作为中央设备)使用每30秒连接到器件并写入数据
并接收中的通知
行为:在观察时发现分配>在 RTOS 对象视图中释放(附带屏幕截图)。 更重要的是、对于我们收到的每一个完整通知、每次完成通知后、我都可以看到分配将递增20、但释放仅将递增16
注意:它包括。 对于 ATT_WRITE_REQ、配置为 GATT_BM_alloc、长度= 8个字节
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
大家好、我们正在开发一种应用、其中 CC2340r5 (作为中央设备)使用每30秒连接到器件并写入数据
并接收中的通知
你(们)好
该问题在基本 ble 示例中可重现。
由于该示例没有用于向外设 器件写入数据的代码、因此我必须从以下源 https://github.com/TexasInstruments/ble_examples/tree/simplelink_low_power_f3_sdk-7.40.01/examples/rtos/LP_EM_CC2340R5/ble5stack/basic_ble_GATT_client/app 复制 app_menu.c
我已经更改了以下函数的代码、以便从我的器件接收数据
你(们)好
使用来自您共享链接的 app_menu.c 文件时、basic_ble 示例能够表现出此行为?
如果您理解 app_menu.c 中的代码必须处理我的问题、则根据我的观察、此代码不正确。
否则、不会出现此行为、正确(因为原件不作为 GATT 客户端运行)?
我尚未查看其他情景、因为我的重点主要是通知。 我仅使用示例来表明、在接收通知时、可能由于 BLE 堆栈 或 bleapp 实用程序内存处理不当而缺少4个释放。 .
注意:我的单个通知分为4个 TI 通信堆栈事件。 我还验证了以下代码在 GATT 事件处理程序返回时释放内存:
要发送数据、我将使用以下函数。
注:我知道出错时必须释放内存。 但在我们的用例中、确保返回代码始终是成功的 [报价]是的、我们就是这么做的。
我认为我们不应将用户代码中的块作为 API 进行释放 BLEAppUtil_freMsg() 都在 bleapputil_中定义 internal.h我相信 BLEAppUtil( 英语:BLEAppUtil)缺少 Free。
您是否有关于为接收通知而进行的分配的信息。 这样我们就可以跟踪特定的块是否被释放。