没有收到连接。

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9个员额/ 0个新员额
最后一篇
insi.
离线
最后一次露面:3年9个月前
加入:2017-07-20 15:50
没有收到连接。

你好,,
我有连接两个设备的问题。

Dev1(Slave)正在发送包含我想要在Dev2(中央)上的数据的广告。

Dev1看起来很好,定期发送没有任何问题,它的通告在dev2调用app_easy_gap_start_connection_to_set时到达。我想连接到设备,我理解我调用app_easy_gap_start_connection_to_set。最终,在取消扫描之后,调用app_easy_gap_start_connection_to。

扫描dev2是:

void user_scan_start(void)
{
printf_string(“扫描... \ r \ n”);
struct gapm_start_scan_cmd * cmd = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);
cmd-> op.code = gapm_scan_passive;
cmd - > op。addr_src = GAPM_PUBLIC_ADDR;
cmd->间隔= 10;
cmd->窗口= 5;
cmd-> mode = gap_observer_mode;
cmd-> filt_policy = scan_allow_adv_all;
cmd-> filter_duplic = scan_filt_duplic_dis;

//发送消息
ke_msg_send(cmd);

//我们现在是可连接的
ke_state_set(task_app,app_connectable);
}

来自user_on_adv_report_ind的回调时,params是:
param-> eport.adv_addr_type:0x01和我预期的设备的正确MAC地址。

但是,我似乎没有得到任何连接,并且在一些调试后,我通过参数到GapM_CMP_EVT_Handler:操作= 0x12和Status = 0x40。状态清楚地表明传递了无效的参数。我在app_easy_gap_start_connection_to_set询问。但不是为什么。

我不能把头包裹在它周围。任何帮助都得到了赞赏。谢谢。

设备:
insi.
离线
最后一次露面:3年9个月前
加入:2017-07-20 15:50
更新,

更新,

将MTU(设置为23)和最小和最大连接间隔设置为100毫秒会导致GAP_ERR_PROTOCOL_PROBLEM问题。一个关于为什么会出现这种情况的指南将会非常有帮助。

mt_dialog.
离线
最后一次露面:5个月2周前
职员
加入:2015-06-08 11:34
嗨insi,

嗨insi,

就我所知,从你得到的事实和错误中,0x12是由于无效参数而取消的连接,那么你传递给app_easy_gap_start_connection_to_set()的参数是什么?设备作为中心没有文档,但您可以在主机端查看DSPS参考设计。你描述的过程是正确的,我没有看到改变连接间隔之间的关系,但是,设备的GAP角色是什么,是GAP_OBSERVER_SCA吗?我问这个,因为我可以看到设备GAP_OBSERVER_MODE下扫描(扫描函数),和GAP_ERR_PROTOCOL_PROBLEM是我可以复制上面的角色配置,这是因为你不能有一个连接如果obserever模式下的设备操作。

谢谢mt_dialog.

insi.
离线
最后一次露面:3年9个月前
加入:2017-07-20 15:50
谢谢您的回复!

谢谢您的回复!

我将模式更改为GAP_GEN_DISCOVERY,但现在我得到了GAP_ERR_INVALID_PARAM。

我正在遵循DSPS参考(从其他论坛帖子中已经表明)。

角色是:GAP_Central_mst。

我尝试使用app_easy_gap_start_connection_to_set的设备:

if(memcmp(param-> report.addr.addr,mac_addr,6)== 0)
{
printf_string(“连接。\ r \ n”);

app_easy_gap_start_connection_to_set(param-> report.adv_addr_type,
(uint8_t *)&param-> eport.adv_addr.addr,
ms_to_doubleslots(user_con_intv));
user_gapm_cancel();
}


静态void user_gapm_cancel(void)
{
/*禁用广告*/
Struct gapm_cancel_cmd *cmd = app_gapm_cancel_msg_create();
app_gapm_cancel_msg_send(cmd);
}


void user_on_scanning_completed(void)
{
printf_string(“扫描完成\ r \ n”);

app_easy_gap_start_connection_to();
}

我认为这是DSPS设计参考中引用的方式。我错过了什么?

JK_DIALOG.
离线
最后一次露面:5个月5天前
职员
加入:2016-08-22 23:07
嗨insi,为了连接

嗨INSI,为了连接中心必须能够看到广告,然后发送连接请求。因此,在连接时,这会启动临时扫描。如果将APP_EASY_GAP_START_CONNECTION_TO_SET(...)查看,则GAP_START_CONNECTION_CMD需要您的SCAN_INTERVAL,窗口等。因此,您将在此调用之后,您发送user_gapm_cancel(),这将停止此操作,因此取消回调。

如果删除此问题,请告诉我。

谢谢jk_dialog.

insi.
离线
最后一次露面:3年9个月前
加入:2017-07-20 15:50
嗨jk_dialog,

嗨jk_dialog,
谢谢你的回答,但仍然没有去我害怕。我改变了模式Gap_gen_discoverable,

我有DSPS版本5.150.2。在该示例中它使用了user_gapm_cancel()刚过app_easy_gap_start_connection_to_set (. .)。我有错误的版本还是关于时间设置有关间隔的时间设置?

我删除了user_gapm_cancel()10秒后(gapm_start_scan_cmd.intverval = 10.)流程是:
- 在此10S间隔期间,回调user_on_adv_report_ind(...)被调用多次,现在只有一次我'注册'设备连接使用app_easy_gap_start_connection_to_set(...)
- 10年代之后,回调user_on_scanning_completed()是正确的。

我得到的流量和状态是:
gapm_cmp_evt_handler:
msgid:w0
1.1操作:11
1.2状态:45

扫描完成

gapm_cmp_evt_handler
msgid:w0
2.1操作:12
2.2状态:41

所以我在协议问题之前获得超时。使用时app_easy_gap_start_connection_to_set (. .)。,我给了变化user_con_intv.参数从12.5 (dsps主机示例)到10000(假设10秒的胡乱猜测):

void user_on_adv_report_ind(struct gapm_adv_report_ind const * param)
{
if(memcmp(param-> report.addr.addr,mac_addr,6)== 0)
{
if(连接== false)
{
printf_string(“连接到设备\ r \ n”);

app_easy_gap_start_connection_to_set(param-> report.adv_addr_type,
(uint8_t *)&param-> eport.adv_addr.addr,
ms_to_doubleslots(user_con_intv));
连接=真;
}
}
}
有任何想法吗?

JK_DIALOG.
离线
最后一次露面:5个月5天前
职员
加入:2016-08-22 23:07
嗨Insi,

嗨Insi,

抱歉,我不太熟悉dsp的主机。我看到他们现在正在等待扫描完成发送连接命令。顺便说一下,10秒的连接间隔超出了BLE规范。

你能从user_config.h文件- user_scan_conf(如果适用)和user_central_conf发送你的以下配置吗?

谢谢JK.

insi.
离线
最后一次露面:3年9个月前
加入:2017-07-20 15:50
你好,

你好,

间隔> 10s根据BLE规格。是的,你是对的,但此时我一直在尝试一切。我使用了MS_TO_DOUBLESLOTS(10000),它分为1.25,所以我认为我是安全的。

我只有user_config.h。我也只有其他配置。但是,这些从BLE_APP_BAREBONE示例中直截了当。但请羽会检查某些东西是否是奇数。

在DSP示例中struct central_configuration.已定义,但我无法在当前(稍后)sdk中找到它。所以我认为它已经被弃用了。如果我错了,请纠正我。

再次感谢!

附件:
JK_DIALOG.
离线
最后一次露面:5个月5天前
职员
加入:2016-08-22 23:07
嗨insi,我们可以尝试使用

Hi Insi,我们可以尝试使用DSPS中心示例并使用您的外设地址修改此文件吗?让我们看看这种联系是否可行。