您好!
我正在使用4.40.04.04 SDK 开发基于 CC1352R 的产品。 此设计需要同时发送两个传统广播信标、其中一个信标可能会在每个测量间隔更新。
我遇到了一种奇怪的行为、其中一个信标可能无法传输、具体取决于广播间隔与扫描响应数据更新时刻的一致程度。
设计:
- 信标#1
- 1秒间隔
- 可扫描和可连接
- 信标#2
- 1秒间隔
- 任务1.
- 基于远程显示.c
- 创建并启动两个信标
- 任务2.
- 使用 GapAdv_prepareLoadByBuffer 和 GapAdv_loadByBuffer 以1秒的间隔更新信标#1的扫描响应数据、如下所述: https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/5.30.00.56/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gap-cc13xx_cc26xx.html#update-advertising-scan-response-data-that-is-used-for-multiple-advertising-handles
在上述配置中、信标#1未传输(但信标#2已传输)。 我可以"解决"此问题、并通过以下几种方式使信标#1传输:
- 将信标#1的间隔时间缩短至950ms
- 移除对 GapAdv_prepareLoadByBuffer 和 GapAdv_loadByBuffer 的调用(盲目更新扫描响应数据)
这让我相信、与广播间隔同步更新扫描响应数据会导致问题。 假设:
- 任务#2在 信标#1的广播间隔之前调用 GapAdv_prepareLoadByBuffer、这会阻止信标#1在该间隔内发送。
- 任务#2调用 GapAdv_loadByBuffer 、并为下一个间隔(1秒后)安排广播
- 任务#2休眠1秒
- 重复
请告诉我:如何定期更新扫描响应数据而不阻止传输信标?
----
我已成功使用 CC13xx 6.20.0.29 SDK 中的最新简单广播设备示例重现此问题。 我对 main.c、simple_broadcaster .c 和 simple_broadcaster .syscfg 进行了少量更改:
e2e.ti.com/.../simple_2D00_broadcaster_2D00_modified_2D00_files.zip
如果将修改后的文件复制到项目中、您应该会发现您的器件只发送一个信标。
如果通过注释掉 Task_create (mainTaskFxn、mainTaskParams、NULL)来禁用对扫描响应数据的更新;在 main.c 中、将传输两个信标。
我出了什么问题?



