summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2013-11-04 02:54:13 +0000
committerSteve Kondik <steve@cyngn.com>2015-03-12 06:19:15 -0700
commit2748784570cbe52f9bf75a2abaa7d9f8f4047117 (patch)
tree92b28d1e181dcaff258c8773e7b47eae24f99c29
parent0e7d62b8fc9d5df4ee4a03b33b3abe1ccf7b46fe (diff)
downloadandroid_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.java2
-rwxr-xr-xservice/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 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 },