异步BTLE传输

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

大家好,

我正在使用SDK 5.0.3来编程DA14583蓝牙外围设备。
我对以下代码部分有一个特定的问题:

struct musts1_val_ntf_req * req = ke_msg_alloc_dyn(custs1_val_ntf_req,
task_custs1,
task_app,
custs1_val_ntf_req,
def_cust1_ntf_char_len);
......
KE_MSG_SEND(REQ);

我假设这个代码将导致通知消息(基于Custs1_val_ntf_req),这是一个异步消息,而无需等待确认数据包,就是这样的吗?
我想使用每个连接间隔(最高吞吐量)的可能数据包,这就是为什么我认为我应该在没有致谢的情况下使用邮件,这也是对的吗?
我的外围设备连接到三星Galaxy S5,支持(我不确定它,但我认为它是)每个连接间隔的5个数据包,因为我通过测量电流可以看到示波器上的一个连接intervall内的5个峰值由芯片绘制。
然而,基于计数我在智能手机上收到的分组(由计数器检查的分组丢失),并考虑由智能手机选择的连接间隔参数,我计算每个连接间隔的平均值2,5个分组。
当我预期的是每个CI的5个数据包时,这会导致我的假设,我的DA14583代码调用的发送操作是以某种方式确认,从而将每个CI的平均可用数据包放在2.5(每个CI可能的包中的一半)。
有人可以告诉我,无论我是对我的假设还是对或者我确实调用了Asynch消息发送,问题必须在其他地方?

亲切的问候,
弗洛里安

设备:
mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨fgruetzmacher,

嗨fgruetzmacher,

是的,您粘贴在帖子中的片段,分配并发送一个命令,即应用程序的配置文件级别将掌握,并且它将导致向中央发送通知,如果使用异步,那么您的意思是从主站没有应用程序ACK,那么是的,通知不涉及BLE规范中的ACK。

外围设备发送的数据包量取决于中央,例如,外设可能能够发送超过5个PackEcts(在58倍的情况下,可以在一个连接间隔中发送超过5个数据包),但这并不意味着中央将保持清醒并收到这些数据包,该标志表示对中央的外围希望发送更多数据是MD标志。通知中的流量控制和AckWodemement通过使用SN和NESN位的BLE堆叠(链路层)的较低级别来完成,以便实现懒惰的AckowleDement方案,因此在BLE中存在ACK方案,但不升高您可以从您的应用程序中控制的级别。您可以在BLE规范中找到有关MD,SN和NESN标志的更多信息。

谢谢mt_dialog.