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