嗨对话框,
我想修改ble_barebone项目发送非_connectable包。对于这一点,我打电话从user_app_adv_start以下功能:
void user_app_adv_start(void)
{
// CMD = app_easy_gap_undirected_advertise_get_active();
CMD = app_easy_gap_non_connectable_advertise_get_active();
// app_easy_gap_undirected_advertise_start();
app_easy_gap_non_connectable_advertise_start();
}
我还限定user_callback_config.h app_on_adv_nonconn_complete的回调函数:
.app_on_adv_nonconn_complete = user_app_nonconn_complete,
功能定义如下:
无效user_app_nonconn_complete(uint8_t状态)
{
//如果广告被取消,则更新广告数据并再次启动广告
if(status == gap_err_canceled)
{
user_app_adv_start();
}
}
下面的问题正在面临着这样的场景:
1)代替非连接分组,器件发送ADV_DISCOVER_IND分组。
2)当API,CMD = app_easy_gap_non_connectable_advertise_get_active()被注释,设备被发送ADV_NON_CONN_IND报文,但执行停止和几秒钟之后的器件崩溃。
请提供相同的解决方案。
提前致谢,
Wisilica
设备:

嗨wisilica,
1)我已经复制的代码,我不能够看到ADV_DISCOVER_IND包,嗅探器,你都在提,也我不知道什么样的数据包,因为我不能够在规范这种跟踪包。在我的设置,我可以在任何时候都看到该设备作为ADV_NONCONN_IND的数据包。能否请您尽量在干净的项目的修改。或仄_get_active()函数,如果你不小心在功能改变任何配置。
2)的事实,当你删除_get_active和设备档,是因为代码在app_add_struct(失败memcpy函数),因为你正在试图在堆栈修改指针,显然您正在破坏叠层(该_get_active()如果你不调用该函数已经声明为指针分配内存空间,改变随机地址的数据指针指向)。试着效仿,并使用_get_active()函数。
谢谢mt_dialog.
嗨对话小组,
Thanku的答复。我们仍然得到这个问题。BLE规范已更名为ADV_DISCOVER_IND包作为ADV_SCAN_IND(可扫描的非定向广告)。它是在2.3.15节规定。
大家好,
我也改变了USER_ADVERTISE_DATA在user_config.h如下:
的#define USER_ADVERTISE_DATA(“\ X1B \ XFF \ X00 \ X00 \ X01 \ X01 \ X00 \ X01 \ X85 \ X00 \ X08 \ X00 \ X00 \ X00 \ X00 \ X00 \ XFB \ X1A \ X84 \ X07 \ xA5 \ xB9 \X00 \ X00 \ X00 \ X00 \ X00 \ X0A“)
嗨wisilica,
你USER_ADVERTISE_DATA太长(28个字节,包括您达到广告串限31个字节的强制性标志),并与准系统项目的额外数据,额外的计数器信息,数据的设备发送太长以适合广告字符串,因此附加数据在进入扫描响应数据。如此以来,你是不可连接的有扫描响应数据,该SDK将使用PDU在为了响应扫描请求,但它不会在连接请求做出响应。
谢谢mt_dialog.