Re: [PATCHv2 0/4] Add support for bonding callbacks and retrying
From: Marcel Holtmann <marcel@holtmann.org>
Date: 2012-01-30 21:51:32
Hi Scott,
quoted
quoted
This adds plugin support for a callback called when bonding completes, either successfully or fails, or is cancelled. In the success or failure cases the callback may return TRUE, in which case the bonding is retried after a short backoff period.yesterday Johan and talked about this a little bit and I just wanna quickly iterate some small comments here.Great!quoted
So we should only allow retrying when we initiated the bonding. If the other side started the pairing, then retrying should not even be considered.I thought I put a check in for that, but I've just realized that after I separated out the autopair and the keyboard pairing stuff, that check ended up only in the keyboard pairing side. My intent was this entire path should be only when the host initiated the bonding, not the client.
to be honest, I did not get further into actually checking the code itself. I just wanted to ensure we are on the same and expecting how this is suppose to work ;)
quoted
We have to also ensure that we do not disconnect the ACL in between the retry attempts. Otherwise some car kits might cancel their pairing procedure and you have to have user interaction to get it back into pairing mode. So if the ACL gets disconnect, then we should just fail and cancel the bonding.In my testing, OS X/iOS drop the ACL between retry attempts - so we wouldn't be any worse than they are. I'm not sure whether it's even possible in bluez to avoid dropping the ACL?
Is Apple doing retried pairing (or auto-pairing) as well? Strictly speaking the ACL disconnect is host stack triggered. So you have HCI_Authentication_Requested and you can just execute that again with the same link. We also do have a ACL disconnect timeout handling of 2 seconds that will allow sockets to re-use the same ACL link. Can you provide some hcidump traces from your test cases? Regards Marcel