1dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber/* 2dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * Copyright (C) 2016 The Android Open Source Project 3dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * 4dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * you may not use this file except in compliance with the License. 6dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * You may obtain a copy of the License at 7dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * 8dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * 10dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * Unless required by applicable law or agreed to in writing, software 11dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * See the License for the specific language governing permissions and 14dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber * limitations under the License. 15dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber */ 16dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 17dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#ifndef _ANDROID_OS_HW_BINDER_H 18dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#define _ANDROID_OS_HW_BINDER_H 19dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 20dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#include <android-base/macros.h> 21dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#include <hwbinder/Binder.h> 22dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#include <jni.h> 23dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#include <utils/RefBase.h> 24dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 25dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Hubernamespace android { 26dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 27b072d4d9d9f53a33af4607c7876289f087f1f88aYifan Hongstruct JHwBinder : public hardware::BHwBinder { 28dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber static void InitClass(JNIEnv *env); 29dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 30dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber static sp<JHwBinder> SetNativeContext( 31dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber JNIEnv *env, jobject thiz, const sp<JHwBinder> &context); 32dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 33dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber static sp<JHwBinder> GetNativeContext(JNIEnv *env, jobject thiz); 34dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 35dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber JHwBinder(JNIEnv *env, jobject thiz); 36dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 37dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huberprotected: 38dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber virtual ~JHwBinder(); 39dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 40dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber virtual status_t onTransact( 41dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber uint32_t code, 42dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber const hardware::Parcel &data, 43dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber hardware::Parcel *reply, 44dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber uint32_t flags, 45dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber TransactCallback callback); 46dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 47dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huberprivate: 48dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber jclass mClass; 49dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber jobject mObject; 50dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 51dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber DISALLOW_COPY_AND_ASSIGN(JHwBinder); 52dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber}; 53dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 54dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huberint register_android_os_HwBinder(JNIEnv *env); 55dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 56dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber} // namespace android 57dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 58dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber#endif // _ANDROID_OS_HW_BINDER_H 59dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 60dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber 61