12个数据包后更新的连接参数

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

你好,

我的设备是电池供电设备,它始终处于连接模式。因此,为了节省电池电量,我有Conn_Interval增加。我有以下观察结果。

一种。当我的设备连接时,默认conn_interval是10ms。因此,exten_pdu正在从两侧(主设备和从站)每10ms传输。
湾检测到没有活动后,我的设备将conn_interval更改为1sec。收到新Conn_Param_update_Request后,新Conn_Interval在24个数据包之后生效。(从从站到掌握和从主站到从机12中的12。因此,新的Conn_Interval(1秒)在24 *旧Conn_Interval(10 ms)= 240ms后完全有效。
到目前为止一切都很好。
C。现在,如果主设备或从属想要进行任何活动,它们会在延迟1秒后收到数据包。到过来,我一旦我检测到任何活动,我就会设置旧Conn_Interval(10ms)。但传输24个空_Packets后,它会生效,然后他们开始在10ms时发送空_pdu。

所以,我的问题是有没有办法我可以在我发送conn_param_update_request后立即获得更新的conn_interval有效?

设备:
lt_dialog(未经验证)
嗨ankit,

嗨ankit,
在连接参数更新手抖动期间,主站告诉从站,或者说哪个连接事件,以应用新的连接参数。这简要解释了你所观察到的东西。

所以在您的应用程序中,我可能会建议尝试另一个连接参数,从延迟。从站可以选择不接听连接事件到从延迟延迟的次数。但是,如果从站有数据发送,它可以选择随时发送数据。通过这种方式,您将拥有响应性和电池寿命。

只需您的信息,Master具有连接参数的最终决定,这意味着您想要应用的参数可能不是实际应用的参数。它真的取决于它如何在主侧实施。

ankit.
离线
最后一次露面:2个月3周前
加入:2017-05-24 07:42
我的观察是

我的观察是

一种。Master和Slave都同意在1000 ms的Conn_Interval处发送Expter_pdu。我通过BLE Sniffer验证了它。
湾现在,如果主站或从站想要发送数据,则观察到数据包在1000ms的间隔之后正在发送。避免我在存在活动时将Conn_Interval降低到10毫秒。
C。但这种新的conn_interval在传输12个空_pdus后是有效的。此12个空_pdus以旧CONN_INTERVAL传输到1000毫秒。这意味着新的conn_interval 10 ms在12000毫秒后有效。

我想减少这12秒的延迟。那么,对于那将是延迟的工作?

空闲模式conn_param
params.intv_min = ms_to_doubleslots(980);
params.intv_max = ms_to_doubleslots(1000);
params.time_out = ms_to_timerUnits(3100);
params.latency = 0;

正常模式conn_param
params.intv_min = ms_to_doubleslots(10);
params.intv_max = MS_TO_DOUBLESLOTS(30);
params.time_out = ms_to_timerUnits(1250);
params.latency = 0;

lt_dialog(未经验证)
嗨ankit,

嗨ankit,
说conn_params是一个像这样的
params.intv_min = ms_to_doubleslots(10);
params.intv_max = MS_TO_DOUBLESLOTS(30);
params.time_out = ms_to_timerUnits(1250);
params.latency = 4;

和主设备和从站之间的商定的连接间隔和延迟是10ms和4.然后允许从站跳过4个连接事件。所以您可能发现的最佳案例是从Allave答案每50毫秒alymet_pdus。如果从站之间有数据,它会在下次连接事件中发送数据。

在调整这些参数时需要支付额外的注意。

ankit.
离线
最后一次露面:2个月3周前
加入:2017-05-24 07:42
据了解。让我们

据了解。让我们谈谈“如果从属从而在介于中传输数据,则会在下一个连接事件中发送数据。”

因此,如果奴隶想要发送一些数据,则可以立即发送,而无需等待下一个连接事件。

要做到我正在减少connection_interval时间。但它后很有效。

lt_dialog(未经验证)
嗨ankit,

嗨ankit,
并不真地。设备必须等待连接事件进行通信。这是如何设计的。

连接事件(或调用连接即时)以越来越多的方式编号,n,n + 1,n + 2等。在命令LL_CONNECTION_UPDATE_REQ MASTER发送到从站以更新连接参数,有一个名为“Instant”的字段指定连接事件编号。这通知从站,在此特定连接事件编号之后将应用新的连接参数。

对于conn_intv == 10ms和slave_latency == 4的示例。Slave在Connevent n下回答empty_pdu。如果在COPEVENT N之后没有数据需要通过从站传输,则最佳案例是在COPEVENT N + 5处的EXPLAVE答案。如果在Connevent N + 1之前有准备要传输的数据,则从站将在Connevent N + 1上传输它。因此,大致响应延迟,从准备到数据的数据被传输,大约小于10ms。

ankit.
离线
最后一次露面:2个月3周前
加入:2017-05-24 07:42
嗨,我已经捕获了日志

嗨,我通过BLE Sniffer捕获了日志,我在这里解释了我的问题。使用iOS应用程序执行操作。
默认连接间隔为10ms。因此,当设备连接时,它与10ms的Conn_Interval通信。一旦设备检测到现在连接空闲并且没有更多的数据从主站或从从属侧发送,它通过更改1000ms的conn_interval更新了连接参数。

请参阅附加PDF第1页。
一种。连接间隔更新到从从站发送到master的1000msec请求。
湾请求主人接受。
C。接受请求后,将在旧连接CONN_INTERVAL(10ms)处发送22个empty_pdus。您可以从日志中验证时间。

因此,在22 * 10ms = 220ms后,这里可以适用1000msec Conn_Interval。这种延迟可以是可接受的。

但是,当主设备或从站想要进行通信时,从站再次发送10ms的Conn_Interval的连接参数更新请求。因此,可以快速地进行这种通信。

请参阅附加PDF Page 2。
一种。连接间隔更新到从从站发送到master的10msec请求。
湾请求主人接受。
C。在接受请求之后,在旧连接CONN_INTERVAL(1000ms)上发送22个空_pdus。您可以从日志中验证时间。

这意味着新的Conn_Interval(10MSEC)在22 * 1000ms = 22000毫秒(22秒)之后适用。直到22秒,如果主站或从站执行任何操作,那么延迟1秒。

所以,我想知道有没有办法,我们可以减少那些22个空的_pdu数据包,立即使更新的conn_inerval生效?

附件:
lt_dialog(未经验证)
嗨ankit,

嗨ankit,
从奴隶一侧没有任何东西可以完成。它由掌握决定。在嗅探器日志中,LL_CONNECTION_UPDATE_REQ是MASTER告诉从站应用程序和何时应用的新参数的命令。