summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorVinit Deshapnde <vinitd@google.com>2013-08-08 10:38:53 -0700
committerRobert Greenwalt <rgreenwalt@google.com>2013-08-08 18:38:53 +0000
commitc249c2cc6b601ed1ff063f1748ba4399b9270209 (patch)
treef53e040ca154268d8632171998fde52ec88f921a /core/jni
parentf6971c80fd413cad8e5333cd3184f41fcf64e14b (diff)
downloadframeworks_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.cpp2
-rw-r--r--core/jni/android_net_wifi_Wifi.cpp66
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 },
};