Hello,
i'm developing an interface based on nrf52. The app does a direct connection, performs some exchanges with the peripheral, and tells the peripheral to disconnect.
On Android I only use direct connection because i need to connect as fast as i can, and i make disconnection from peripheral side by sending a command to nrf52.
This works as expected until i get the first error 133. After that, the direct connection starts taking seconds (up to 6 s) before i get OnConnectionStateChanged callback. A lot of times i also get error OnConnectionStateChanged with error 133 right after connectGatt command was issued, and even if Bluetooth is off.
Performing a background connection seems to "fix it" in some way, after that i can perform direct connection again with no errors, untill i get error 133 again.
Do you have any advise on that?
Thanks
UPDATE:
By direct connection i mean connectGatt with autoConnect = 0. I believe it is something related to the Android stack because i don't see any delay in the trace sniffed.
The trace always shows the CONNECT_REQ whitout any delay after, and the whole procedure (connect / authentication / data trasfert / disconnect) always takes around 3.5 seconds.
The delay i experience is always before the actual connection is made and is always between the call to connectGatt function and the receive of onConnectionStateChanged callback, as you can see here:
08-01 14:57:13.006 D/BluetoothGatt: connect() - device: CB:89:36:71:EC:32, auto: false
08-01 14:57:13.006 D/BluetoothGatt: registerApp()
08-01 14:57:13.006 D/BluetoothGatt: registerApp() - UUID=2f611549-ccb6-4478-b3f6-b94efa047519
08-01 14:57:13.046 D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
08-01 14:57:16.046 D/BluetoothUtils: getBtEnabledContainers(): btContainers = []
08-01 14:57:16.086 D/BluetoothUtils: getBtEnabledContainers(): btContainers = []
08-01 14:57:16.096 D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=10 device=CB:89:36:71:EC:32