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 {
24adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    /**
25adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * Process a hwbinder transaction.
26adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     *
27739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param code interface specific code for interface.
28739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param request parceled transaction
29739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param reply object to parcel reply into
30739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param flags transaction flags to be chosen by wire protocol
31739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
32adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @hide
33adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     */
34adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    @SystemApi
35dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber    public void transact(
3627538df549cb37c4400183cce859cece6f8d8cdaSteven Moreland            int code, HwParcel request, HwParcel reply, int flags)
3727538df549cb37c4400183cce859cece6f8d8cdaSteven Moreland        throws RemoteException;
38dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber
39adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    /**
40adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * Return as IHwInterface instance only if this implements descriptor.
41739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
42adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @param descriptor for example foo.bar@1.0::IBaz
43adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     * @hide
44adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland     */
45adcb896fd6e476f277d6f1d20e2e50b8e81c4369Steven Moreland    @SystemApi
46dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber    public IHwInterface queryLocalInterface(String descriptor);
47727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen
48727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    /**
49727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     * Interface for receiving a callback when the process hosting a service
50727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     * has gone away.
51727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen     */
52e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
53727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public interface DeathRecipient {
54e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland        /**
55e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland         * Callback for a registered process dying.
56739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland         *
57739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland         * @param cookie cookie this death recipient was registered with.
58e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland         */
59e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland        @SystemApi
60727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen        public void serviceDied(long cookie);
61727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    }
62727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen
63e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /**
64e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * Notifies the death recipient with the cookie when the process containing
65e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * this binder dies.
66739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
67739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param recipient callback object to be called on object death.
68739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param cookie value to be given to callback on object death.
69e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     */
70e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
71727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public boolean linkToDeath(DeathRecipient recipient, long cookie);
72e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    /**
73e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     * Unregisters the death recipient from this binder.
74739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     *
75739811a5c53e435b3f0cfd5abf58389416be429cSteven Moreland     * @param recipient callback to no longer recieve death notifications on this binder.
76e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland     */
77e8e63aae6f705cbe316a1d9a7780f9f534bc3948Steven Moreland    @SystemApi
78727f7bf84f28765608548a6afe8f54c43a4ccf64Martijn Coenen    public boolean unlinkToDeath(DeathRecipient recipient);
79dab5fc65b92b37ee623b10f86a6ccf1709ba17d4Andreas Huber}
80