From 36556927b19dc01389fd9f91340f816be4dc09ef Mon Sep 17 00:00:00 2001 From: Ted Wang Date: Tue, 7 Nov 2023 09:13:33 +0000 Subject: [PATCH] Bluetooth Finder: Interface for Bluetooth Finder Bug: 307897939 Test: m android.hardware.bluetooth.finder-update-api Change-Id: I111b9e20831c094dcb42432e9d83f9fd326ff953 --- bluetooth/finder/aidl/Android.bp | 34 ++++++++++++++ .../hardware/bluetooth/finder/Eid.aidl | 38 +++++++++++++++ .../bluetooth/finder/IBluetoothFinder.aidl | 40 ++++++++++++++++ .../hardware/bluetooth/finder/Eid.aidl | 25 ++++++++++ .../bluetooth/finder/IBluetoothFinder.aidl | 46 +++++++++++++++++++ .../compatibility_matrix.9.xml | 8 ++++ 6 files changed, 191 insertions(+) create mode 100644 bluetooth/finder/aidl/Android.bp create mode 100644 bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/Eid.aidl create mode 100644 bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/IBluetoothFinder.aidl create mode 100644 bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl create mode 100644 bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl diff --git a/bluetooth/finder/aidl/Android.bp b/bluetooth/finder/aidl/Android.bp new file mode 100644 index 0000000000..e606d2d996 --- /dev/null +++ b/bluetooth/finder/aidl/Android.bp @@ -0,0 +1,34 @@ +// Copyright (C) 2023 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +aidl_interface { + name: "android.hardware.bluetooth.finder", + vendor_available: true, + srcs: ["android/hardware/bluetooth/finder/*.aidl"], + stability: "vintf", + + backend: { + ndk: { + enabled: true, + }, + java: { + enabled: true, + platform_apis: true, + }, + }, +} diff --git a/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/Eid.aidl b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/Eid.aidl new file mode 100644 index 0000000000..42461c5904 --- /dev/null +++ b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/Eid.aidl @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2023 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.bluetooth.finder; +@VintfStability +parcelable Eid { + byte[20] bytes; +} diff --git a/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/IBluetoothFinder.aidl b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/IBluetoothFinder.aidl new file mode 100644 index 0000000000..4bc9041499 --- /dev/null +++ b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/current/android/hardware/bluetooth/finder/IBluetoothFinder.aidl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.bluetooth.finder; +@VintfStability +interface IBluetoothFinder { + void sendEids(in android.hardware.bluetooth.finder.Eid[] eids); + void setPoweredOffFinderMode(in boolean enable); + boolean getPoweredOffFinderMode(); +} diff --git a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl new file mode 100644 index 0000000000..ae9b1590ee --- /dev/null +++ b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2023 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 android.hardware.bluetooth.finder; + +/** + * Ephemeral Identifier + */ +@VintfStability +parcelable Eid { + byte[20] bytes; +} diff --git a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl new file mode 100644 index 0000000000..615739b1cf --- /dev/null +++ b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2023 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 android.hardware.bluetooth.finder; + +import android.hardware.bluetooth.finder.Eid; + +@VintfStability +interface IBluetoothFinder { + /** + * API to set the EIDs to the Bluetooth Controller + * + * @param eids array of 20 bytes EID to the Bluetooth + * controller + */ + void sendEids(in Eid[] eids); + + /** + * API to enable the powered-off finder feature, which allows the Bluetooth controller to send + * beacons after the device is powered off. + * + * @param enable true to enable; false to disable + */ + void setPoweredOffFinderMode(in boolean enable); + + /** + * API for retrieving feature enablement status + * + * @return the value last set by setPoweredOffFinderMode, false if setPoweredOffFinderMode was + * never been invoked since boot. + */ + boolean getPoweredOffFinderMode(); +} diff --git a/compatibility_matrices/compatibility_matrix.9.xml b/compatibility_matrices/compatibility_matrix.9.xml index 83d2665cf5..d79e492981 100644 --- a/compatibility_matrices/compatibility_matrix.9.xml +++ b/compatibility_matrices/compatibility_matrix.9.xml @@ -146,6 +146,14 @@ default + + android.hardware.bluetooth.finder + 1 + + IBluetoothFinder + default + + android.hardware.boot