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