[DO NOT MERGE] Add FastPairService in server
Test: Built band verified flow manually
Bug: 196262706
Change-Id: I391a4c8e7cd083f346c8c63a60d3e0edf2b9b06a
(cherry picked from commit 68f559c25b78dce90f4aee5e581b0c3dcc86ae02)
diff --git a/nearby/framework/java/android/nearby/FastPairClient.java b/nearby/framework/java/android/nearby/FastPairClient.java
index 7ac0481..dc70d71 100644
--- a/nearby/framework/java/android/nearby/FastPairClient.java
+++ b/nearby/framework/java/android/nearby/FastPairClient.java
@@ -40,6 +40,11 @@
IFastPairClient mFastPairClient;
PairStatusCallbackIBinder mPairStatusCallbackIBinder;
+ /**
+ * The Ibinder instance should be from
+ * {@link com.android.server.nearby.fastpair.halfsheet.FastPairService} so that the client can
+ * talk with the service.
+ */
public FastPairClient(Context context, IBinder binder) {
mBinder = binder;
mFastPairClient = IFastPairClient.Stub.asInterface(mBinder);
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/halfsheet/FastPairService.java b/nearby/service/java/com/android/server/nearby/fastpair/halfsheet/FastPairService.java
new file mode 100644
index 0000000..53c2c12
--- /dev/null
+++ b/nearby/service/java/com/android/server/nearby/fastpair/halfsheet/FastPairService.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.nearby.fastpair.halfsheet;
+
+import static com.android.server.nearby.fastpair.Constant.TAG;
+
+import android.nearby.FastPairDevice;
+import android.nearby.FastPairStatusCallback;
+import android.nearby.PairStatusMetadata;
+import android.nearby.aidl.IFastPairClient;
+import android.nearby.aidl.IFastPairStatusCallback;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
+
+import com.android.server.nearby.fastpair.FastPairController;
+
+/**
+ * Service implementing Fast Pair functionality.
+ *
+ * @hide
+ */
+public class FastPairService extends IFastPairClient.Stub {
+
+ private IBinder mStatusCallbackProxy;
+ private FastPairController mFastPairController;
+ private FastPairStatusCallback mFastPairStatusCallback;
+
+ /**
+ * Registers the Binder call back in the server notifies the proxy when there is an update
+ * in the server.
+ */
+ @Override
+ public void registerHalfSheet(IFastPairStatusCallback iFastPairStatusCallback) {
+ mStatusCallbackProxy = iFastPairStatusCallback.asBinder();
+ mFastPairStatusCallback = new FastPairStatusCallback() {
+ @Override
+ public void onPairUpdate(FastPairDevice fastPairDevice,
+ PairStatusMetadata pairStatusMetadata) {
+ try {
+ iFastPairStatusCallback.onPairUpdate(fastPairDevice, pairStatusMetadata);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to update pair status.", e);
+ }
+ }
+ };
+ }
+
+ /**
+ * Unregisters the Binder call back in the server.
+ */
+ @Override
+ public void unregisterHalfSheet(IFastPairStatusCallback iFastPairStatusCallback) {
+ mStatusCallbackProxy = null;
+ mFastPairStatusCallback = null;
+ }
+
+ /**
+ * Asks the Fast Pair service to pair the device.
+ */
+ @Override
+ public void connect(FastPairDevice fastPairDevice) {}
+
+ public FastPairStatusCallback getPairStatusCallback() {
+ return mFastPairStatusCallback;
+ }
+
+ /**
+ * Sets function for Fast Pair controller.
+ */
+ public void setFastPairController(FastPairController fastPairController) {
+ mFastPairController = fastPairController;
+ }
+}