在我们使用DA14581的BLE外设中,在连接时,外设发送Exchange MTU请求并通常接收Exchange MTU响应。我们在iOS设备上运行过,在DA14581发送Exchange MTU请求之后,iOS设备发送Exchange MTU请求,DA14581发送Exchange MTU响应。此时,iOS设备向DA14581特征发送一个写请求。DA14581发送一个写响应,然后通常会发送一个指示。在如上所述发生交换MTU序列的情况下,即使双方已成功地协商MTU,也从未发送任何指示。
在这种情况下,由于没有收到Exchange MTU响应,DA14581是否处于不执行指示的状态?
谢谢你的帮助。
关键词:
设备:
你好,帕金森,
谢谢你的在线提问。有没有可能共享一个嗅探器日志,这样我就可以通过它了解空中发生了什么?这种行为只发生在iOS上吗?
谢谢,下午好
当然,我会附上一个嗅探器文件。这只在iOS中观察到。我们已经广泛使用了Android,从来没有见过这个问题。
根据sniffer文件,这个有问题的MTU交换发生在第1169250、169448和169460帧。第一个写入请求在第169758帧到达DA14581,并有一个写入响应。我们的系统总是会发送一个指示,但是在这种情况下它不会。
你好,帕金森,
谢谢分享嗅探器日志-我会好好想想的。你能同时更新SDK版本吗?是SDK5.0.4吗?
谢谢,下午好
是的,我们使用的是SDK 5.0.4
你好,帕金森,
谢谢你的指示。我已经在内部升级了,所以我会在收到团队反馈后尽快回复你。
谢谢,下午好
你好,帕金森,
根据Bluetooth le4.0规范,DA14580已经发送了MTU\u交换请求并等待MTU交换响应。如果这个响应不是来自iPhone(客户端),那么发送安全请求就不是一个好方法。
我们假设您需要将MTU交换请求和安全请求调用机制解耦,以便首先进行MTU交换,然后从DA14580发送安全请求。
当MTU交换请求的响应挂起时,设备无法发送指示或通知。显然,由于可能与正在进行的安全进程冲突,iOS堆栈错误地丢弃了请求。为了不混淆iOS堆栈,建议先发出MTU请求,然后在完成安全请求后,将Exchange MTU请求与安全请求分离。
谢谢,下午好
嗨,我们已经更新了我们的外围设备,它使用对话框14581按照您的建议运行,将MTU交换请求和安全请求调用机制解耦,以便首先进行MTU交换,然后从DA14580发送安全请求。“不幸的是,此更改对连接到某些iOS设备时遇到的问题没有影响。我的具体问题是:在这个有问题的iOS案例中,Dialog发送Exchange MTU请求之后,iOS发送Exchange MTU请求,Dialog发送Exchange MTU响应。虽然这不是规范所涵盖的序列,但MTU已经成功协商,应该足以允许Dialog开始发送指示。这样的对话框内的设计更新是否可以处理这种情况?
谢谢你的关心。