• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 com.android.server.nearby.fastpair.halfsheet;
18 
19 import static com.android.server.nearby.fastpair.Constant.TAG;
20 
21 import android.nearby.FastPairDevice;
22 import android.nearby.FastPairStatusCallback;
23 import android.nearby.PairStatusMetadata;
24 import android.nearby.aidl.IFastPairStatusCallback;
25 import android.nearby.aidl.IFastPairUiService;
26 import android.os.IBinder;
27 import android.os.RemoteException;
28 import android.util.Log;
29 
30 import com.android.internal.annotations.VisibleForTesting;
31 import com.android.server.nearby.fastpair.FastPairController;
32 
33 /**
34  * Service implementing Fast Pair functionality.
35  *
36  * @hide
37  */
38 public class FastPairUiServiceImpl extends IFastPairUiService.Stub {
39 
40     private IBinder mStatusCallbackProxy;
41     private FastPairController mFastPairController;
42     private FastPairStatusCallback mFastPairStatusCallback;
43 
44     /**
45      * Registers the Binder call back in the server notifies the proxy when there is an update
46      * in the server.
47      */
48     @Override
registerCallback(IFastPairStatusCallback iFastPairStatusCallback)49     public void registerCallback(IFastPairStatusCallback iFastPairStatusCallback) {
50         mStatusCallbackProxy = iFastPairStatusCallback.asBinder();
51         mFastPairStatusCallback = new FastPairStatusCallback() {
52             @Override
53             public void onPairUpdate(FastPairDevice fastPairDevice,
54                     PairStatusMetadata pairStatusMetadata) {
55                 try {
56                     iFastPairStatusCallback.onPairUpdate(fastPairDevice, pairStatusMetadata);
57                 } catch (RemoteException e) {
58                     Log.w(TAG, "Failed to update pair status.", e);
59                 }
60             }
61         };
62     }
63 
64     /**
65      * Unregisters the Binder call back in the server.
66      */
67     @Override
unregisterCallback(IFastPairStatusCallback iFastPairStatusCallback)68     public void unregisterCallback(IFastPairStatusCallback iFastPairStatusCallback) {
69         mStatusCallbackProxy = null;
70         mFastPairStatusCallback = null;
71     }
72 
73     /**
74      * Asks the Fast Pair service to pair the device. initial pairing.
75      */
76     @Override
connect(FastPairDevice fastPairDevice)77     public void connect(FastPairDevice fastPairDevice) {
78         if (mFastPairController != null) {
79             mFastPairController.pair(fastPairDevice);
80         } else {
81             Log.w(TAG, "Failed to connect because there is no FastPairController.");
82         }
83     }
84 
85     /**
86      * Cancels Fast Pair connection and dismisses half sheet.
87      */
88     @Override
cancel(FastPairDevice fastPairDevice)89     public void cancel(FastPairDevice fastPairDevice) {
90     }
91 
getPairStatusCallback()92     public FastPairStatusCallback getPairStatusCallback() {
93         return mFastPairStatusCallback;
94     }
95 
96     /**
97      * Sets fastPairStatusCallback.
98      */
99     @VisibleForTesting
setFastPairStatusCallback(FastPairStatusCallback fastPairStatusCallback)100     public void setFastPairStatusCallback(FastPairStatusCallback fastPairStatusCallback) {
101         mFastPairStatusCallback = fastPairStatusCallback;
102     }
103 
104     /**
105      * Sets function for Fast Pair controller.
106      */
setFastPairController(FastPairController fastPairController)107     public void setFastPairController(FastPairController fastPairController) {
108         mFastPairController = fastPairController;
109     }
110 }
111