summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2010-09-02 12:48:20 -0700
committerIrfan Sheriff <isheriff@google.com>2010-09-02 12:48:20 -0700
commit25c9bf2396ceb48fc5cfd5c1dd58aa4d4750d056 (patch)
tree108948322de11a32b727961e56d3a3e99abaebfd
parentee6d676c5b997a1214e96b6ba3755054382717c5 (diff)
downloadframeworks_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.cpp26
-rw-r--r--wifi/java/android/net/wifi/WifiNative.java4
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java15
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);