异步BTLE传输

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
fgruetzmacher
离线
最后看到:3年3个月前
加入:2016-11-07 14:10
异步BTLE传输

大家好,

我使用SDK 5.0.3程序DA14583蓝牙外设。
我对以下代码部分有一个具体的疑问:

struct custs1_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(要求的);

我假设这段代码将产生一个Notification消息(基于CUSTS1_VAL_NTF_REQ),这是一个异步消息,无需等待一个确认包,对吗?
我想尽可能多地利用每个连接间隔数据包(最高吞吐量),这就是为什么我认为我应该使用消息没有确认,这也是对的吗?
我的外设连接到三星Galaxy S5,它支持(我不是很确定,但我认为它是)每个连接间隔5个数据包,因为我可以在示波器上通过测量芯片绘制的电流在一个连接间隔内看到5个峰值。
但是,根据我在某一时间段内在智能手机上收到的数据包计数(通过计数器检查丢包),并考虑智能手机选择的连接间隔参数,我计算出平均每个连接间隔2.5个数据包。
正如我所预期的,每个CI是5个包,这使我假设,DA14583代码调用的发送操作以某种方式得到了确认,从而将每个CI的平均可用包降低到2.5(每个CI可能的包的一半)。
有人能告诉我,我的假设是正确的,还是我确实调用了异步消息发送,问题一定是在其他地方?

亲切的问候,
弗洛里安

设备:
MT_dialog
离线
最后看到:4个月2周之前
工作人员
加入:2015-06-08 34
嗨fgruetzmacher,

嗨fgruetzmacher,

是的你在帖子贴的片段,分配并发送一个命令配置文件的应用程序将处理,它会导致发送通知中央有一个连接,如果与异步你意味着没有应用程序从主消,那么是的,通知不涉及ack的BLE规范。

数据包发送的外围的数量取决于中央,例如外围可以发送超过5 packects (58 x 5包以上的情况下可以发送一个连接间隔)但这并不意味着,中央将保持清醒和接收这些包,向中心指示外设希望发送更多数据的标志是MD标志。流控制和ackowledgement通知是由BLE栈的较低水平(链路层)使用SN和公布一些为了实现一个懒惰ackowledgement计划,所以有一个ack计划在祝福而不是在一个更高的层次,你可以控制您的应用程序。你可以在BLE规范中找到更多关于MD, SN和NESN标志的信息。

由于MT_dialog