可发现的数据包正在传输

5个职位/ 0个新职位
最后发表
wisilica
离线
最后看到:11个月6天前
加入:2015-03-17 08:16
可发现的数据包正在传输

嗨,对话框中,

我正在试图修改ble_barebone项目,以发送不可连接的包。为此,我从user_app_adv_start调用以下函数:

空白user_app_adv_start(空白)

// 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

设备:
MT_dialog
离线
最后看到:3个月23小时前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

1)我复制了代码,我不能看到ADV_DISCOVER_IND包,在嗅探器上,你提到的,我也不知道那些包是什么,因为我不能在规范中跟踪这种包。在我的设置中,我可以看到设备的包作为ADV_NONCONN_IND在任何时候。你能在一个干净的项目上试一下修改吗?或者检查_get_active()函数,如果您意外地更改了该函数中的任何配置。

2)当你删除_get_active和设备停止的事实,是由于代码失败的memcpy函数在app_add_struct(),因为你试图修改堆栈中的指针,显然你正在破坏堆栈(_get_active()分配内存空间,你已经声明的指针,如果你不调用函数,更改指针所指向的随机地址中的数据)。尝试遵循示例并使用_get_active()函数。

由于MT_dialog

wisilica
离线
最后看到:11个月6天前
加入:2015-03-17 08:16
嗨,对话框的团队,

嗨,对话框的团队,

谢谢您的回复。我们仍然在解决这个问题。BLE规范将ADV_DISCOVER_IND包重命名为ADV_SCAN_IND(可扫描的无向广告)。在2.3.14节中指定。

wisilica
离线
最后看到:11个月6天前
加入:2015-03-17 08:16
嗨,团队,

嗨,团队,
我还修改了USER_ADVERTISE_DATA在user_config.h如下:
#定义USER_ADVERTISE_DATA(“\ x1B \ xFF \ x00 \ x00 \ x01 \ x01 \ x00 \ x01 \ x85 \ x00 \ (\ x00 \ x00 \ x00 \ x00 \ x00 \ xFB \ x1A \ x84 \ x07 \ xA5 \ xB9 \ x00 \ x00 \ x00 \ x00 \ x00 \ x0A”)

MT_dialog
离线
最后看到:3个月23小时前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

你USER_ADVERTISE_DATA太长(28字节,包括强制性的旗帜广告字符串的你达到极限31个字节)和准系统的额外的数据项目,额外的计数器信息,设备发送的数据太长适合广告字符串,所以这些额外的数据进入了扫描响应数据。因此,由于您无法与扫描响应数据连接,SDK使用该PDU来响应扫描请求,但它不会在连接请求中响应。

由于MT_dialog