diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-11-04 02:54:13 +0000 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-03-12 06:19:15 -0700 |
commit | 2748784570cbe52f9bf75a2abaa7d9f8f4047117 (patch) | |
tree | 92b28d1e181dcaff258c8773e7b47eae24f99c29 | |
parent | 0e7d62b8fc9d5df4ee4a03b33b3abe1ccf7b46fe (diff) | |
download | android_frameworks_opt_net_wifi-2748784570cbe52f9bf75a2abaa7d9f8f4047117.tar.gz android_frameworks_opt_net_wifi-2748784570cbe52f9bf75a2abaa7d9f8f4047117.tar.bz2 android_frameworks_opt_net_wifi-2748784570cbe52f9bf75a2abaa7d9f8f4047117.zip |
wifi: Set the mode at native layer
* Set normal/AP mode so that the HAL can specify correct module
arguments when loading the driver.
Change-Id: I6eee2cc53b5f1e70306e252e52c909833f220515
-rw-r--r-- | service/java/com/android/server/wifi/WifiNative.java | 2 | ||||
-rwxr-xr-x | service/java/com/android/server/wifi/WifiStateMachine.java | 2 | ||||
-rw-r--r-- | service/jni/com_android_server_wifi_WifiNative.cpp | 6 |
3 files changed, 10 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index ac2fb2f61..59968274c 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -1135,6 +1135,8 @@ public class WifiNative { return doBooleanCommand("ANQP_GET " + bssid + " " + subtypes); } + public native static boolean setMode(int mode); + /* WIFI HAL support */ private static final String TAG = "WifiNative-HAL"; diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index 15477138d..5fd8331b8 100755 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -2037,6 +2037,7 @@ public class WifiStateMachine extends StateMachine { */ public void setSupplicantRunning(boolean enable) { if (enable) { + WifiNative.setMode(0); sendMessage(CMD_START_SUPPLICANT); } else { sendMessage(CMD_STOP_SUPPLICANT); @@ -2048,6 +2049,7 @@ public class WifiStateMachine extends StateMachine { */ public void setHostApRunning(WifiConfiguration wifiConfig, boolean enable) { if (enable) { + WifiNative.setMode(1); sendMessage(CMD_START_AP, wifiConfig); } else { sendMessage(CMD_STOP_AP); diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp index a8645c649..1489749fb 100644 --- a/service/jni/com_android_server_wifi_WifiNative.cpp +++ b/service/jni/com_android_server_wifi_WifiNative.cpp @@ -113,6 +113,11 @@ static jstring doStringCommand(JNIEnv* env, jstring javaCommand) { return env->NewString((const jchar *)str.string(), str.size()); } +static jboolean android_net_wifi_setMode(JNIEnv* env, jobject, jint type) +{ + return (jboolean)(::wifi_set_mode(type) == 0); +} + static jboolean android_net_wifi_isDriverLoaded(JNIEnv* env, jobject) { return (::is_wifi_driver_loaded() == 1); @@ -1133,6 +1138,7 @@ static JNINativeMethod gWifiMethods[] = { { "doIntCommandNative", "(Ljava/lang/String;)I", (void*)android_net_wifi_doIntCommand }, { "doStringCommandNative", "(Ljava/lang/String;)Ljava/lang/String;", (void*) android_net_wifi_doStringCommand }, + { "setMode", "(I)Z", (void*) android_net_wifi_setMode}, { "startHalNative", "()Z", (void*) android_net_wifi_startHal }, { "stopHalNative", "()V", (void*) android_net_wifi_stopHal }, { "waitForHalEventNative", "()V", (void*) android_net_wifi_waitForHalEvents }, |