diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-06-02 12:02:41 -0700 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-06-02 12:02:41 -0700 |
commit | 483cef98baaff3d4de18dc29aa5e5cce2ccd9716 (patch) | |
tree | 75b2c0b304918c9a9fdf162851097f84acf1f9c2 /service/jni | |
parent | a8e38ba111bac40e374412253fc6b6a542c7714f (diff) | |
parent | 5a091fb6a7f51f701e81a45174c9fd74f97dce22 (diff) | |
download | android_frameworks_opt_net_wifi-483cef98baaff3d4de18dc29aa5e5cce2ccd9716.tar.gz android_frameworks_opt_net_wifi-483cef98baaff3d4de18dc29aa5e5cce2ccd9716.tar.bz2 android_frameworks_opt_net_wifi-483cef98baaff3d4de18dc29aa5e5cce2ccd9716.zip |
am 9ccffbb..5a091fb from mirror-m-wireless-internal-release
5a091fb Wifi log spam is still a thing The root cause is that inner class WifiScanningStateMachine of WifiScanningServiceImpl use the log from WifiStateMachine rather than from WifiScanningServiceImpl. Reanme log to logLocal
b66b29a turn off WifiNative DBG
98dca33 FW memory dump should be compressed
e5c48b5 wifi: Do not kill the supplicant on a request to stop it
5caa43b add ssid white list for roam offload
Diffstat (limited to 'service/jni')
-rw-r--r-- | service/jni/com_android_server_wifi_WifiNative.cpp | 98 |
1 files changed, 96 insertions, 2 deletions
diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp index 5e759be70..1e93b1700 100644 --- a/service/jni/com_android_server_wifi_WifiNative.cpp +++ b/service/jni/com_android_server_wifi_WifiNative.cpp @@ -1982,6 +1982,96 @@ 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 black 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; +} + +static jboolean android_net_wifi_setSsidWhitelist( + JNIEnv *env, jclass cls, jint iface, jint id, jobject list) { + + wifi_interface_handle handle = getIfaceHandle(env, cls, iface); + ALOGD("configure SSID white list request [%d] = %p", id, handle); + wifi_ssid *ssids = NULL; + int num_ssids = 0; + if (list != NULL) { + size_t len = env->GetArrayLength((jobjectArray)list); + if (len > 0) { + ssids = (wifi_ssid *)malloc(len * sizeof (wifi_ssid)); + if (!ssids) return false; + memset(ssids, 0, len * sizeof (wifi_ssid)); + for (unsigned int i = 0; i < len; i++) { + + jstring jssid = (jstring)env->GetObjectArrayElement((jobjectArray)list, i); + if (jssid == NULL) { + ALOGD("configure SSID whitelist: could not get element %d", i); + free(ssids); + return false; + } + const char *ssid = env->GetStringUTFChars(jssid, NULL); + if (ssid == NULL) { + ALOGE("Error getting sssid"); + free(ssids); + return false; + } + int slen = strnlen(ssid, 33); + if (slen <= 0 || slen > 32) { + ALOGE("Error wrong ssid length %d", slen); + free(ssids); + return false; + } + + memcpy(ssids[i].ssid, ssid, slen); + ALOGD("SSID white list: added ssid %s", ssid); + } + } + } + + ALOGD("android_net_wifi_setSsidWhitelist Added %d sssids", num_ssids); + return hal_fn.wifi_set_ssid_white_list(id, handle, num_ssids, ssids) == WIFI_SUCCESS; +} + // ---------------------------------------------------------------------------- /* @@ -2059,8 +2149,12 @@ 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}, + { "setSsidWhitelistNative", "(II[Ljava/lang/String;)Z", + (void*)android_net_wifi_setSsidWhitelist} }; int register_android_net_wifi_WifiNative(JNIEnv* env) { |