From 37686069ae1d7db2604c8aef96a79904f6ddd2f3 Mon Sep 17 00:00:00 2001 From: Jaikumar Ganesh Date: Wed, 30 Sep 2009 13:57:37 -0700 Subject: [PATCH] Set BondState to Bonding only if it not Bonded already. Sometimes we might be paired but the other end might not have stored the link key. So when we initiate connection the other end will ask for the authorization. This was setting out Bond State to Bonding. Change-Id: Iba6fd660ac90a3f48da62e7b6cf479054624a5af --- core/java/android/server/BluetoothEventLoop.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index 037e9d392bc33..0152223e8e76d 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -403,9 +403,13 @@ class BluetoothEventLoop { mBluetoothService.cancelPairingUserInput(address); return null; } - // Set state to BONDING, for incoming connections it will be set here. - // For outgoing connections, it gets set when call createBond. - mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_BONDING); + // Set state to BONDING. For incoming connections it will be set here. + // For outgoing connections, it gets set when we call createBond. + // Also set it only when the state is not already Bonded, we can sometimes + // get an authorization request from the remote end if it doesn't have the link key + // while we still have it. + if (mBluetoothService.getBondState().getBondState(address) != BluetoothDevice.BOND_BONDED) + mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_BONDING); return address; }