diff options
author | Pierre Vandwalle <vandwalle@google.com> | 2015-05-15 16:34:17 -0700 |
---|---|---|
committer | Pierre Vandwalle <vandwalle@google.com> | 2015-05-15 17:45:24 -0700 |
commit | 9ccffbb6c3fe8eaa7d70cc3076d0dc3c6a9073e7 (patch) | |
tree | 0a36858bee4e58328768dba9f5e7a706603e999f /service/jni | |
parent | c3a4a8936ce4b473f89ee130baed34afc8f3186a (diff) | |
download | frameworks_opt_net_wifi-9ccffbb6c3fe8eaa7d70cc3076d0dc3c6a9073e7.tar.gz frameworks_opt_net_wifi-9ccffbb6c3fe8eaa7d70cc3076d0dc3c6a9073e7.tar.bz2 frameworks_opt_net_wifi-9ccffbb6c3fe8eaa7d70cc3076d0dc3c6a9073e7.zip |
add BSSID blacklist to autojoin/roam offload
Change-Id: I7eced80f7406de44e96bebc9a3ac3dc648a23eef
Diffstat (limited to 'service/jni')
-rw-r--r-- | service/jni/com_android_server_wifi_WifiNative.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp index 5a937ca..fe837f6 100644 --- a/service/jni/com_android_server_wifi_WifiNative.cpp +++ b/service/jni/com_android_server_wifi_WifiNative.cpp @@ -1983,6 +1983,52 @@ static jboolean android_net_wifi_setLazyRoam( return status >= 0; } +static jboolean android_net_wifi_setBssidBlacklist( + JNIEnv *env, jclass cls, jint iface, jint id, jobject list) { + + wifi_interface_handle handle = getIfaceHandle(env, cls, iface); + ALOGD("configure BSSID list request [%d] = %p", id, handle); + + wifi_bssid_params params; + memset(¶ms, 0, sizeof(params)); + + if (list != NULL) { + size_t len = env->GetArrayLength((jobjectArray)list); + if (len > (size_t)MAX_BLACKLIST_BSSID) { + return false; + } + for (unsigned int i = 0; i < len; i++) { + + jstring jbssid = (jstring)env->GetObjectArrayElement((jobjectArray)list, i); + if (jbssid == NULL) { + ALOGD("configure BSSID blacklist: could not get element %d", i); + continue; + } + const char *bssid = env->GetStringUTFChars(jbssid, NULL); + if (bssid == NULL) { + ALOGE("Error getting bssid"); + return false; + } + + mac_addr addr; + parseMacAddress(bssid, addr); + memcpy(params.bssids[i], addr, sizeof(mac_addr)); + + char bssidOut[32]; + sprintf(bssidOut, "%0x:%0x:%0x:%0x:%0x:%0x", addr[0], addr[1], + addr[2], addr[3], addr[4], addr[5]); + + ALOGD("BSSID blacklist: added bssid %s", bssidOut); + + params.num_bssid++; + + } + } + + ALOGD("Added %d bssids", params.num_bssid); + return hal_fn.wifi_set_bssid_blacklist(id, handle, params) == WIFI_SUCCESS; +} + // ---------------------------------------------------------------------------- /* @@ -2060,8 +2106,10 @@ static JNINativeMethod gWifiMethods[] = { {"getRingBufferDataNative", "(ILjava/lang/String;)Z", (void*) android_net_wifi_get_ring_buffer_data}, {"getFwMemoryDumpNative","(I)Z", (void*) android_net_wifi_get_fw_memory_dump}, - { "setLazyRoam", "(IIZLcom/android/server/wifi/WifiNative$WifiLazyRoamParams;)Z", - (void*) android_net_wifi_setLazyRoam} + { "setLazyRoamNative", "(IIZLcom/android/server/wifi/WifiNative$WifiLazyRoamParams;)Z", + (void*) android_net_wifi_setLazyRoam}, + { "setBssidBlacklistNative", "(II[Ljava/lang/String;)Z", + (void*)android_net_wifi_setBssidBlacklist} }; int register_android_net_wifi_WifiNative(JNIEnv* env) { |