linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] android/bluetooth: Update pairing status on pair complete event
@ 2014-08-07  8:39 Lukasz Rymanowski
  2014-08-20  6:58 ` Lukasz Rymanowski
  2014-08-20 10:02 ` Szymon Janc
  0 siblings, 2 replies; 3+ messages in thread
From: Lukasz Rymanowski @ 2014-08-07  8:39 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Lukasz Rymanowski

So far BfA updates android bond state after link key(s) are
distributed. With LE pairing it might happen that no keys are
distributed e.g remote device has Initiator Key Distribution and
Responder Key Distribution set to 0. In such case link is encrypted with
STK and after its disconnected, pairing needs to be done again.

With this patch Android will get update about pairing complete just
after BfA gets pairing complete from the kernel. It solve issue with not
updated Android settings application, which is hanging on "Pairing", in
case when no keys are distributed.

However, bacause Android does not see the difference between bonded /
paired devices and because Android does not allow to update its bond
state if it is not in bonding state, BfA updates Android with BONDED
state on pair_complete with success. This is how we are doing so far
for bonding and non-bonding pairing.

Note: BfA will update its bonded state after link key(s) are
distribiuted.
---
 android/bluetooth.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/android/bluetooth.c b/android/bluetooth.c
index 655844d..8c32d48 100644
--- a/android/bluetooth.c
+++ b/android/bluetooth.c
@@ -4065,19 +4065,16 @@ static void pair_device_complete(uint8_t status, uint16_t length,
 
 	DBG("status %u", status);
 
-	/*
-	 * On success bond state change will be send when new link key or LTK
-	 * event is received
-	 */
-	if (status == MGMT_STATUS_SUCCESS)
-		return;
-
 	dev = find_device(&rp->addr.bdaddr);
 	if (!dev)
 		return;
 
+	/*
+	 * Update pairing and paired status. Bonded status will be updated once
+	 * any link key come
+	 */
 	update_device_state(dev, rp->addr.type, status_mgmt2hal(status), false,
-								false, false);
+								!status, false);
 }
 
 static uint8_t select_device_bearer(struct device *dev)
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-08-20 10:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-07  8:39 [RFC] android/bluetooth: Update pairing status on pair complete event Lukasz Rymanowski
2014-08-20  6:58 ` Lukasz Rymanowski
2014-08-20 10:02 ` Szymon Janc

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).