使用app_easy_gap_disconnect后,无法再连接?

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

你好

我尝试使用Combine AT命令进入主机项目。

所以我使用DA14585_DSPS_V_6.150.2主机部分。

和我练习connect form user_scan_start() - >调用回(user_on_adv_report_ind())

还要修改如下功能

void app_easy_gap_start_connection_to_set(uint8_t peer_addr_type,
const uint8_t * peer_addr,uint16_t intv)
{
struct gapm_start_connection_cmd * msg;
msg = app_easy_gap_start_connection_to_msg_create();
msg-> nb_peers = 1;
memcpy(&msg->对等体[0] .addr,peer_addr,bd_addr_len);
msg->对等体[0] .addr_type = peer_addr_type;
msg-> con_intv_max = intv;
msg-> con_intv_min = intv;
返回;
}
//丹尼斯添加
void app_easy_gap_start_connection_to_set_send(uint8_t peer_addr_type,
const uint8_t * peer_addr,uint16_t intv)
{
struct gapm_start_connection_cmd * msg;
msg = app_easy_gap_start_connection_to_msg_create();
msg-> nb_peers = 1;
memcpy(&msg->对等体[0] .addr,peer_addr,bd_addr_len);
msg->对等体[0] .addr_type = peer_addr_type;
msg-> con_intv_max = intv;
msg-> con_intv_min = intv;
app_connect_start_msg_send((void *)msg);
返回;
}

到目前为止,代码可以正常工作,

但是当我呼叫使用app_easy_gap_disconnect并尝试再次连接。

它不能再次调用回user_on_connection。

我不知道为什么 ?

有什么我想念的吗?

丹尼斯

设备:
PM_DIALOG.
离线
最后一次露面:1天16小时前
职员
加入:2018-02-08 11:03
嗨Dennis3430,

嗨Dennis3430,

由于您的项目基于DSP的主机(Central)项目,您是否可以检查在断开设备外设后重新启动扫描吗?请尝试调试代码。调用app_easy_gap_disconnect()后代码在哪里?

谢谢,PM_DIALOG.

Dennis3430
离线
最后一次露面:6个月前1年
加入:2019-08-27 07:42
你好

你好

所有退出在一个简单的时间,我添加表单调用函数user_on_set_dev_config_complete()

吮吸如下

void user_on_set_dev_config_complete(void)
{
app_db_init_start();
host_cmd_timer = app_easy_timer(hots_cmd_timer_cnt,at_cmd_exec);

}

静态void at_cmd_exec(void)
{
if(at_cmd == _ at_none)
parser_atcmd();
别的 {
切换(AT_CMD)
{
案例_at_scan:

休息;
案例_at_sacn_wait:

休息;
案例_at_connect:
if(connect_idx == - 1)
{
app_easy_gap_start_connection_to_set_send(0,(uint8_t *)cmd_para,ms_to_doubleslots(user_con_intv));
AT_CMD = _AT_CONNECT_WAIT;
}

案例_at_connect_wait:
if(at_cmd_state == _ ats_end){
AT_CMD = _AT_NONE;
}
休息;
案例_at_disconnect:
if(connect_idx> = 0)
{
app_easy_gap_disconnect(connect_idx);
connect_idx = -1;
AT_CMD = _AT_NONE;
}
休息;
案例_at_disconnect_wait:
AT_CMD = _AT_NONE;
休息;
默认:
AT_CMD = _AT_NONE;
休息;

}
}

host_cmd_timer = app_easy_timer(hots_cmd_timer_cnt,at_cmd_exec);

}

即使我使用重置,它仍然无法再次重新连接到设备

这是我添加了Reeset函数

//丹尼斯添加
void app_easy_gap_reset(void)
{
struct gapm_reset_cmd * cmd = app_gapm_reset_msg_create();
cmd->操作= gapm_reset;
app_gapm_reset_msg_send(cmd);
}

我看到这个过程重新启动,但是当需要连接客户端设备时,它会在我调用app_easy_gap_start_connection_to_set_send()后没有更多的工作,所谓的它会调用user_on_connection或user_on_connect_failed

但它看起来像没有回调,仍然工作其他线程。

丹尼斯

PM_DIALOG.
离线
最后一次露面:1天16小时前
职员
加入:2018-02-08 11:03
嗨Dennis3430,

嗨Dennis3430,

你为什么不看看无附加参考应用程序的例子?在这个项目中,您可以通过UART发送命令。

https://www.dialog-seminile.com/produ亚博电竞菠菜cts/smartbondtm-codeless-commands.

谢谢,PM_DIALOG.

Dennis3430
离线
最后一次露面:6个月前1年
加入:2019-08-27 07:42
你好

你好

对不起很多问题。

但是我贝布雷对AT命令一无所有。

我的问题是为什么我用函数“app_easy_gap_disconnect”来断开连接,

不能连接再次

我想也许我用错误的方式来连接设备,或使用错误的方式来断开连接。

或者我需要的一些规则。

我会尝试再次阅读,也可以找不到无附加的项目。

谢谢

丹尼斯

PM_DIALOG.
离线
最后一次露面:1天16小时前
职员
加入:2018-02-08 11:03
嗨Dennis3430,

嗨Dennis3430,

您是否可以指明设备是否已连接?之后,请在调试模式下运行它,并在断开回调中添加断点。

谢谢,PM_DIALOG.