diff options
author | Irfan Sheriff <isheriff@google.com> | 2010-10-11 12:57:14 -0700 |
---|---|---|
committer | Irfan Sheriff <isheriff@google.com> | 2010-10-14 17:06:18 -0700 |
commit | cdf8edeec2f5a063e94966449744c7f513578847 (patch) | |
tree | 1d520c60ac8d708420f973e0e601fd9774ffb307 | |
parent | 0b9ba91fa54f58ef3272e0f252ac16691731a788 (diff) | |
download | frameworks_base-cdf8edeec2f5a063e94966449744c7f513578847.zip frameworks_base-cdf8edeec2f5a063e94966449744c7f513578847.tar.gz frameworks_base-cdf8edeec2f5a063e94966449744c7f513578847.tar.bz2 |
Remove synchronous bluetooth callbacks
Also, fixed an issue with disabling bluetooth coexistence
Change-Id: Ia7f68dfe6e8d587101ba8513783a0123ff0561a1
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 7dd1909..6ef3907 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -165,6 +165,10 @@ public class WifiStateMachine extends HierarchicalStateMachine { private static final int CMD_UNLOAD_DRIVER_SUCCESS = 5; /* Indicates driver unload failed */ private static final int CMD_UNLOAD_DRIVER_FAILURE = 6; + /* Set bluetooth headset proxy */ + private static final int CMD_SET_BLUETOOTH_HEADSET_PROXY = 7; + /* Set bluetooth A2dp proxy */ + private static final int CMD_SET_BLUETOOTH_A2DP_PROXY = 8; /* Start the supplicant */ private static final int CMD_START_SUPPLICANT = 11; @@ -1267,21 +1271,20 @@ public class WifiStateMachine extends HierarchicalStateMachine { } /** - * Whether to disable coexistence mode while obtaining IP address. This - * logic will return true only if the current bluetooth - * headset/handsfree state is disconnected. This means if it is in an - * error state, we will NOT disable coexistence mode to err on the side - * of safety. + * Whether to disable coexistence mode while obtaining IP address. We + * disable coexistence if the headset indicates that there are no + * connected devices. If we have not got an indication of the service + * connection yet, we go ahead with disabling coexistence mode. * * @return Whether to disable coexistence mode. */ - private synchronized boolean shouldDisableCoexistenceMode() { + private boolean shouldDisableCoexistenceMode() { + if (mBluetoothHeadset == null) return true; Set<BluetoothDevice> devices = mBluetoothHeadset.getConnectedDevices(); - - return (devices.size() != 0 ? true : false); + return (devices.size() != 0 ? false : true); } - private synchronized void checkIsBluetoothPlaying() { + private void checkIsBluetoothPlaying() { boolean isBluetoothPlaying = false; if (mBluetoothA2dp != null) { Set<BluetoothDevice> connected = mBluetoothA2dp.getConnectedDevices(); @@ -1299,23 +1302,19 @@ public class WifiStateMachine extends HierarchicalStateMachine { private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { - synchronized (WifiStateMachine.this) { if (profile == BluetoothProfile.HEADSET) { - mBluetoothHeadset = (BluetoothHeadset) proxy; + sendMessage(CMD_SET_BLUETOOTH_HEADSET_PROXY, proxy); } else if (profile == BluetoothProfile.A2DP) { - mBluetoothA2dp = (BluetoothA2dp)proxy; + sendMessage(CMD_SET_BLUETOOTH_A2DP_PROXY, proxy); } - } } public void onServiceDisconnected(int profile) { - synchronized (WifiStateMachine.this) { if (profile == BluetoothProfile.HEADSET) { - mBluetoothHeadset = null; + sendMessage(CMD_SET_BLUETOOTH_HEADSET_PROXY, null); } else if (profile == BluetoothProfile.A2DP) { - mBluetoothA2dp = null; + sendMessage(CMD_SET_BLUETOOTH_A2DP_PROXY, null); } - } } }; @@ -1575,6 +1574,12 @@ public class WifiStateMachine extends HierarchicalStateMachine { if (DBG) Log.d(TAG, getName() + message.toString() + "\n"); SyncParams syncParams; switch (message.what) { + case CMD_SET_BLUETOOTH_HEADSET_PROXY: + mBluetoothHeadset = (BluetoothHeadset) message.obj; + break; + case CMD_SET_BLUETOOTH_A2DP_PROXY: + mBluetoothA2dp = (BluetoothA2dp) message.obj; + break; /* Synchronous call returns */ case CMD_PING_SUPPLICANT: case CMD_REMOVE_NETWORK: @@ -2468,10 +2473,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { mModifiedBluetoothCoexistenceMode = false; mPowerMode = DRIVER_POWER_MODE_AUTO; - // TODO(): Incorporate the else part in the state machine - // If mBluetoothHeadset == null, means it not conencted to the - // service yet. - if (mBluetoothHeadset != null && shouldDisableCoexistenceMode()) { + if (shouldDisableCoexistenceMode()) { /* * There are problems setting the Wi-Fi driver's power * mode to active when bluetooth coexistence mode is |