-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Android] Fix Android Bluetooth connect issue (Specific Android Device) #33087
[Android] Fix Android Bluetooth connect issue (Specific Android Device) #33087
Conversation
PR #33087: Size comparison from b4650b9 to a06d309 Decreases (2 builds for efr32)
Full report (71 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink)
|
mState = STATE_REQUEST_MTU; | ||
gatt.requestMtu(247); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The request of MTU from here is probably what broke on the devices. gatt calls should not be done inside of AndroidBluetoothGattCallback. See https://developer.android.com/develop/connectivity/bluetooth/ble/connect-gatt-server#broadcast-updates for guidance, where it is required to post to a different context to properly handle callbacks rather than calling back in, which can be unsafe on some Android platforms.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous state of the Android driver had the same problem, but adding complex statefulness to this file may add risk and hard-to-debug issues in other situations.
Fix #32868
BLE discoverService does not succeed because an unexpected callback is called during the BLE connection process on a specific Android device. To prevent this, the code was modified to manage the state for each callback and process only callbacks that match the state.