summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2010-10-11 12:57:14 -0700
committerIrfan Sheriff <isheriff@google.com>2010-10-14 17:06:18 -0700
commitcdf8edeec2f5a063e94966449744c7f513578847 (patch)
tree1d520c60ac8d708420f973e0e601fd9774ffb307 /wifi
parent0b9ba91fa54f58ef3272e0f252ac16691731a788 (diff)
downloadframeworks_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
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java44
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