如何解决为什么有响应和无响应的MTU不同?
在iOS上,当我请求MTU时,我得到.withoutResponse
与.withResponse
的不同值。我意识到它可能会有所不同,因为该函数采用了该参数,但是为什么会有所不同?
在设备上(BLE 4.2):
(lldb) po peripheral.maximumWriteValueLength(for: .withoutResponse)
182
(lldb) po peripheral.maximumWriteValueLength(for: .withResponse)
512
在另一台设备上(BLE 5),我得到:
(lldb) po peripheral.maximumWriteValueLength(for: .withoutResponse)
509
(lldb) po peripheral.maximumWriteValueLength(for: .withResponse)
512
解决方法
无响应写入与MTU直接相关。 (MTU-3)。
使用writeWithResponse
时,iOS可以执行带有响应的写操作(最大长度为MTU-3),也可以执行“写长特征值”,该操作使用多个ATT事务来写入该值。在后一种情况下,唯一的限制因素是特征值的最大长度,标准将其设置为512字节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。