summaryrefslogtreecommitdiffstats
path: root/service/jni
diff options
context:
space:
mode:
authorVinit Deshpande <vinitd@google.com>2015-06-02 12:02:41 -0700
committerVinit Deshpande <vinitd@google.com>2015-06-02 12:02:41 -0700
commit483cef98baaff3d4de18dc29aa5e5cce2ccd9716 (patch)
tree75b2c0b304918c9a9fdf162851097f84acf1f9c2 /service/jni
parenta8e38ba111bac40e374412253fc6b6a542c7714f (diff)
parent5a091fb6a7f51f701e81a45174c9fd74f97dce22 (diff)
downloadandroid_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.cpp98
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(&params, 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) {