summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2013-11-04 02:54:13 +0000
committerMichael Bestas <mikeioannina@gmail.com>2017-01-01 23:10:32 +0200
commit071db16b68ce3112e61c25a2ef7ca900e9cce3f4 (patch)
treef3e6ce1c6fac93911988f0224120890b78623691
parent2499e0992ae878585aa1902924d2d605b4d30a6d (diff)
downloadandroid_frameworks_opt_net_wifi-071db16b68ce3112e61c25a2ef7ca900e9cce3f4.tar.gz
android_frameworks_opt_net_wifi-071db16b68ce3112e61c25a2ef7ca900e9cce3f4.tar.bz2
android_frameworks_opt_net_wifi-071db16b68ce3112e61c25a2ef7ca900e9cce3f4.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 (cherry picked from commit 0d8dfcf1fe77ced303ee8b45118c4b44de1ba305)
-rw-r--r--service/java/com/android/server/wifi/WifiNative.java2
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java2
-rw-r--r--service/jni/com_android_server_wifi_WifiNative.cpp6
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 f9a1b0173..f6931c1fe 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -1549,6 +1549,8 @@ public class WifiNative {
}
}
+ public native static boolean setApMode(boolean enable);
+
/* WIFI HAL support */
// HAL command ids
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 21e58c27d..d03ccd25f 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -1850,6 +1850,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
*/
public void setSupplicantRunning(boolean enable) {
if (enable) {
+ WifiNative.setApMode(false);
sendMessage(CMD_START_SUPPLICANT);
} else {
mDisconnectDelayDuration = -1;
@@ -1877,6 +1878,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
*/
public void setHostApRunning(WifiConfiguration wifiConfig, boolean enable) {
if (enable) {
+ WifiNative.setApMode(true);
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 baed910b4..7e70d95a7 100644
--- a/service/jni/com_android_server_wifi_WifiNative.cpp
+++ b/service/jni/com_android_server_wifi_WifiNative.cpp
@@ -136,6 +136,11 @@ static jstring doStringCommand(JNIEnv* env, jstring javaCommand) {
return env->NewString((const jchar *)str.string(), str.size());
}
+static jboolean android_net_wifi_setApMode(JNIEnv* env, jobject, jboolean enable)
+{
+ return (jboolean)(::wifi_set_mode(enable ? 1 : 0) == 0);
+}
+
static jboolean android_net_wifi_isDriverLoaded(JNIEnv* env, jclass)
{
return (::is_wifi_driver_loaded() == 1);
@@ -2596,6 +2601,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 },
+ { "setApMode", "(Z)Z", (void*) android_net_wifi_setApMode},
{ "startHalNative", "()Z", (void*) android_net_wifi_startHal },
{ "stopHalNative", "()V", (void*) android_net_wifi_stopHal },
{ "waitForHalEventNative", "()V", (void*) android_net_wifi_waitForHalEvents },