首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将iOS BLE大小更改为512 (SWIFT)

将iOS BLE大小更改为512 (SWIFT)
EN

Stack Overflow用户
提问于 2021-07-14 09:26:28
回答 2查看 4K关注 0票数 4

有没有办法将iOS上的MTU值从缺省值更改为任意值?

就像在安卓系统中一样,可以做requestMTU(512)。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-15 07:05:09

不,iOS上的MTU是自动设置的,最大值为185。这是对你问题的一个很好的回答:https://stackoverflow.com/a/42336001/10380092

注意:您可以这样获得MTU值(它将比ATT少3个字节):

connectedPeripheral.maximumWriteValueLength(for: .withoutResponse)

使用参数.withoutResponse很重要,因为.withResponse将始终返回512 (在写入响应时,iOS会自动选择以下方法:如果数据比MTU短,则单独写;如果数据大于MTU,则排队写)。

票数 7
EN

Stack Overflow用户

发布于 2021-09-27 15:25:59

这不是一个答案,但它是有趣的,而不是越来越少。这是苹果工程师对这个问题提出的请求的答复。

嗨,

是的,你所看到的问题确实是由于我怀疑的时间问题/种族状况造成的。您获得DPLE和MTU的原因几乎是同步的,因为iOS太早收到了MTU请求,而且由于它无法确定连接是否支持EDL,所以它以最小的响应响应。

在iOS 15中,这个争用条件被不同的处理,并且在链接准备就绪之前,MTU响应被推迟。从技术上讲,外围设备并没有做错什么,因为规范允许在任何时候发送MTU请求。就在iOS 14上,在不同的设备上,这个问题可能会弹出。

我不能告诉你不要在那个时候发送MTU请求,因为规范允许它。iOS 15正在以一种绕过这些问题的方式来处理这个问题。

将MTU请求延迟到PHY更新可能会降低问题发生的可能性,但不能保证它永远不会发生。这里的根本问题是HCI事件(如PHY或EDL更改)是由每个控制器本地发出的,因此无法保证仅仅因为您的外围设备报告了iPhone控制器也这样做了。不幸的是,这个时间/比赛的问题将是不同的控制器到控制器,因此从电话到电话。

所以我希望能帮上忙。我们正在开发的BLE外围设备几乎同时发送用于连接协商的所有命令。这就是导致我们无法获得数据长度扩展的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68375433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档