diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-10-08 16:11:13 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-10-08 16:11:13 -0400 |
commit | 9d5b58991ef90e91b3c942c80ae3502ed62d10aa (patch) | |
tree | b421fb05f57d97b05e141c255a620c2c5bf53e30 /core/java/android | |
parent | 33e21fcc99dd91061ea245984c4e9a1544cb943f (diff) | |
parent | e5d93b7ed983f98855555d560faf060836f1a52f (diff) | |
download | frameworks_base-9d5b58991ef90e91b3c942c80ae3502ed62d10aa.zip frameworks_base-9d5b58991ef90e91b3c942c80ae3502ed62d10aa.tar.gz frameworks_base-9d5b58991ef90e91b3c942c80ae3502ed62d10aa.tar.bz2 |
Merge change Ie5d93b7e into eclair
* changes:
Set the Bond State to NONE when we receive a Agent Cancel.
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/bluetooth/BluetoothDevice.java | 6 | ||||
-rw-r--r-- | core/java/android/server/BluetoothEventLoop.java | 21 | ||||
-rw-r--r-- | core/java/android/server/BluetoothService.java | 2 |
3 files changed, 27 insertions, 2 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 9c23746..39a74ac 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -287,9 +287,13 @@ public final class BluetoothDevice implements Parcelable { /** A bond attempt failed because of repeated attempts * @hide */ public static final int UNBOND_REASON_REPEATED_ATTEMPTS = 7; + /** A bond attempt failed because we received an Authentication Cancel + * by remote end + * @hide */ + public static final int UNBOND_REASON_REMOTE_AUTH_CANCELED = 8; /** An existing bond was explicitly revoked * @hide */ - public static final int UNBOND_REASON_REMOVED = 8; + public static final int UNBOND_REASON_REMOVED = 9; /** The user will be prompted to enter a pin * @hide */ diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index da1918a..c0b9a68 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -54,6 +54,7 @@ class BluetoothEventLoop { private static final int EVENT_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 1; private static final int EVENT_RESTART_BLUETOOTH = 2; private static final int EVENT_PAIRING_CONSENT_DELAYED_ACCEPT = 3; + private static final int EVENT_AGENT_CANCEL = 4; private static final int CREATE_DEVICE_ALREADY_EXISTS = 1; private static final int CREATE_DEVICE_SUCCESS = 0; @@ -90,6 +91,22 @@ class BluetoothEventLoop { mBluetoothService.setPairingConfirmation(address, true); } break; + case EVENT_AGENT_CANCEL: + // Set the Bond State to BOND_NONE. + // We always have only 1 device in BONDING state. + String[] devices = + mBluetoothService.getBondState().listInState(BluetoothDevice.BOND_BONDING); + if (devices.length == 0) { + break; + } else if (devices.length > 1) { + Log.e(TAG, " There is more than one device in the Bonding State"); + break; + } + address = devices[0]; + mBluetoothService.getBondState().setBondState(address, + BluetoothDevice.BOND_NONE, + BluetoothDevice.UNBOND_REASON_REMOTE_AUTH_CANCELED); + break; } } }; @@ -544,6 +561,10 @@ class BluetoothEventLoop { private void onAgentCancel() { Intent intent = new Intent(BluetoothDevice.ACTION_PAIRING_CANCEL); mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM); + + mHandler.sendMessageDelayed(mHandler.obtainMessage(EVENT_AGENT_CANCEL), + 1500); + return; } diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index 6d4d152..7ebd91d 100644 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -571,7 +571,7 @@ public class BluetoothService extends IBluetooth.Stub { return state.intValue(); } - private synchronized String[] listInState(int state) { + /*package*/ synchronized String[] listInState(int state) { ArrayList<String> result = new ArrayList<String>(mState.size()); for (Map.Entry<String, Integer> e : mState.entrySet()) { if (e.getValue().intValue() == state) { |