从外围设备请求新的 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 一侧进行应该是首选方法。
我为 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 一侧进行应该是首选方法。