diff options
author | Irfan Sheriff <isheriff@google.com> | 2010-09-02 12:48:20 -0700 |
---|---|---|
committer | Irfan Sheriff <isheriff@google.com> | 2010-09-02 12:48:20 -0700 |
commit | 25c9bf2396ceb48fc5cfd5c1dd58aa4d4750d056 (patch) | |
tree | 108948322de11a32b727961e56d3a3e99abaebfd | |
parent | ee6d676c5b997a1214e96b6ba3755054382717c5 (diff) | |
download | frameworks_base-25c9bf2396ceb48fc5cfd5c1dd58aa4d4750d056.zip frameworks_base-25c9bf2396ceb48fc5cfd5c1dd58aa4d4750d056.tar.gz frameworks_base-25c9bf2396ceb48fc5cfd5c1dd58aa4d4750d056.tar.bz2 |
Add set/get band in WifiNative
Add support for set and get band and set the default
to 2GHz for now till we get a fix on issues
with 11A
Change-Id: Icb9bddc353e4bf013bdb8a08d9b4ee3451c282f4
-rw-r--r-- | core/jni/android_net_wifi_Wifi.cpp | 26 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiNative.java | 4 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 15 |
3 files changed, 45 insertions, 0 deletions
diff --git a/core/jni/android_net_wifi_Wifi.cpp b/core/jni/android_net_wifi_Wifi.cpp index aec537d..c5ccc43 100644 --- a/core/jni/android_net_wifi_Wifi.cpp +++ b/core/jni/android_net_wifi_Wifi.cpp @@ -411,6 +411,30 @@ static jint android_net_wifi_getPowerModeCommand(JNIEnv* env, jobject clazz) return (jint)power; } +static jboolean android_net_wifi_setBandCommand(JNIEnv* env, jobject clazz, jint band) +{ + char cmdstr[25]; + + int numWritten = snprintf(cmdstr, sizeof(cmdstr), "DRIVER SETBAND %d", band); + int cmdTooLong = numWritten >= (int)sizeof(cmdstr); + + return (jboolean)!cmdTooLong && doBooleanCommand(cmdstr, "OK"); +} + +static jint android_net_wifi_getBandCommand(JNIEnv* env, jobject clazz) +{ + char reply[25]; + int band; + + if (doCommand("DRIVER GETBAND", reply, sizeof(reply)) != 0) { + return (jint)-1; + } + // reply comes back in the form "Band X" where X is the + // number we're interested in. + sscanf(reply, "%*s %u", &band); + return (jint)band; +} + static jboolean android_net_wifi_setNumAllowedChannelsCommand(JNIEnv* env, jobject clazz, jint numChannels) { char cmdstr[256]; @@ -561,6 +585,8 @@ static JNINativeMethod gWifiMethods[] = { { "stopPacketFiltering", "()Z", (void*) android_net_wifi_stopPacketFiltering }, { "setPowerModeCommand", "(I)Z", (void*) android_net_wifi_setPowerModeCommand }, { "getPowerModeCommand", "()I", (void*) android_net_wifi_getPowerModeCommand }, + { "setBandCommand", "(I)Z", (void*) android_net_wifi_setBandCommand}, + { "getBandCommand", "()I", (void*) android_net_wifi_getBandCommand}, { "setNumAllowedChannelsCommand", "(I)Z", (void*) android_net_wifi_setNumAllowedChannelsCommand }, { "getNumAllowedChannelsCommand", "()I", (void*) android_net_wifi_getNumAllowedChannelsCommand }, { "setBluetoothCoexistenceModeCommand", "(I)Z", diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index 47f8813..862a61b 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -111,6 +111,10 @@ public class WifiNative { public native static boolean setPowerModeCommand(int mode); + public native static int getBandCommand(); + + public native static boolean setBandCommand(int band); + public native static int getPowerModeCommand(); public native static boolean setNumAllowedChannelsCommand(int numChannels); diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 6016526..e1cbf5b 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -320,6 +320,13 @@ public class WifiStateMachine extends HierarchicalStateMachine { private static final int SCAN_ACTIVE = 1; private static final int SCAN_PASSIVE = 2; + /* Auto allows 802.11A/B/G operation */ + private static final int BAND_AUTO = 0; + /* 5GHz allows 802.11A operation */ + private static final int BAND_5G = 1; + /* 2.4GHz allows 802.11B/G operation */ + private static final int BAND_2G = 2; + /** * The maximum number of times we will retry a connection to an access point * for which we have failed in acquiring an IP address from DHCP. A value of @@ -2179,6 +2186,14 @@ public class WifiStateMachine extends HierarchicalStateMachine { /* Initialize channel count */ setNumAllowedChannels(); + /* + * STOPSHIP + * TODO: We are having 11A issues that Broadcom is looking + * to resolve, this is a temporary fix to allow only 11B/G + * and help improve GoogleGuest connectivity + * We also need to add the UI for band control + */ + WifiNative.setBandCommand(BAND_2G); if (mIsScanMode) { WifiNative.setScanResultHandlingCommand(SCAN_ONLY_MODE); |