⚠️
你好。。谢谢你来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有员额和帐户都已迁移。我们现在只接受新论坛的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
11个员额/0个新员额
最后一篇文章
杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
断开延迟

考虑一个场景,主控器和从属设备协商监控器超时20秒。如果通过观察rwble.c中这些事件的顺序检测到5秒的链路不活动(在管理器超时之前),则从机具有明确断开连接的代码

/*最后一个BLE事件。用于应用程序与BLE活动同步*/
类型定义枚举
{
BLE_EVT_SLP,
BLE_EVT_CSCNT,
BLE_EVT_RX,
BLE_EVT_TX,
好的,好的,
BLE_EVT_END,

}最后一次evt;

链接在t=0时断开,使用调试器断点,我观察到从代码通过内核消息GAPC_disconnect在t=5秒后正确启动断开连接。

然而,我在调试器中观察到的是,确认断开连接完成的GAPC_DISCONNECT_IND直到t=10左右才会出现。通过数据包嗅探器,我还看到广告直到t=10之后才会恢复。看起来,即使在t=10时命令GAPC_断开连接,实际断开连接也会延迟适当的时间。在我们的情况下,如果出现上述情况,必须立即断开连接。

谢谢

设备:
PM_对话框
离线
最后一次见到:4天12小时前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

出现此行为的最可能原因是连接间隔。连接间隔的配置有哪些?如果连接间隔太大,并且您没有使用延迟,我建议您使用较小的连接间隔并增加延迟。请检查附加的屏幕截图。当从机无需发送时,连接间隔约为2200ms(2000ms延迟+200ms连接间隔)。但是当从机有东西要发送时,在您的情况下,断开消息会唤醒设备,连接间隔大约为t 200ms。

谢谢,下午好

附件:
杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
你好,对话,

你好,对话,

感谢您提供的信息。在我们的场景中,CI非常短,为11.25ms,从机延迟为0。

当主设备不再向从设备发送空闲数据包时,您是否在长时间的监控超时期间尝试过该实验?

杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
是否有可能延迟

延迟是否可能是因为从机无法传输断开连接命令,因为主机和从机不再交换空闲?

PM_对话框
离线
最后一次见到:4天12小时前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

没有,我从未尝试过这个实验。你能再澄清一点吗?您正在使用哪些配置?

谢谢,下午好

杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
试试这个:

试试这个:

1.与11.25ms CI和20s ST(主和从)建立连接。
2.从连接开始,设置5(或更多)秒的计时器。
3.在计时器结束之前,断开天线与主机的连接
4.定时器到期时,从机发送GAPC_DISCONNECT_CMD。

从应用程序何时接收到GAPC\u断开\u IND?

我们希望这种情况立即发生,但它似乎被大大推迟了。

PM_对话框
离线
最后一次见到:4天12小时前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

当您发送GAPC_DISCONNECT_CMD命令时,响应为GAPC_DISCONNECT_IND事件,该事件在连接完成和操作完成时触发,您将获得GAPC_CMP_EVT事件。GAPC_DISCONNECT_IND事件将发送到应用程序任务,以通知链接已断开。收到此消息还意味着与链接相关的任务实例已清理,并且在建立新连接之前,无法再使用相应的任务实例。您的意思是,当您断开主机与对等外围设备的连接时,您不会获得GAPC_disconnect_IND?

谢谢,下午好

杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
下午对话,

下午对话,

我们确实收到了GAPC_DISCONNECT_IND,但不是立即收到。在指示到达之前,似乎需要几秒钟的时间。这几乎就像系统试图通过无线方式将断开指示发送回主机,但由于没有接收到主机的帧,所以在放弃和断开之前会延迟一点?

杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
对话

对话

我与您的一位工程经理进行了通信,他建议发送以下信息而不是GAPC_DISCONNECT,从而解决了延迟问题。

ke_msg_send_basic(LLC_LE_LINK_SUP_TO,ke_BUILD_ID(TASK_LLC,gapc_get_conhdl(conn_idx)),TASK_NONE);

杰米谢伯特
离线
最后一次见到:11个月1周前
加入:2014-10-24 14:17
对话

对话

我与您的一位工程经理进行了通信,他建议发送以下信息而不是GAPC_DISCONNECT,从而解决了延迟问题。

ke_msg_send_basic(LLC_LE_LINK_SUP_TO,ke_BUILD_ID(TASK_LLC,gapc_get_conhdl(conn_idx)),TASK_NONE);

PM_对话框
离线
最后一次见到:4天12小时前
工作人员
加入:2018-02-08 11:03
嗨JamesHiebert,

嗨JamesHiebert,

很高兴你解决了问题,谢谢你的提示。

谢谢,下午好