嗨,对话,
我正在尝试修改ble_barebone项目以发送不可连接的数据包。为此,我从user_app_adv_start调用以下函数:
无效用户\应用\高级\启动(无效)
{
//cmd=app_easy_gap_undirected_adverting_get_active();
cmd=app_easy_gap_non_connectable_advertive_get_active();
//app_easy_gap_undirected_advertized_start();
app_easy_gap_non_connectable_Advertised_start();
}
我还在user_callback_config.h中定义app_on_adv_noncn_complete的回调函数:
.app_on_adv_nonn_complete=用户_app_nonn_complete,
该函数定义如下:
无效用户应用程序未完成(uint8状态)
{
//如果广告被取消,则更新广告数据并再次开始广告
如果(状态==间隙错误已取消)
{
用户_应用_adv_start();
}
}
在这种情况下,将面临以下问题:
1) 设备正在传输ADV_DISCOVER_IND数据包,而不是不可连接的数据包。
2) 当api cmd=app\u easy\u gap\u non\u connectable\u advertive\u get\u active()被注释时,设备正在传输ADV\u non\u CONN\u IND数据包,但执行停止,几秒钟后设备崩溃。
请提供同样的解决方案。
提前感谢,,
威斯利卡
设备:

嗨,维西莉卡,
1) 我已经复制了代码,但我无法在嗅探器上看到您提到的ADV_DISCOVER_IND数据包,我也不知道这些数据包是什么,因为我无法在规范中跟踪此类数据包。在我的设置中,我可以始终将设备的数据包视为ADV_nonn___。你能在一个干净的项目上尝试修改吗。或者,如果意外更改了_get_active()函数中的任何配置,请选中该函数。
2) 事实上,当您删除“启动”并且设备停止运行时,这是因为代码使app_add_struct()中的memcpy函数失败,因为您试图修改堆栈中的指针,并且显然损坏了堆栈(如果不调用函数,_get_active()会为您声明的指针分配内存空间,更改指针指向的随机地址中的数据)。尝试按照示例使用_get_active()函数。
谢谢你的对话
嗨,对话小组,
谢谢你的答复。我们仍在处理这个问题。BLE规范已将ADV_DISCOVER_IND数据包重命名为ADV_SCAN_IND(可扫描的无向广告)。第2.3.14节对此进行了规定。
嗨,团队,
我还修改了USER_config.h中的USER_advision_数据,如下所示:
#定义用户数据(“\x1B\xFF\x00\x00\x01\x00\x01\x00\x01\x85\x00\x08\x00\x00\x00\x00\x00\x00\xFB\x1A\x84\x07\xA5\xB9\x00\x00\x00\x0A”)
嗨,维西莉卡,
您的用户广告数据太长(28字节,包括您达到广告字符串31字节限制的强制标志),并且由于barebone项目的额外数据、额外计数器信息,设备发送的数据太长,无法适应广告字符串,因此,附加数据正在输入扫描响应数据。因此,由于无法连接扫描响应数据,SDK使用该PDU来响应扫描请求,但不会在连接请求中响应。
谢谢你的对话