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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个职位/ 0个新职位
最后一篇
Ankit
离线
最后一次露面:5个月4周前
加入: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,
在连接参数更新手抖动期间,主站告诉从站,或者说哪个连接事件,以应用新的连接参数。这简要解释了你所观察到的东西。

因此,在您的应用程序中,我可能会建议尝试另一个连接参数,从延迟。奴隶可以选择不回答连接事件,直到奴隶延迟的次数。但是,如果slave有数据要发送,它可以选择在任何时间发送数据。这样,你就有了响应能力和电池寿命。

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

Ankit
离线
最后一次露面:5个月4周前
加入:2017-05-24 07:42
我的观察

我的观察

一种。Master和Slave都同意在1000 ms的Conn_Interval处发送Expter_pdu。我通过BLE Sniffer验证了它。
b.现在如果主从端要发送数据,观察到数据包是在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_params
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);
参数个数。延迟= 4;

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

在调整这些参数时还需要注意其他事项。

Ankit
离线
最后一次露面:5个月4周前
加入:2017-05-24 07:42
这是理解。让我们

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

所以,如果奴隶想要发送一些数据,可以立即发送而不等待下一个连接事件。

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

lt_dialog(未经验证)
嗨ankit,

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

连接事件(或称为连接瞬间)以递增的方式编号,n, n+1, n+2,等等。在命令LL_CONNECTION_UPDATE_REQ master发送给slave以更新连接参数中,有一个名为“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
离线
最后一次露面:5个月4周前
加入:2017-05-24 07:42
嗨,我已经捕获了日志

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

请参阅附加PDF第1页。
连接间隔更新到1000msec请求从从服务器发送到主服务器。
湾请求主人接受。
接受请求后,22个empty_pdu在旧的连接conn_interval (10ms)发送。您可以从日志中验证时间。

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

但是,当主服务器或从服务器想要进行通信时,从服务器再次发送连接参数更新请求,conn_interval为10ms。因此,这种交流可以快速进行。

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

这意味着新的conn_interval (10msec)在22 * 1000ms = 22000 ms(22秒)之后可用。在这22秒之前,如果主从机执行任何操作,都会延迟1秒。

所以,我想知道是否有办法减少这22个empty_pdu包,使更新后的conn_inerval立即生效?

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

嗨ankit,
从奴隶的角度来说,什么都做不了。这是主人决定的。在嗅探器日志中,LL_CONNECTION_UPDATE_REQ是主服务器告诉从服务器要应用哪些新参数以及何时应用的命令。