IHwBinder.java revision 739811a5c53e435b3f0cfd5abf58389416be429c
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 Huberpackage android.os;
18dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber
19e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Morelandimport android.annotation.SystemApi;
20e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland
21dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber/** @hide */
22e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland@SystemApi
23dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huberpublic interface IHwBinder {
2490349b3e11ec6f148211a9e29cb80644bc35d382Andreas Huber    // These MUST match their corresponding libhwbinder/IBinder.h definition !!!
25e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /** @hide */
26dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber    public static final int FIRST_CALL_TRANSACTION = 1;
27e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /** @hide */
2890349b3e11ec6f148211a9e29cb80644bc35d382Andreas Huber    public static final int FLAG_ONEWAY = 1;
29dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber
30adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    /**
31adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * Process a hwbinder transaction.
32adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     *
33739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param code interface specific code for interface.
34739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param request parceled transaction
35739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param reply object to parcel reply into
36739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param flags transaction flags to be chosen by wire protocol
37739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
38adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @hide
39adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     */
40adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    @SystemApi
41dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber    public void transact(
4227538df549cb37c4400183cce859cece6f8d8cdaSteven Moreland            int code, HwParcel request, HwParcel reply, int flags)
4327538df549cb37c4400183cce859cece6f8d8cdaSteven Moreland        throws RemoteException;
44dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber
45adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    /**
46adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * Return as IHwInterface instance only if this implements descriptor.
47739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
48adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @param descriptor for example foo.bar@1.0::IBaz
49adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @hide
50adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     */
51adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    @SystemApi
52dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber    public IHwInterface queryLocalInterface(String descriptor);
53727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen
54727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    /**
55727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     * Interface for receiving a callback when the process hosting a service
56727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     * has gone away.
57727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     */
58e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
59727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public interface DeathRecipient {
60e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland        /**
61e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland         * Callback for a registered process dying.
62739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland         *
63739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland         * @param cookie cookie this death recipient was registered with.
64e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland         */
65e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland        @SystemApi
66727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen        public void serviceDied(long cookie);
67727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    }
68727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen
69e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /**
70e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * Notifies the death recipient with the cookie when the process containing
71e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * this binder dies.
72739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
73739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param recipient callback object to be called on object death.
74739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param cookie value to be given to callback on object death.
75e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     */
76e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
77727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public boolean linkToDeath(DeathRecipient recipient, long cookie);
78e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /**
79e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * Unregisters the death recipient from this binder.
80739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
81739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param recipient callback to no longer recieve death notifications on this binder.
82e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     */
83e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
84727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public boolean unlinkToDeath(DeathRecipient recipient);
85dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber}
86