summaryrefslogtreecommitdiffstats
path: root/service/jni
diff options
context:
space:
mode:
authorVinit Deshpande <vinitd@google.com>2015-06-05 10:59:16 -0700
committerVinit Deshpande <vinitd@google.com>2015-06-05 10:59:16 -0700
commite0f45adde26bd4d238ff157e6769650a99dc5261 (patch)
tree085d08e2604c4ad5b1655f565e49d3b4717b7731 /service/jni
parentc5cdba4fa88dd5653be476377ad97665fe2d4872 (diff)
parent09f267b3bc61f3f472516a406fd64be81dc5ccd5 (diff)
downloadandroid_frameworks_opt_net_wifi-e0f45adde26bd4d238ff157e6769650a99dc5261.tar.gz
android_frameworks_opt_net_wifi-e0f45adde26bd4d238ff157e6769650a99dc5261.tar.bz2
android_frameworks_opt_net_wifi-e0f45adde26bd4d238ff157e6769650a99dc5261.zip
am 70b75cd..09f267b from mirror-m-wireless-internal-release
09f267b prevent false wifi roaming signal Bug:21617059 0bf150b Enable ring buffer logging and auto-logging of failures 550ae08 Merge "fix overflow bug in WifiManager reportActivityInfo Bug:20232188" into m-wireless-dev 7ab5189 Merge "Make autojoin parameters configurable" into m-wireless-dev 7ff782a Make autojoin parameters configurable f49a59b Issue start/stop HAL along with load/unload driver
Diffstat (limited to 'service/jni')
-rw-r--r--service/jni/com_android_server_wifi_WifiNative.cpp49
1 files changed, 14 insertions, 35 deletions
diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp
index 10b78573d..330f4ef6a 100644
--- a/service/jni/com_android_server_wifi_WifiNative.cpp
+++ b/service/jni/com_android_server_wifi_WifiNative.cpp
@@ -1582,7 +1582,7 @@ static jobject android_net_wifi_get_ring_buffer_status (JNIEnv *env, jclass cls,
if (result == WIFI_SUCCESS) {
ALOGD("status is %p, number is %d", status, num_rings);
jclass clsRingBufferStatus =
- (env)->FindClass("com/android/server/wifi/WifiLogger$RingBufferStatus");
+ (env)->FindClass("com/android/server/wifi/WifiNative$RingBufferStatus");
if (clsRingBufferStatus == NULL) {
ALOGE("Error in accessing class");
free(status);
@@ -1593,7 +1593,7 @@ static jobject android_net_wifi_get_ring_buffer_status (JNIEnv *env, jclass cls,
for(u32 i = 0; i < num_rings; i++, tmp++) {
jobject ringStatus = createObject(env,
- "com/android/server/wifi/WifiLogger$RingBufferStatus");
+ "com/android/server/wifi/WifiNative$RingBufferStatus");
if (ringStatus == NULL) {
ALOGE("Error in creating ringBufferStatus");
free(status);
@@ -1623,33 +1623,26 @@ static jobject android_net_wifi_get_ring_buffer_status (JNIEnv *env, jclass cls,
static void on_ring_buffer_data(char *ring_name, char *buffer, int buffer_size,
wifi_ring_buffer_status *status) {
+
if (!ring_name || !buffer || !status ||
(unsigned int)buffer_size <= sizeof(wifi_ring_buffer_entry)) {
ALOGE("Error input for on_ring_buffer_data!");
+ return;
}
+
JNIEnv *env = NULL;
mVM->AttachCurrentThread(&env, NULL);
ALOGD("on_ring_buffer_data called, vm = %p, obj = %p, env = %p buffer size = %d", mVM,
mCls, env, buffer_size);
- jobject wifiLoggerEvent = createObject(env,
- "com/android/server/wifi/WifiNative$WifiLoggerEvent");
-
- //jstring reportBuffer = env->NewStringUTF(buffer);
- //setStringField(env, wifiLoggerEvent, "buffer", buffer);
-
jobject ringStatus = createObject(env,
- "com/android/server/wifi/WifiLogger$RingBufferStatus");
+ "com/android/server/wifi/WifiNative$RingBufferStatus");
if (status == NULL) {
ALOGE("Error in creating ringBufferStatus");
return;
}
- char name[32];
- for(int j = 0; j < 32; j++) {
- name[j] = status->name[j];
- }
- setStringField(env, ringStatus, "name", name);
+ setStringField(env, ringStatus, "name", ring_name);
setIntField(env, ringStatus, "flag", status->flags);
setIntField(env, ringStatus, "ringBufferId", status->ring_id);
setIntField(env, ringStatus, "ringBufferByteSize", status->ring_buffer_byte_size);
@@ -1657,29 +1650,15 @@ static void on_ring_buffer_data(char *ring_name, char *buffer, int buffer_size,
setIntField(env, ringStatus, "writtenBytes", status->written_bytes);
setIntField(env, ringStatus, "readBytes", status->read_bytes);
setIntField(env, ringStatus, "writtenRecords", status->written_records);
- setObjectField(env, wifiLoggerEvent, "status",
- "Lcom/android/server/wifi/WifiLogger$RingBufferStatus;", ringStatus);
- //set entry
- wifi_ring_buffer_entry *buffer_entry = (wifi_ring_buffer_entry *) buffer;
- setIntField(env,wifiLoggerEvent, "entrySize", buffer_entry->entry_size);
- setIntField(env,wifiLoggerEvent, "flags", buffer_entry->flags);
- setIntField(env,wifiLoggerEvent, "type", buffer_entry->type);
- setLongField(env,wifiLoggerEvent, "timestamp", buffer_entry->timestamp);
- //set records
- int record_size = buffer_size - sizeof(wifi_ring_buffer_entry);
- if (buffer_entry->entry_size > 0) {
- jbyteArray records = env->NewByteArray(buffer_entry->entry_size);
- jbyte *bytes = (jbyte *) (buffer_entry + 1);
- env->SetByteArrayRegion(records, 0, buffer_entry->entry_size, bytes);
- setObjectField(env,wifiLoggerEvent, "entry", "[B", records);
- env->DeleteLocalRef(records);
- }
- reportEvent(env, mCls,"onWifiLoggerEvent",
- "(Lcom/android/server/wifi/WifiNative$WifiLoggerEvent;)V", wifiLoggerEvent);
+ jbyteArray bytes = env->NewByteArray(buffer_size);
+ env->SetByteArrayRegion(bytes, 0, buffer_size, (jbyte*)buffer);
+
+ reportEvent(env, mCls,"onRingBufferData",
+ "(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V", ringStatus, bytes);
+ env->DeleteLocalRef(bytes);
env->DeleteLocalRef(ringStatus);
- env->DeleteLocalRef(wifiLoggerEvent);
}
static void on_alert_data(wifi_request_id id, char *buffer, int buffer_size, int err_code){
@@ -2147,7 +2126,7 @@ static JNINativeMethod gWifiMethods[] = {
(void*) android_net_wifi_get_driver_version},
{"getFirmwareVersionNative", "(I)Ljava/lang/String;",
(void*) android_net_wifi_get_firmware_version},
- {"getRingBufferStatusNative", "(I)[Lcom/android/server/wifi/WifiLogger$RingBufferStatus;",
+ {"getRingBufferStatusNative", "(I)[Lcom/android/server/wifi/WifiNative$RingBufferStatus;",
(void*) android_net_wifi_get_ring_buffer_status},
{"startLoggingRingBufferNative", "(IIIIILjava/lang/String;)Z",
(void*) android_net_wifi_start_logging_ring_buffer},