改变连接参数后连接事件计数器的奇怪行为

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
10个帖子/ 0新
最后一篇
vargaadam.
离线
最后一次露面:1个月3周前
加入:2019-12-31 16:19
改变连接参数后连接事件计数器的奇怪行为

你好,

我通过以下步骤重现这个问题

- 带连接间隔的中央/最大值设置为50

- 中心连接到6,7或8个外围设备

- 连接到外围设备后,每个连接的Central集合间隔min / max到25

- 连接参数在中央和外围侧无误差更新并完成

发生了什么:

Cconnection事件计数器(由ad_ble_get_lld_stats()和cmac_info_table_ptr->ble_conn_evt_counter提供)在中心端行为错误(在我看来),因为对于某些连接,事件计数器的行为与预期一致(计数器增加的速率是两倍),但对于某些连接,该速率保持与设置50相对应。这只发生在中心端,所有外围计数器都根据新的连接间隔(25)增加。通常在8个连接中,总是第1、6、7和8个连接计数器被损坏。这直到6个连接才会发生。根据各方的api,连接参数更新成功。我不确定连接间隔本身是否更新了,但即使更新了,conn. event计数器也应该保持中央和外围设备的同步。

我正在使用SDK 10.0.8.105和DA14695用于中央和外围设备。

你能检查一下,或者解释我出错的地方吗?

问候,

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

嗨vargaadam,

让我检查一下,我会回复你。

谢谢,PM_DIALOG.

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

嗨vargaadam,

是否有可能提供BLE嗅探器捕获,这样我们就可以了解在空中发生的事情?您是否可以澄清多外围功能是否按预期工作?你在空中检查了包的序列吗?你能看到正确的顺序吗?如果您可以提供额外的输入和解释您的问题,那么了解问题是非常有帮助的。

谢谢,PM_DIALOG.

vargaadam.
离线
最后一次露面:1个月3周前
加入:2019-12-31 16:19
你好,

你好,

我没有嗅探器,也没有检查消息时间。问题是相对于外围端,中心端上的事件计数器变得不同步。

一个例子:

我连接到8个外围设备50.最小/最大连接间隔。

因此,连接间隔计数器在中央和外设侧同步,这意味着即即。在1秒内,他们增加了16次(正确相应62.5ms间隔)。

然后我在中心拨打ble_gap_conn_param_update()25.最小/最大(0从,300监督)为所有连接索引。我得到相应的连接参数更新和连接参数更新完成的事件显示成功。在外围,一切都显示出udpate的发生。

然后,如果我检查连接间隔计数器,我看到在中央,它在1秒内增加32.时间(对应31.25Ms间隔)为第2,第3,第4和第5连接,但只增加16.第1,第6,第7和第8个连接指数的时间。所有外围展示32.事件计数器的时间增加。

因此,当我看到连接间隔计数器时,将变为des同步。如果我记得正确,它只发生在5个连接以上。

问候,

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

嗨vargaadam,

拥有嗅探器捕获是非常有帮助的,以便我们可以理解更好的问题。但是,非常感谢解释。

如果我理解正确的话,一旦中央向所有连接的外设发送连接参数更新,就会发生这种去同步,因此连接间隔从50ms更改为25ms。虽然连接间隔是50ms(更新之前),但连接间隔计数按预期工作。

中央是否将连接参数更新请求发送到所有连接的外围设备,并且它们无法接收,或者它们会收到它,但它失败了?BLE_GAP_CONN_PARAM_UPDATE()API返回BLE错误代码(BLE_ERROR_T),因此您可以检查中央请求25ms连接间隔时的状态是什么。API为所有外围设备返回的状态是什么?如果所有这些都接受它并且不会失败,则每个外围设备的状态应为BLE_STATUS_OK(= 0x00)。除非,请说明BLE错误代码是什么。

中央应该为更新的连接间隔之间的所有8个外设连接提供服务。由于非常短的连接间隔(25毫秒),8个连接可能不适合,因此,中央不能与所有的连接“交谈”。

另外,不建议最小连接时间间隔和最大连接时间间隔使用相同的值。如果两者有相同的值,这意味着BLE设备应该只在一个特定的时间在空中。建议在最小和最大连接间隔之间至少有10ms的间隔,以便设备有重试的可能性。

我强烈建议执行以下测试:

测试1

在更新参数请求后,使用100ms初始连接间隔(而不是50ms)和新的连接间隔,而新的连接间隔(而不是25ms)。结果是什么?您是否能够复制此行为?

如果你能在最小值和最大值之间至少有10ms的间隔,那就太好了。

BLE_GAP_CONN_PARAM_UPDATE()RERUNS的每个外设的BLE错误代码是什么?

测试2

初始连接间隔为50ms,新连接间隔为25ms,但只有一个外设连接。你能告诉我结果吗?

总之,我们怀疑25毫秒对于服务8个外围连接来说太短。

谢谢,PM_DIALOG.

vargaadam.
离线
最后一次露面:1个月3周前
加入:2019-12-31 16:19
你好,

你好,

  • 只是为了清楚连接间隔是50.25.,这对应于62.5ms31.25ms.间隔(而不是你写的50ms和25ms)
  • 我已经说过,所有api函数返回OK,连接参数更新事件在双方都是OK的。
  • “是中央向所有连接的外设发送连接参数更新请求却无法接收,还是接收到但失败?”不,我说过外设更新连接间隔,问题在中央,尽管中央启动了参数更新。
  • “中央应在更新的连接间隔之间提供所有8个外设连接。由于连接间隔非常短(25ms),8个连接可能不适合,因此,中央无法”讲“所有这些。“这不是太具体。目前,中央和外围设备之间没有任何数据传输。这不是带宽,并且我说,外围设备更新其连接间隔,因此它们得到了消息。
  • “另外,不建议在最小和最大连接间隔中使用相同的值。如果两者有相同的值,这意味着BLE设备应该只在一个特定的时间在空中。建议在最小和最大连接间隔之间至少有10ms的间隔,以便设备有重试的可能性。”我认为这份声明与你的发行说明中的​​已知限制105.08:控制器堆栈不会改变应用程序为LL_CONNECTION_PARAM_REQ提供的最小和最大连接间隔。这可能导致多连接期间调度冲突。解决方法:从应用程序中设置最小和最大连接间隔的相同值,以触发控制器,以便在多连接方案中选择具有最小调度冲突的值。
  • “总之,我们怀疑25ms对于中央服务器来说太短了,无法提供8个外围连接。”正如我所说,它不是25ms,但32.5ms,有一个规则,我可以设置的值,因为API提供的更新参数OK ?

问候,

vargaadam.
离线
最后一次露面:1个月3周前
加入:2019-12-31 16:19

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

嗨vargaadam,

为延迟道歉。我在检查这个,所以我会尽快回复你。感谢您的提醒。

谢谢,PM_DIALOG.

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

嗨vargaadam,

我会在内部询问团队关于note 105.08的情况。谢谢您对连接间隔的说明。是否有可能使用更大的连接间隔运行所建议的TEST 1 ?我们想检查是否该行为可以复制与一个更大的连接间隔。

谢谢,PM_DIALOG.

vargaadam.
离线
最后一次露面:1个月3周前
加入:2019-12-31 16:19
此刻我不能这样做,

目前我还做不到,但希望到下周或下周初我能有机会。