1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.companion;
18 
19 import android.app.PendingIntent;
20 import android.companion.IAssociationRequestCallback;
21 import android.companion.IOnAssociationsChangedListener;
22 import android.companion.IOnMessageReceivedListener;
23 import android.companion.IOnTransportsChangedListener;
24 import android.companion.ISystemDataTransferCallback;
25 import android.companion.AssociationInfo;
26 import android.companion.AssociationRequest;
27 import android.companion.datatransfer.PermissionSyncRequest;
28 import android.content.ComponentName;
29 
30 /**
31  * Interface for communication with the core companion device manager service.
32  *
33  * @hide
34  */
35 interface ICompanionDeviceManager {
associate(in AssociationRequest request, in IAssociationRequestCallback callback, in String callingPackage, int userId)36     void associate(in AssociationRequest request, in IAssociationRequestCallback callback,
37         in String callingPackage, int userId);
38 
getAssociations(String callingPackage, int userId)39     List<AssociationInfo> getAssociations(String callingPackage, int userId);
getAllAssociationsForUser(int userId)40     List<AssociationInfo> getAllAssociationsForUser(int userId);
41 
42     /** @deprecated */
legacyDisassociate(String deviceMacAddress, String callingPackage, int userId)43     void legacyDisassociate(String deviceMacAddress, String callingPackage, int userId);
44 
disassociate(int associationId)45     void disassociate(int associationId);
46 
47     /** @deprecated */
hasNotificationAccess(in ComponentName component)48     boolean hasNotificationAccess(in ComponentName component);
49 
requestNotificationAccess(in ComponentName component, int userId)50     PendingIntent requestNotificationAccess(in ComponentName component, int userId);
51 
52     /** @deprecated */
isDeviceAssociatedForWifiConnection(in String packageName, in String macAddress, int userId)53     boolean isDeviceAssociatedForWifiConnection(in String packageName, in String macAddress,
54         int userId);
55 
registerDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId)56     void registerDevicePresenceListenerService(in String deviceAddress, in String callingPackage,
57         int userId);
58 
unregisterDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId)59     void unregisterDevicePresenceListenerService(in String deviceAddress, in String callingPackage,
60         int userId);
61 
62     /** @deprecated */
canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId)63     boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId);
64 
65     /** @deprecated */
createAssociation(in String packageName, in String macAddress, int userId, in byte[] certificate)66     void createAssociation(in String packageName, in String macAddress, int userId,
67         in byte[] certificate);
68 
addOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId)69     void addOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
70 
removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId)71     void removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
72 
addOnTransportsChangedListener(IOnTransportsChangedListener listener)73     void addOnTransportsChangedListener(IOnTransportsChangedListener listener);
74 
removeOnTransportsChangedListener(IOnTransportsChangedListener listener)75     void removeOnTransportsChangedListener(IOnTransportsChangedListener listener);
76 
sendMessage(int messageType, in byte[] data, in int[] associationIds)77     void sendMessage(int messageType, in byte[] data, in int[] associationIds);
78 
addOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener)79     void addOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener);
80 
removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener)81     void removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener);
82 
notifyDeviceAppeared(int associationId)83     void notifyDeviceAppeared(int associationId);
84 
notifyDeviceDisappeared(int associationId)85     void notifyDeviceDisappeared(int associationId);
86 
buildPermissionTransferUserConsentIntent(String callingPackage, int userId, int associationId)87     PendingIntent buildPermissionTransferUserConsentIntent(String callingPackage, int userId,
88         int associationId);
89 
startSystemDataTransfer(String packageName, int userId, int associationId, in ISystemDataTransferCallback callback)90     void startSystemDataTransfer(String packageName, int userId, int associationId,
91         in ISystemDataTransferCallback callback);
92 
attachSystemDataTransport(String packageName, int userId, int associationId, in ParcelFileDescriptor fd)93     void attachSystemDataTransport(String packageName, int userId, int associationId, in ParcelFileDescriptor fd);
94 
detachSystemDataTransport(String packageName, int userId, int associationId)95     void detachSystemDataTransport(String packageName, int userId, int associationId);
96 
isCompanionApplicationBound(String packageName, int userId)97     boolean isCompanionApplicationBound(String packageName, int userId);
98 
buildAssociationCancellationIntent(in String callingPackage, int userId)99     PendingIntent buildAssociationCancellationIntent(in String callingPackage, int userId);
100 
enableSystemDataSync(int associationId, int flags)101     void enableSystemDataSync(int associationId, int flags);
102 
disableSystemDataSync(int associationId, int flags)103     void disableSystemDataSync(int associationId, int flags);
104 
enablePermissionsSync(int associationId)105     void enablePermissionsSync(int associationId);
106 
disablePermissionsSync(int associationId)107     void disablePermissionsSync(int associationId);
108 
getPermissionSyncRequest(int associationId)109     PermissionSyncRequest getPermissionSyncRequest(int associationId);
110 
enableSecureTransport(boolean enabled)111     void enableSecureTransport(boolean enabled);
112 }
113