From d2e9dff01afc5dbf89d1661d3091aeab0ea452b9 Mon Sep 17 00:00:00 2001 From: Ted Wang Date: Tue, 7 Nov 2023 09:13:33 +0000 Subject: [PATCH 1/3] Bluetooth Finder: Interface for Bluetooth Finder and Freeze the AIDL API This allows NearbyService, which depends on this API, to be merged from git_main to udc-mainline-prod. Only the API is merged, without VTS and default implementation since this is a V+ feature. Bug: 307897939 Test: m android.hardware.bluetooth.finder-update-api Merged-In: I111b9e20831c094dcb42432e9d83f9fd326ff953 Change-Id: I111b9e20831c094dcb42432e9d83f9fd326ff953 (cherry picked from commit 36556927b19dc01389fd9f91340f816be4dc09ef) --- bluetooth/finder/aidl/Android.bp | 42 +++++++++++++++++ .../android.hardware.bluetooth.finder/1/.hash | 1 + .../hardware/bluetooth/finder/Eid.aidl | 38 +++++++++++++++ .../bluetooth/finder/IBluetoothFinder.aidl | 40 ++++++++++++++++ .../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 ++++ 9 files changed, 278 insertions(+) create mode 100644 bluetooth/finder/aidl/Android.bp create mode 100644 bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/.hash create mode 100644 bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/android/hardware/bluetooth/finder/Eid.aidl create mode 100644 bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/android/hardware/bluetooth/finder/IBluetoothFinder.aidl 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..76cc3adcca --- /dev/null +++ b/bluetooth/finder/aidl/Android.bp @@ -0,0 +1,42 @@ +// 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, + }, + }, + versions_with_info: [ + { + version: "1", + imports: [], + }, + ], + frozen: true, + +} diff --git a/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/.hash b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/.hash new file mode 100644 index 0000000000..0c1f694c8b --- /dev/null +++ b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/.hash @@ -0,0 +1 @@ +078986eb5ef2dd183974ee4c9a79dc9b71bea088 diff --git a/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/android/hardware/bluetooth/finder/Eid.aidl b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/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/1/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/1/android/hardware/bluetooth/finder/IBluetoothFinder.aidl b/bluetooth/finder/aidl/aidl_api/android.hardware.bluetooth.finder/1/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/1/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/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 2f18a380d3..0a17b9462c 100644 --- a/compatibility_matrices/compatibility_matrix.9.xml +++ b/compatibility_matrices/compatibility_matrix.9.xml @@ -155,6 +155,14 @@ default + + android.hardware.bluetooth.finder + 1 + + IBluetoothFinder + default + + android.hardware.boot From 333f641f86739662e0b83c4c5ac5e92526e1a2b3 Mon Sep 17 00:00:00 2001 From: Yahav Nussbaum Date: Thu, 4 Jan 2024 22:30:03 +0000 Subject: [PATCH 2/3] Make android.hardware.bluetooth.finder apex_avilable for com.android.tethering Bug: 307897939 Test: m android.hardware.bluetooth.finder-update-api (cherry picked from https://android-review.googlesource.com/q/commit:2f1b39cce9a24a969edba744384a2cd4c310f71c) Merged-In: I7c40cdfc36180d0ab25d9862b29bb4015d03adb0 Change-Id: I7c40cdfc36180d0ab25d9862b29bb4015d03adb0 --- bluetooth/finder/aidl/Android.bp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bluetooth/finder/aidl/Android.bp b/bluetooth/finder/aidl/Android.bp index 76cc3adcca..cc05cd8ee1 100644 --- a/bluetooth/finder/aidl/Android.bp +++ b/bluetooth/finder/aidl/Android.bp @@ -28,7 +28,11 @@ aidl_interface { }, java: { enabled: true, - platform_apis: true, + sdk_version: "module_current", + min_sdk_version: "30", + apex_available: [ + "com.android.tethering", + ], }, }, versions_with_info: [ From a47e995b3b3f09e5d514a214bfbd2c6008bebe96 Mon Sep 17 00:00:00 2001 From: Yahav Nussbaum Date: Sat, 6 Jan 2024 16:53:01 +0000 Subject: [PATCH 3/3] Clarify that an EID is a Find My Device network EID Bug: 318931934 Test: m android.hardware.bluetooth.finder-update-api (cherry picked from https://android-review.googlesource.com/q/commit:31f1ad2409a33bc11fcc2e2a2e8b7f9e73d7af24) Merged-In: Ie888bc81bd8b91040aa308b9b0d2be4a6137e483 Change-Id: Ie888bc81bd8b91040aa308b9b0d2be4a6137e483 --- .../finder/aidl/android/hardware/bluetooth/finder/Eid.aidl | 2 +- .../android/hardware/bluetooth/finder/IBluetoothFinder.aidl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl index ae9b1590ee..0de306f819 100644 --- a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl +++ b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/Eid.aidl @@ -17,7 +17,7 @@ package android.hardware.bluetooth.finder; /** - * Ephemeral Identifier + * Find My Device network ephemeral identifier */ @VintfStability parcelable Eid { diff --git a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl index 615739b1cf..a374c2ad09 100644 --- a/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl +++ b/bluetooth/finder/aidl/android/hardware/bluetooth/finder/IBluetoothFinder.aidl @@ -21,7 +21,7 @@ import android.hardware.bluetooth.finder.Eid; @VintfStability interface IBluetoothFinder { /** - * API to set the EIDs to the Bluetooth Controller + * API to set Find My Device network EIDs to the Bluetooth Controller * * @param eids array of 20 bytes EID to the Bluetooth * controller