diff options
author | Irfan Sheriff <isheriff@google.com> | 2011-03-01 11:32:24 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-01 11:32:24 -0800 |
commit | 2f6409686f4ecced13474db9307fcd33a805b2bf (patch) | |
tree | ae2182b9cbbcf6b5ab14cf230b972ae026bdf5fe /wifi | |
parent | 6e0e0ec980505c0717d3bf4b1b5e048f25da9c95 (diff) | |
parent | ebe606fccd9293674273d5f73246e0e8e6e6ddcf (diff) | |
download | frameworks_base-2f6409686f4ecced13474db9307fcd33a805b2bf.zip frameworks_base-2f6409686f4ecced13474db9307fcd33a805b2bf.tar.gz frameworks_base-2f6409686f4ecced13474db9307fcd33a805b2bf.tar.bz2 |
Merge "Using AsyncChannel for wifi connectivity"
Diffstat (limited to 'wifi')
-rw-r--r-- | wifi/java/android/net/wifi/IWifiManager.aidl | 10 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiManager.java | 67 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 23 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WpsStateMachine.java | 4 |
4 files changed, 56 insertions, 48 deletions
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 7a9276d..1d115b1 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -103,16 +103,6 @@ interface IWifiManager void clearBlacklist(); - void connectNetworkWithConfig(in WifiConfiguration wifiConfig); - - void connectNetworkWithId(int networkId); - - void saveNetwork(in WifiConfiguration wifiConfig); - - void forgetNetwork(int networkId); - - WpsResult startWps(in WpsConfiguration config); - Messenger getMessenger(); } diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 0807a24..5238899 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -18,6 +18,7 @@ package android.net.wifi; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.content.Context; import android.net.DhcpInfo; import android.os.Binder; import android.os.IBinder; @@ -26,6 +27,8 @@ import android.os.RemoteException; import android.os.WorkSource; import android.os.Messenger; +import com.android.internal.util.AsyncChannel; + import java.util.List; /** @@ -447,6 +450,9 @@ public class WifiManager { /* Number of currently active WifiLocks and MulticastLocks */ private int mActiveLockCount; + /* For communication with WifiService */ + private AsyncChannel mAsyncChannel = new AsyncChannel(); + /** * Create a new WifiManager instance. * Applications will almost always want to use @@ -1032,6 +1038,37 @@ public class WifiManager { } /* TODO: deprecate synchronous API and open up the following API */ + + /* Commands to WifiService */ + /** @hide */ + public static final int CMD_CONNECT_NETWORK = 1; + /** @hide */ + public static final int CMD_FORGET_NETWORK = 2; + /** @hide */ + public static final int CMD_SAVE_NETWORK = 3; + /** @hide */ + public static final int CMD_START_WPS = 4; + + /* Events from WifiService */ + /** @hide */ + public static final int CMD_WPS_COMPLETED = 11; + + /* For system use only */ + /** @hide */ + public static final int CMD_ENABLE_TRAFFIC_STATS_POLL = 21; + /** @hide */ + public static final int CMD_TRAFFIC_STATS_POLL = 22; + + /** + * Initiate an asynchronous channel connection setup + * @param srcContext is the context of the source + * @param srcHandler is the handler on which the source receives messages + * @hide + */ + public void asyncConnect(Context srcContext, Handler srcHandler) { + mAsyncChannel.connect(srcContext, srcHandler, getMessenger()); + } + /** * Connect to a network with the given configuration. The network also * gets added to the supplicant configuration. @@ -1048,9 +1085,7 @@ public class WifiManager { if (config == null) { return; } - try { - mService.connectNetworkWithConfig(config); - } catch (RemoteException e) { } + mAsyncChannel.sendMessage(CMD_CONNECT_NETWORK, config); } /** @@ -1067,9 +1102,7 @@ public class WifiManager { if (networkId < 0) { return; } - try { - mService.connectNetworkWithId(networkId); - } catch (RemoteException e) { } + mAsyncChannel.sendMessage(CMD_CONNECT_NETWORK, networkId); } /** @@ -1091,9 +1124,8 @@ public class WifiManager { if (config == null) { return; } - try { - mService.saveNetwork(config); - } catch (RemoteException e) { } + + mAsyncChannel.sendMessage(CMD_SAVE_NETWORK, config); } /** @@ -1110,25 +1142,22 @@ public class WifiManager { if (netId < 0) { return; } - try { - mService.forgetNetwork(netId); - } catch (RemoteException e) { } + + mAsyncChannel.sendMessage(CMD_FORGET_NETWORK, netId); } /** * Start Wi-fi Protected Setup * * @param config WPS configuration - * @return WpsResult containing pin and status * @hide - * TODO: with use of AsyncChannel, return value should go away */ - public WpsResult startWps(WpsConfiguration config) { - try { - return mService.startWps(config); - } catch (RemoteException e) { - return new WpsResult(WpsResult.Status.FAILURE); + public void startWps(WpsConfiguration config) { + if (config == null) { + return; } + + mAsyncChannel.sendMessage(CMD_START_WPS, config); } /** diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index f9d2772..d6f8e51 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -59,6 +59,7 @@ import android.os.Binder; import android.os.IBinder; import android.os.INetworkManagementService; import android.os.Message; +import android.os.Messenger; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; @@ -805,22 +806,10 @@ public class WifiStateMachine extends HierarchicalStateMachine { sendMessage(obtainMessage(CMD_FORGET_NETWORK, netId, 0)); } - public WpsResult startWps(AsyncChannel channel, WpsConfiguration config) { - WpsResult result; - switch (config.setup) { - case PIN_FROM_DEVICE: - case PBC: - case PIN_FROM_ACCESS_POINT: - //TODO: will go away with AsyncChannel use from settings - Message resultMsg = channel.sendMessageSynchronously(CMD_START_WPS, config); - result = (WpsResult) resultMsg.obj; - resultMsg.recycle(); - break; - default: - result = new WpsResult(Status.FAILURE); - break; - } - return result; + public void startWps(Messenger replyTo, WpsConfiguration config) { + Message msg = obtainMessage(CMD_START_WPS, config); + msg.replyTo = replyTo; + sendMessage(msg); } public void enableRssiPolling(boolean enabled) { @@ -1588,7 +1577,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { break; case CMD_START_WPS: /* Return failure when the state machine cannot handle WPS initiation*/ - mReplyChannel.replyToMessage(message, message.what, + mReplyChannel.replyToMessage(message, WifiManager.CMD_WPS_COMPLETED, new WpsResult(Status.FAILURE)); break; default: diff --git a/wifi/java/android/net/wifi/WpsStateMachine.java b/wifi/java/android/net/wifi/WpsStateMachine.java index 92f9f57..32d77a1 100644 --- a/wifi/java/android/net/wifi/WpsStateMachine.java +++ b/wifi/java/android/net/wifi/WpsStateMachine.java @@ -110,7 +110,7 @@ class WpsStateMachine extends HierarchicalStateMachine { Log.e(TAG, "Invalid setup for WPS"); break; } - mReplyChannel.replyToMessage(message, message.what, result); + mReplyChannel.replyToMessage(message, WifiManager.CMD_WPS_COMPLETED, result); if (result.status == Status.SUCCESS) { transitionTo(mActiveState); } else { @@ -172,7 +172,7 @@ class WpsStateMachine extends HierarchicalStateMachine { break; case WifiStateMachine.CMD_START_WPS: /* Ignore request and send an in progress message */ - mReplyChannel.replyToMessage(message, message.what, + mReplyChannel.replyToMessage(message, WifiManager.CMD_WPS_COMPLETED, new WpsResult(Status.IN_PROGRESS)); break; default: |