diff options
author | Vinit Deshapnde <vinitd@google.com> | 2013-08-08 10:38:53 -0700 |
---|---|---|
committer | Robert Greenwalt <rgreenwalt@google.com> | 2013-08-08 18:38:53 +0000 |
commit | c249c2cc6b601ed1ff063f1748ba4399b9270209 (patch) | |
tree | f53e040ca154268d8632171998fde52ec88f921a /core/jni | |
parent | f6971c80fd413cad8e5333cd3184f41fcf64e14b (diff) | |
download | frameworks_base-c249c2cc6b601ed1ff063f1748ba4399b9270209.zip frameworks_base-c249c2cc6b601ed1ff063f1748ba4399b9270209.tar.gz frameworks_base-c249c2cc6b601ed1ff063f1748ba4399b9270209.tar.bz2 |
Use a single socket to communicate with supplicant
This helps to prepare for future updates from external sources.
Bug: 9298955
Change-Id: I4c63ad5fc1ea3564aab38cfce955de19bad75c0c
(cherry picked from commit fb40801ed8c217ae01082fb1cbd0c30bbf5532ac)
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/android_net_NetUtils.cpp | 2 | ||||
-rw-r--r-- | core/jni/android_net_wifi_Wifi.cpp | 66 |
2 files changed, 27 insertions, 41 deletions
diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp index 7e70c7c..6d23c32 100644 --- a/core/jni/android_net_NetUtils.cpp +++ b/core/jni/android_net_NetUtils.cpp @@ -141,7 +141,7 @@ static jboolean android_net_utils_runDhcpCommon(JNIEnv* env, jobject clazz, jstr dns, server, &lease, vendorInfo, domains, mtu); } if (result != 0) { - ALOGD("dhcp_do_request failed"); + ALOGD("dhcp_do_request failed : %s (%s)", nameStr, renew ? "renew" : "new"); } env->ReleaseStringUTFChars(ifname, nameStr); diff --git a/core/jni/android_net_wifi_Wifi.cpp b/core/jni/android_net_wifi_Wifi.cpp index 08962e2..aa6dbf3 100644 --- a/core/jni/android_net_wifi_Wifi.cpp +++ b/core/jni/android_net_wifi_Wifi.cpp @@ -33,11 +33,11 @@ namespace android { static jint DBG = false; -static int doCommand(const char *ifname, char *cmd, char *replybuf, int replybuflen) +static int doCommand(char *cmd, char *replybuf, int replybuflen) { size_t reply_len = replybuflen - 1; - if (::wifi_command(ifname, cmd, BUF_SIZE, replybuf, &reply_len) != 0) + if (::wifi_command(cmd, replybuf, &reply_len) != 0) return -1; else { // Strip off trailing newline @@ -49,7 +49,7 @@ static int doCommand(const char *ifname, char *cmd, char *replybuf, int replybuf } } -static jint doIntCommand(const char *ifname, const char* fmt, ...) +static jint doIntCommand(const char* fmt, ...) { char buf[BUF_SIZE]; va_list args; @@ -60,13 +60,13 @@ static jint doIntCommand(const char *ifname, const char* fmt, ...) return -1; } char reply[BUF_SIZE]; - if (doCommand(ifname, buf, reply, sizeof(reply)) != 0) { + if (doCommand(buf, reply, sizeof(reply)) != 0) { return -1; } return static_cast<jint>(atoi(reply)); } -static jboolean doBooleanCommand(const char *ifname, const char* expect, const char* fmt, ...) +static jboolean doBooleanCommand(const char* expect, const char* fmt, ...) { char buf[BUF_SIZE]; va_list args; @@ -77,14 +77,14 @@ static jboolean doBooleanCommand(const char *ifname, const char* expect, const c return JNI_FALSE; } char reply[BUF_SIZE]; - if (doCommand(ifname, buf, reply, sizeof(reply)) != 0) { + if (doCommand(buf, reply, sizeof(reply)) != 0) { return JNI_FALSE; } return (strcmp(reply, expect) == 0); } // Send a command to the supplicant, and return the reply as a String -static jstring doStringCommand(JNIEnv* env, const char *ifname, const char* fmt, ...) { +static jstring doStringCommand(JNIEnv* env, const char* fmt, ...) { char buf[BUF_SIZE]; va_list args; va_start(args, fmt); @@ -94,7 +94,7 @@ static jstring doStringCommand(JNIEnv* env, const char *ifname, const char* fmt, return NULL; } char reply[4096]; - if (doCommand(ifname, buf, reply, sizeof(reply)) != 0) { + if (doCommand(buf, reply, sizeof(reply)) != 0) { return NULL; } // TODO: why not just NewStringUTF? @@ -127,23 +127,20 @@ static jboolean android_net_wifi_killSupplicant(JNIEnv* env, jobject, jboolean p return (jboolean)(::wifi_stop_supplicant(p2pSupported) == 0); } -static jboolean android_net_wifi_connectToSupplicant(JNIEnv* env, jobject, jstring jIface) +static jboolean android_net_wifi_connectToSupplicant(JNIEnv* env, jobject) { - ScopedUtfChars ifname(env, jIface); - return (jboolean)(::wifi_connect_to_supplicant(ifname.c_str()) == 0); + return (jboolean)(::wifi_connect_to_supplicant() == 0); } -static void android_net_wifi_closeSupplicantConnection(JNIEnv* env, jobject, jstring jIface) +static void android_net_wifi_closeSupplicantConnection(JNIEnv* env, jobject) { - ScopedUtfChars ifname(env, jIface); - ::wifi_close_supplicant_connection(ifname.c_str()); + ::wifi_close_supplicant_connection(); } -static jstring android_net_wifi_waitForEvent(JNIEnv* env, jobject, jstring jIface) +static jstring android_net_wifi_waitForEvent(JNIEnv* env, jobject) { char buf[EVENT_BUF_SIZE]; - ScopedUtfChars ifname(env, jIface); - int nread = ::wifi_wait_for_event(ifname.c_str(), buf, sizeof buf); + int nread = ::wifi_wait_for_event(buf, sizeof buf); if (nread > 0) { return env->NewStringUTF(buf); } else { @@ -151,43 +148,36 @@ static jstring android_net_wifi_waitForEvent(JNIEnv* env, jobject, jstring jIfac } } -static jboolean android_net_wifi_doBooleanCommand(JNIEnv* env, jobject, jstring jIface, - jstring jCommand) +static jboolean android_net_wifi_doBooleanCommand(JNIEnv* env, jobject, jstring jCommand) { - ScopedUtfChars ifname(env, jIface); ScopedUtfChars command(env, jCommand); if (command.c_str() == NULL) { return JNI_FALSE; } if (DBG) ALOGD("doBoolean: %s", command.c_str()); - return doBooleanCommand(ifname.c_str(), "OK", "%s", command.c_str()); + return doBooleanCommand("OK", "%s", command.c_str()); } -static jint android_net_wifi_doIntCommand(JNIEnv* env, jobject, jstring jIface, - jstring jCommand) +static jint android_net_wifi_doIntCommand(JNIEnv* env, jobject, jstring jCommand) { - ScopedUtfChars ifname(env, jIface); ScopedUtfChars command(env, jCommand); if (command.c_str() == NULL) { return -1; } if (DBG) ALOGD("doInt: %s", command.c_str()); - return doIntCommand(ifname.c_str(), "%s", command.c_str()); + return doIntCommand("%s", command.c_str()); } -static jstring android_net_wifi_doStringCommand(JNIEnv* env, jobject, jstring jIface, - jstring jCommand) +static jstring android_net_wifi_doStringCommand(JNIEnv* env, jobject, jstring jCommand) { - ScopedUtfChars ifname(env, jIface); - ScopedUtfChars command(env, jCommand); if (command.c_str() == NULL) { return NULL; } if (DBG) ALOGD("doString: %s", command.c_str()); - return doStringCommand(env, ifname.c_str(), "%s", command.c_str()); + return doStringCommand(env, "%s", command.c_str()); } @@ -205,17 +195,13 @@ static JNINativeMethod gWifiMethods[] = { { "unloadDriver", "()Z", (void *)android_net_wifi_unloadDriver }, { "startSupplicant", "(Z)Z", (void *)android_net_wifi_startSupplicant }, { "killSupplicant", "(Z)Z", (void *)android_net_wifi_killSupplicant }, - { "connectToSupplicant", "(Ljava/lang/String;)Z", - (void *)android_net_wifi_connectToSupplicant }, - { "closeSupplicantConnection", "(Ljava/lang/String;)V", + { "connectToSupplicantNative", "()Z", (void *)android_net_wifi_connectToSupplicant }, + { "closeSupplicantConnectionNative", "()V", (void *)android_net_wifi_closeSupplicantConnection }, - { "waitForEvent", "(Ljava/lang/String;)Ljava/lang/String;", - (void*) android_net_wifi_waitForEvent }, - { "doBooleanCommand", "(Ljava/lang/String;Ljava/lang/String;)Z", - (void*) android_net_wifi_doBooleanCommand }, - { "doIntCommand", "(Ljava/lang/String;Ljava/lang/String;)I", - (void*) android_net_wifi_doIntCommand }, - { "doStringCommand", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", + { "waitForEventNative", "()Ljava/lang/String;", (void*)android_net_wifi_waitForEvent }, + { "doBooleanCommandNative", "(Ljava/lang/String;)Z", (void*)android_net_wifi_doBooleanCommand }, + { "doIntCommandNative", "(Ljava/lang/String;)I", (void*)android_net_wifi_doIntCommand }, + { "doStringCommandNative", "(Ljava/lang/String;)Ljava/lang/String;", (void*) android_net_wifi_doStringCommand }, }; |