从外围设备请求新的 mtu 后,如何在 android(中央)上获取 MTU

How to get the MTU on android (Central) after requesting new mtu from a peripheral device

我为 android 开发了一个应用程序,在 TI cc2650 上开发了另一个应用程序。 这是一个 BLE 应用程序。 在此应用程序中,SP 充当中央设备,CC2650 充当外围设备。

一开始,在 android 端发现服务并订阅我从 cc2650 读取值的特征后,我调用 requestMtu(myDesiredNewMtu),之后 cc2650 使用协商的 MTU 响应事件 ATT_MtuUpdatedEvt,然后在 android 端我得到回调 BluetoothGattCallback 中的 onMtuChanged() 具有最终 MTU 值和状态(通常为成功)。

但对于目前的情况,我希望 CC2650 开始 MTU 协商。所以我从 CC2650 ATT_ExchangeMTUReq 发送了所需的 MTU,结果是 android 响应 "OK the new MTU is good, let's work with it (ATT_ExchangeMTURsp with the negotiated MTU)" 但随后 callback android onMtuChanged() 未调用!

所以我不知道最终协商的 MTU 是多少?

是的!

这就是 Android 当前构建 API 的方式,不幸的是...

作为解决方法,您可以将 MTU 发送到 Android 设备的通知特性。但是为什么需要从外设端进行MTU协商呢?从 Android 一侧进行应该是首选方法。