17f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde/* 2956f54b391677d78379729dd14518edddf3c7660Etan Cohen * Copyright 2016, The Android Open Source Project 37f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * 47f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * Licensed under the Apache License, Version 2.0 (the "License"); 57f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * you may not use this file except in compliance with the License. 67f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * You may obtain a copy of the License at 77f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * 87f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * http://www.apache.org/licenses/LICENSE-2.0 97f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * 107f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * Unless required by applicable law or agreed to in writing, software 117f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * distributed under the License is distributed on an "AS IS" BASIS, 127f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * See the License for the specific language governing permissions and 147f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde * limitations under the License. 157f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde */ 167f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 177f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde#define LOG_TAG "wifi" 187f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 19f8a283f4fc2f103fdf68062a50e516141d1e881dChristopher Wiley#include <hardware_legacy/wifi_hal.h> 20f8a283f4fc2f103fdf68062a50e516141d1e881dChristopher Wiley#include <nativehelper/ScopedUtfChars.h> 217f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde#include <utils/Log.h> 227f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde#include <utils/String16.h> 23f8a283f4fc2f103fdf68062a50e516141d1e881dChristopher Wiley#include <utils/misc.h> 247f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 257f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde#include "jni_helper.h" 267f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 277f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapndenamespace android { 287f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 297f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde/* JNI Helpers for wifi_hal implementation */ 307f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde 317d519b6686ece717fd3890c0656b46155c22a377Vinit DeshpandeJNIHelper::JNIHelper(JavaVM *vm) 327d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande{ 337d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande vm->AttachCurrentThread(&mEnv, NULL); 347d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mVM = vm; 357d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 367d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 377d519b6686ece717fd3890c0656b46155c22a377Vinit DeshpandeJNIHelper::JNIHelper(JNIEnv *env) 387d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande{ 397d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mVM = NULL; 407d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mEnv = env; 417d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 427d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 437d519b6686ece717fd3890c0656b46155c22a377Vinit DeshpandeJNIHelper::~JNIHelper() 447d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande{ 457d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande if (mVM != NULL) { 467d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande // mVM->DetachCurrentThread(); /* 'attempting to detach while still running code' */ 477d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mVM = NULL; /* not really required; but may help debugging */ 487d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mEnv = NULL; /* not really required; but may help debugging */ 497d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande } 507d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 517d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 527d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpandejobject JNIHelper::newLocalRef(jobject obj) { 53b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius return mEnv->NewLocalRef(obj); 547d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 557d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 567d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpandevoid JNIHelper::deleteLocalRef(jobject obj) { 57b8b3fb8228a1f90106bad8c59ce006b81ef7921cRoshan Pius mEnv->DeleteLocalRef(obj); 587d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 597d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 607d519b6686ece717fd3890c0656b46155c22a377Vinit DeshpandeJNIObject<jbyteArray> JNIHelper::newByteArray(int num) { 617d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande return JNIObject<jbyteArray>(*this, mEnv->NewByteArray(num)); 627d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 637d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande 643592af2adb0c30244a46db03164ca0f7e6d3b613mukesh agrawalvoid JNIHelper::setByteArrayRegion(jbyteArray array, int from, int to, const jbyte *bytes) { 657d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande mEnv->SetByteArrayRegion(array, from, to, bytes); 667d519b6686ece717fd3890c0656b46155c22a377Vinit Deshpande} 677f9a15d554f69311a0db43347d6473a7c4c46e2eVinit Deshapnde}; // namespace android 68